mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
[improvement][project]Use DatePeriodEnum to replace DAY/MONTH/YEAR period constants.
This commit is contained in:
@@ -8,6 +8,7 @@ import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.DateConf.DateMode;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.RatioOverType;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
@@ -43,15 +44,12 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static com.tencent.supersonic.common.pojo.Constants.DAY;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.DAY_FORMAT_INT;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.MONTH;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.MONTH_FORMAT;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.MONTH_FORMAT_INT;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.TIMES_FORMAT;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.TIME_FORMAT;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.WEEK;
|
||||
|
||||
/** Add ratio queries for metric queries. */
|
||||
@Slf4j
|
||||
@@ -193,11 +191,11 @@ public class MetricRatioProcessor implements ExecuteResultProcessor {
|
||||
}
|
||||
String statisticsRollName = RatioOverType.DAY_ON_DAY.getShowName();
|
||||
String statisticsOverName = RatioOverType.WEEK_ON_DAY.getShowName();
|
||||
if (MONTH.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
if (DatePeriodEnum.MONTH.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
statisticsRollName = RatioOverType.MONTH_ON_MONTH.getShowName();
|
||||
statisticsOverName = RatioOverType.YEAR_ON_MONTH.getShowName();
|
||||
}
|
||||
if (WEEK.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
if (DatePeriodEnum.WEEK.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
statisticsRollName = RatioOverType.WEEK_ON_WEEK.getShowName();
|
||||
statisticsOverName = RatioOverType.MONTH_ON_WEEK.getShowName();
|
||||
}
|
||||
@@ -234,7 +232,7 @@ public class MetricRatioProcessor implements ExecuteResultProcessor {
|
||||
List<String> dayList = new ArrayList<>();
|
||||
dayList.add(lastDay);
|
||||
String start = "";
|
||||
if (DAY.equalsIgnoreCase(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
if (DatePeriodEnum.DAY.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
DateTimeFormatter formatter =
|
||||
DateUtils.getDateFormatter(lastDay, new String[] {DAY_FORMAT, DAY_FORMAT_INT});
|
||||
LocalDate end = LocalDate.parse(lastDay, formatter);
|
||||
@@ -243,7 +241,7 @@ public class MetricRatioProcessor implements ExecuteResultProcessor {
|
||||
? end.minusDays(1).format(formatter)
|
||||
: end.minusWeeks(1).format(formatter);
|
||||
}
|
||||
if (WEEK.equalsIgnoreCase(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
if (DatePeriodEnum.WEEK.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
DateTimeFormatter formatter =
|
||||
DateUtils.getTimeFormatter(
|
||||
lastDay,
|
||||
@@ -254,7 +252,7 @@ public class MetricRatioProcessor implements ExecuteResultProcessor {
|
||||
? end.minusWeeks(1).format(formatter)
|
||||
: end.minusMonths(1).with(DayOfWeek.MONDAY).format(formatter);
|
||||
}
|
||||
if (MONTH.equalsIgnoreCase(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
if (DatePeriodEnum.MONTH.equals(semanticParseInfo.getDateInfo().getPeriod())) {
|
||||
DateTimeFormatter formatter =
|
||||
DateUtils.getDateFormatter(
|
||||
lastDay, new String[] {MONTH_FORMAT, MONTH_FORMAT_INT});
|
||||
|
||||
@@ -48,15 +48,6 @@ import com.tencent.supersonic.headless.chat.query.SemanticQuery;
|
||||
import com.tencent.supersonic.headless.chat.query.llm.s2sql.LLMSqlQuery;
|
||||
import com.tencent.supersonic.headless.server.facade.service.ChatLayerService;
|
||||
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.jsqlparser.expression.Expression;
|
||||
import net.sf.jsqlparser.expression.LongValue;
|
||||
@@ -73,6 +64,16 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ChatQueryServiceImpl implements ChatQueryService {
|
||||
@@ -222,7 +223,10 @@ public class ChatQueryServiceImpl implements ChatQueryService {
|
||||
}
|
||||
|
||||
private void handleLLMQueryMode(
|
||||
ChatQueryDataReq chatQueryDataReq, SemanticQuery semanticQuery, DataSetSchema dataSetSchema, User user)
|
||||
ChatQueryDataReq chatQueryDataReq,
|
||||
SemanticQuery semanticQuery,
|
||||
DataSetSchema dataSetSchema,
|
||||
User user)
|
||||
throws Exception {
|
||||
SemanticParseInfo parseInfo = semanticQuery.getParseInfo();
|
||||
List<String> fields = getFieldsFromSql(parseInfo);
|
||||
@@ -271,7 +275,8 @@ public class ChatQueryServiceImpl implements ChatQueryService {
|
||||
return !oriFields.containsAll(metricNames);
|
||||
}
|
||||
|
||||
private String reviseCorrectS2SQL(ChatQueryDataReq queryData, SemanticParseInfo parseInfo, DataSetSchema dataSetSchema) {
|
||||
private String reviseCorrectS2SQL(
|
||||
ChatQueryDataReq queryData, SemanticParseInfo parseInfo, DataSetSchema dataSetSchema) {
|
||||
String correctorSql = parseInfo.getSqlInfo().getCorrectedS2SQL();
|
||||
log.info("correctorSql before replacing:{}", correctorSql);
|
||||
// get where filter and having filter
|
||||
@@ -372,7 +377,7 @@ public class ChatQueryServiceImpl implements ChatQueryService {
|
||||
queryData
|
||||
.getDateInfo()
|
||||
.setStartDate(DateUtils.getBeforeDate(queryData.getDateInfo().getUnit() + 1));
|
||||
queryData.getDateInfo().setEndDate(DateUtils.getBeforeDate(1));
|
||||
queryData.getDateInfo().setEndDate(DateUtils.getBeforeDate(0));
|
||||
}
|
||||
SchemaElement partitionDimension = dataSetSchema.getPartitionDimension();
|
||||
// startDate equals to endDate
|
||||
@@ -382,10 +387,16 @@ public class ChatQueryServiceImpl implements ChatQueryService {
|
||||
removeFieldNames.add(partitionDimension.getName());
|
||||
GreaterThanEquals greaterThanEquals = new GreaterThanEquals();
|
||||
addTimeFilters(
|
||||
queryData.getDateInfo().getStartDate(), greaterThanEquals, addConditions, partitionDimension);
|
||||
queryData.getDateInfo().getStartDate(),
|
||||
greaterThanEquals,
|
||||
addConditions,
|
||||
partitionDimension);
|
||||
MinorThanEquals minorThanEquals = new MinorThanEquals();
|
||||
addTimeFilters(
|
||||
queryData.getDateInfo().getEndDate(), minorThanEquals, addConditions, partitionDimension);
|
||||
queryData.getDateInfo().getEndDate(),
|
||||
minorThanEquals,
|
||||
addConditions,
|
||||
partitionDimension);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -415,7 +426,10 @@ public class ChatQueryServiceImpl implements ChatQueryService {
|
||||
}
|
||||
|
||||
private <T extends ComparisonOperator> void addTimeFilters(
|
||||
String date, T comparisonExpression, List<Expression> addConditions, SchemaElement partitionDimension) {
|
||||
String date,
|
||||
T comparisonExpression,
|
||||
List<Expression> addConditions,
|
||||
SchemaElement partitionDimension) {
|
||||
Column column = new Column(partitionDimension.getName());
|
||||
StringValue stringValue = new StringValue(date);
|
||||
comparisonExpression.setLeftExpression(column);
|
||||
|
||||
Reference in New Issue
Block a user