mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-28 12:59:03 +08:00
[improvement][project]Use DatePeriodEnum to replace DAY/MONTH/YEAR period constants.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.api.pojo;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeMode;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -8,7 +8,7 @@ import lombok.Data;
|
||||
public class MetricTypeDefaultConfig {
|
||||
|
||||
private TimeDefaultConfig timeDefaultConfig =
|
||||
new TimeDefaultConfig(7, Constants.DAY, TimeMode.RECENT);
|
||||
new TimeDefaultConfig(7, DatePeriodEnum.DAY, TimeMode.RECENT);
|
||||
|
||||
private Long limit;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.api.pojo;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeMode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -14,8 +14,7 @@ public class TimeDefaultConfig {
|
||||
/** default time span unit */
|
||||
private Integer unit = 1;
|
||||
|
||||
/** default time type: day DAY, WEEK, MONTH, YEAR */
|
||||
private String period = Constants.DAY;
|
||||
private DatePeriodEnum period = DatePeriodEnum.DAY;
|
||||
|
||||
private TimeMode timeMode = TimeMode.LAST;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public class S2SqlDateHelper {
|
||||
}
|
||||
|
||||
TimeMode timeMode = timeConfig.getTimeMode();
|
||||
DatePeriodEnum datePeriod = DatePeriodEnum.get(timeConfig.getPeriod());
|
||||
DatePeriodEnum datePeriod = timeConfig.getPeriod();
|
||||
String startDate;
|
||||
String endDate;
|
||||
switch (timeMode) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.chat.parser.rule;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||
import com.tencent.supersonic.headless.chat.ChatQueryContext;
|
||||
import com.tencent.supersonic.headless.chat.parser.SemanticParser;
|
||||
@@ -132,11 +132,11 @@ public class TimeRangeParser implements SemanticParser {
|
||||
String detectWord = matcher.group("periodStr");
|
||||
|
||||
DateConf info = new DateConf();
|
||||
info.setPeriod(getPeriodConstant(zhPeriod));
|
||||
info.setDateMode(DateConf.DateMode.RECENT);
|
||||
info.setPeriod(DatePeriodEnum.fromChName(zhPeriod));
|
||||
info.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
info.setDetectWord(detectWord);
|
||||
info.setStartDate(LocalDate.now().minusDays(days).toString());
|
||||
info.setEndDate(LocalDate.now().minusDays(1).toString());
|
||||
info.setEndDate(LocalDate.now().toString());
|
||||
info.setUnit(num);
|
||||
|
||||
return info;
|
||||
@@ -166,19 +166,6 @@ public class TimeRangeParser implements SemanticParser {
|
||||
}
|
||||
}
|
||||
|
||||
private String getPeriodConstant(String zhPeriod) {
|
||||
switch (zhPeriod) {
|
||||
case "周":
|
||||
return Constants.WEEK;
|
||||
case "月":
|
||||
return Constants.MONTH;
|
||||
case "年":
|
||||
return Constants.YEAR;
|
||||
default:
|
||||
return Constants.DAY;
|
||||
}
|
||||
}
|
||||
|
||||
private int zhNumParse(String zhNumStr) {
|
||||
Stack<Integer> stack = new Stack<>();
|
||||
String numStr = "一二三四五六七八九";
|
||||
|
||||
@@ -49,13 +49,11 @@ public abstract class DetailSemanticQuery extends RuleSemanticQuery {
|
||||
&& timeDefaultConfig.getUnit() != -1) {
|
||||
DateConf dateInfo = new DateConf();
|
||||
int unit = timeDefaultConfig.getUnit();
|
||||
String startDate = LocalDate.now().plusDays(-unit).toString();
|
||||
String startDate = LocalDate.now().minusDays(unit).toString();
|
||||
String endDate = startDate;
|
||||
if (TimeMode.LAST.equals(timeDefaultConfig.getTimeMode())) {
|
||||
dateInfo.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
} else if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) {
|
||||
dateInfo.setDateMode(DateConf.DateMode.RECENT);
|
||||
endDate = LocalDate.now().plusDays(-1).toString();
|
||||
dateInfo.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) {
|
||||
endDate = LocalDate.now().toString();
|
||||
}
|
||||
dateInfo.setUnit(unit);
|
||||
dateInfo.setPeriod(timeDefaultConfig.getPeriod());
|
||||
|
||||
@@ -56,13 +56,11 @@ public abstract class MetricSemanticQuery extends RuleSemanticQuery {
|
||||
&& Objects.nonNull(timeDefaultConfig.getUnit())
|
||||
&& timeDefaultConfig.getUnit() != -1) {
|
||||
int unit = timeDefaultConfig.getUnit();
|
||||
String startDate = LocalDate.now().plusDays(-unit).toString();
|
||||
String startDate = LocalDate.now().minusDays(unit).toString();
|
||||
String endDate = startDate;
|
||||
if (TimeMode.LAST.equals(timeDefaultConfig.getTimeMode())) {
|
||||
dateInfo.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
} else if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) {
|
||||
dateInfo.setDateMode(DateConf.DateMode.RECENT);
|
||||
endDate = LocalDate.now().plusDays(-1).toString();
|
||||
dateInfo.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
if (TimeMode.RECENT.equals(timeDefaultConfig.getTimeMode())) {
|
||||
endDate = LocalDate.now().toString();
|
||||
}
|
||||
dateInfo.setUnit(unit);
|
||||
dateInfo.setPeriod(timeDefaultConfig.getPeriod());
|
||||
|
||||
@@ -2,12 +2,12 @@ package com.tencent.supersonic.headless.chat.utils;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.Order;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||
@@ -23,7 +23,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
@@ -42,7 +41,7 @@ public class QueryReqBuilder {
|
||||
queryStructReq.setDataSetId(parseInfo.getDataSetId());
|
||||
queryStructReq.setDataSetName(parseInfo.getDataSet().getName());
|
||||
queryStructReq.setQueryType(parseInfo.getQueryType());
|
||||
queryStructReq.setDateInfo(rewrite2Between(parseInfo.getDateInfo()));
|
||||
queryStructReq.setDateInfo(parseInfo.getDateInfo());
|
||||
|
||||
List<Filter> dimensionFilters = getFilters(parseInfo.getDimensionFilters());
|
||||
queryStructReq.setDimensionFilters(dimensionFilters);
|
||||
@@ -108,40 +107,6 @@ public class QueryReqBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private static DateConf rewrite2Between(DateConf dateInfo) {
|
||||
if (Objects.isNull(dateInfo)) {
|
||||
return null;
|
||||
}
|
||||
DateConf dateInfoNew = new DateConf();
|
||||
BeanUtils.copyProperties(dateInfo, dateInfoNew);
|
||||
if (DateConf.DateMode.RECENT.equals(dateInfo.getDateMode())) {
|
||||
int unit = dateInfo.getUnit();
|
||||
int days = 1;
|
||||
switch (dateInfo.getPeriod()) {
|
||||
case Constants.DAY:
|
||||
days = 1;
|
||||
break;
|
||||
case Constants.WEEK:
|
||||
days = 7;
|
||||
break;
|
||||
case Constants.MONTH:
|
||||
days = 30;
|
||||
break;
|
||||
case Constants.YEAR:
|
||||
days = 365;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
String startDate = LocalDate.now().plusDays(-(unit * days)).toString();
|
||||
String endDate = LocalDate.now().plusDays(-1).toString();
|
||||
dateInfoNew.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
dateInfoNew.setStartDate(startDate);
|
||||
dateInfoNew.setEndDate(endDate);
|
||||
}
|
||||
return dateInfoNew;
|
||||
}
|
||||
|
||||
public static QueryMultiStructReq buildMultiStructReq(SemanticParseInfo parseInfo) {
|
||||
QueryStructReq queryStructReq = buildStructReq(parseInfo);
|
||||
QueryMultiStructReq queryMultiStructReq = new QueryMultiStructReq();
|
||||
@@ -282,10 +247,10 @@ public class QueryReqBuilder {
|
||||
return "";
|
||||
}
|
||||
String dateField = TimeDimensionEnum.DAY.getName();
|
||||
if (Constants.MONTH.equals(dateConf.getPeriod())) {
|
||||
if (DatePeriodEnum.MONTH.equals(dateConf.getPeriod())) {
|
||||
dateField = TimeDimensionEnum.MONTH.getName();
|
||||
}
|
||||
if (Constants.WEEK.equals(dateConf.getPeriod())) {
|
||||
if (DatePeriodEnum.WEEK.equals(dateConf.getPeriod())) {
|
||||
dateField = TimeDimensionEnum.WEEK.getName();
|
||||
}
|
||||
return dateField;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.chat.utils;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeMode;
|
||||
import com.tencent.supersonic.headless.api.pojo.TimeDefaultConfig;
|
||||
import com.tencent.supersonic.headless.chat.corrector.S2SqlDateHelper;
|
||||
@@ -13,14 +13,14 @@ class S2SqlDateHelperTest {
|
||||
void testCurrentTimeMode() {
|
||||
TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig();
|
||||
timeDefaultConfig.setTimeMode(TimeMode.CURRENT);
|
||||
timeDefaultConfig.setPeriod(Constants.MONTH);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.MONTH);
|
||||
|
||||
Pair<String, String> dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2024-09-01");
|
||||
assert dateRange.getRight().equals("2024-09-21");
|
||||
|
||||
timeDefaultConfig.setPeriod(Constants.YEAR);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.YEAR);
|
||||
dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2024-01-01");
|
||||
@@ -32,20 +32,20 @@ class S2SqlDateHelperTest {
|
||||
TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig();
|
||||
timeDefaultConfig.setTimeMode(TimeMode.RECENT);
|
||||
timeDefaultConfig.setUnit(3);
|
||||
timeDefaultConfig.setPeriod(Constants.DAY);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.DAY);
|
||||
|
||||
Pair<String, String> dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2024-09-18");
|
||||
assert dateRange.getRight().equals("2024-09-21");
|
||||
|
||||
timeDefaultConfig.setPeriod(Constants.MONTH);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.MONTH);
|
||||
dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2024-06-21");
|
||||
assert dateRange.getRight().equals("2024-09-21");
|
||||
|
||||
timeDefaultConfig.setPeriod(Constants.YEAR);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.YEAR);
|
||||
dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2021-09-21");
|
||||
@@ -57,20 +57,20 @@ class S2SqlDateHelperTest {
|
||||
TimeDefaultConfig timeDefaultConfig = new TimeDefaultConfig();
|
||||
timeDefaultConfig.setTimeMode(TimeMode.LAST);
|
||||
timeDefaultConfig.setUnit(3);
|
||||
timeDefaultConfig.setPeriod(Constants.DAY);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.DAY);
|
||||
|
||||
Pair<String, String> dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2024-09-18");
|
||||
assert dateRange.getRight().equals("2024-09-18");
|
||||
|
||||
timeDefaultConfig.setPeriod(Constants.MONTH);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.MONTH);
|
||||
dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2024-06-21");
|
||||
assert dateRange.getRight().equals("2024-06-21");
|
||||
|
||||
timeDefaultConfig.setPeriod(Constants.YEAR);
|
||||
timeDefaultConfig.setPeriod(DatePeriodEnum.YEAR);
|
||||
dateRange =
|
||||
S2SqlDateHelper.calculateDateRange("2024-09-21", timeDefaultConfig, "yyyy-MM-dd");
|
||||
assert dateRange.getLeft().equals("2021-09-21");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.core.config;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
@@ -16,5 +16,5 @@ public class DefaultMetricInfo {
|
||||
private Integer unit = 1;
|
||||
|
||||
/** default time type: day DAY, WEEK, MONTH, YEAR */
|
||||
private String period = Constants.DAY;
|
||||
private DatePeriodEnum period = DatePeriodEnum.DAY;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.core.translator.converter;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.DateModeUtils;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricTable;
|
||||
@@ -214,13 +214,13 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
public String getTimeSpan(QueryParam queryParam, boolean isOver, boolean isAdd) {
|
||||
if (Objects.nonNull(queryParam.getDateInfo())) {
|
||||
String addStr = isAdd ? "" : "-";
|
||||
if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.DAY)) {
|
||||
if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.DAY)) {
|
||||
return "day," + (isOver ? addStr + "7" : addStr + "1");
|
||||
}
|
||||
if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.WEEK)) {
|
||||
if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.MONTH)) {
|
||||
return isOver ? "month," + addStr + "1" : "day," + addStr + "7";
|
||||
}
|
||||
if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.MONTH)) {
|
||||
if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.MONTH.MONTH)) {
|
||||
return isOver ? "year," + addStr + "1" : "month," + addStr + "1";
|
||||
}
|
||||
}
|
||||
@@ -240,7 +240,7 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
if (queryParam
|
||||
.getDateInfo()
|
||||
.getPeriod()
|
||||
.equals(Constants.MONTH)) {
|
||||
.equals(DatePeriodEnum.MONTH)) {
|
||||
return String.format(
|
||||
"%s is not null and %s = FORMATDATETIME(DATEADD(%s,CONCAT(%s,'-01')),'yyyy-MM') ",
|
||||
aliasRight + timeDim,
|
||||
@@ -251,7 +251,7 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
if (queryParam
|
||||
.getDateInfo()
|
||||
.getPeriod()
|
||||
.equals(Constants.WEEK)
|
||||
.equals(DatePeriodEnum.WEEK)
|
||||
&& isOver) {
|
||||
return String.format(
|
||||
" DATE_TRUNC('week',DATEADD(%s,%s) ) = %s ",
|
||||
@@ -313,7 +313,7 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
if (queryParam
|
||||
.getDateInfo()
|
||||
.getPeriod()
|
||||
.equals(Constants.MONTH)) {
|
||||
.equals(DatePeriodEnum.MONTH)) {
|
||||
return String.format(
|
||||
"toDate(CONCAT(%s,'-01')) = date_add(toDate(CONCAT(%s,'-01')),%s) ",
|
||||
aliasLeft + timeDim,
|
||||
@@ -323,7 +323,7 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
if (queryParam
|
||||
.getDateInfo()
|
||||
.getPeriod()
|
||||
.equals(Constants.WEEK)
|
||||
.equals(DatePeriodEnum.WEEK)
|
||||
&& isOver) {
|
||||
return String.format(
|
||||
"toMonday(date_add(%s ,INTERVAL %s) ) = %s",
|
||||
@@ -386,13 +386,13 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
public String getTimeSpan(QueryParam queryParam, boolean isOver, boolean isAdd) {
|
||||
if (Objects.nonNull(queryParam.getDateInfo())) {
|
||||
String addStr = isAdd ? "" : "-";
|
||||
if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.DAY)) {
|
||||
if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.DAY)) {
|
||||
return isOver ? addStr + "7 day" : addStr + "1 day";
|
||||
}
|
||||
if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.WEEK)) {
|
||||
if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.WEEK)) {
|
||||
return isOver ? addStr + "1 month" : addStr + "7 day";
|
||||
}
|
||||
if (queryParam.getDateInfo().getPeriod().equalsIgnoreCase(Constants.MONTH)) {
|
||||
if (queryParam.getDateInfo().getPeriod().equals(DatePeriodEnum.MONTH)) {
|
||||
return isOver ? addStr + "1 year" : addStr + "1 month";
|
||||
}
|
||||
}
|
||||
@@ -438,7 +438,7 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
if (queryParam
|
||||
.getDateInfo()
|
||||
.getPeriod()
|
||||
.equals(Constants.MONTH)) {
|
||||
.equals(DatePeriodEnum.MONTH)) {
|
||||
return String.format(
|
||||
"%s = DATE_FORMAT(date_add(CONCAT(%s,'-01'), %s),'%%Y-%%m') ",
|
||||
aliasLeft + timeDim,
|
||||
@@ -448,7 +448,7 @@ public class CalculateAggConverter implements QueryConverter {
|
||||
if (queryParam
|
||||
.getDateInfo()
|
||||
.getPeriod()
|
||||
.equals(Constants.WEEK)
|
||||
.equals(DatePeriodEnum.WEEK)
|
||||
&& isOver) {
|
||||
return String.format(
|
||||
"to_monday(date_add(%s ,INTERVAL %s) ) = %s",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.core.utils;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -66,9 +66,9 @@ public class DataTransformUtils {
|
||||
}
|
||||
|
||||
private static String getTimeDimension(DateConf dateConf) {
|
||||
if (Constants.MONTH.equals(dateConf.getPeriod())) {
|
||||
if (DatePeriodEnum.MONTH.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.MONTH.getName();
|
||||
} else if (Constants.WEEK.equals(dateConf.getPeriod())) {
|
||||
} else if (DatePeriodEnum.WEEK.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.WEEK.getName();
|
||||
} else {
|
||||
return TimeDimensionEnum.DAY.getName();
|
||||
|
||||
@@ -39,12 +39,9 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
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.JOIN_UNDERLINE;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.MONTH;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.UNDERLINE;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.WEEK;
|
||||
|
||||
/** tools functions to analyze queryStructReq */
|
||||
@Component
|
||||
|
||||
@@ -574,7 +574,7 @@ public class S2SemanticLayerService implements SemanticLayerService {
|
||||
TimeDefaultConfig timeDefaultConfig = dataSetSchema.getTagTypeTimeDefaultConfig();
|
||||
if (Objects.nonNull(timeDefaultConfig)) {
|
||||
unit = timeDefaultConfig.getUnit();
|
||||
String date = LocalDate.now().plusDays(-unit).toString();
|
||||
String date = LocalDate.now().minusDays(unit).toString();
|
||||
dateInfo.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
dateInfo.setStartDate(date);
|
||||
dateInfo.setEndDate(date);
|
||||
|
||||
@@ -9,9 +9,9 @@ import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.DateUtils;
|
||||
import com.tencent.supersonic.headless.api.pojo.DrillDownDimension;
|
||||
@@ -298,9 +298,9 @@ public class DownloadServiceImpl implements DownloadService {
|
||||
}
|
||||
|
||||
private String getTimeDimension(DateConf dateConf) {
|
||||
if (Constants.MONTH.equals(dateConf.getPeriod())) {
|
||||
if (DatePeriodEnum.MONTH.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.MONTH.getName();
|
||||
} else if (Constants.WEEK.equals(dateConf.getPeriod())) {
|
||||
} else if (DatePeriodEnum.WEEK.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.WEEK.getName();
|
||||
} else {
|
||||
return TimeDimensionEnum.DAY.getName();
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.DateConf.DateMode;
|
||||
import com.tencent.supersonic.common.pojo.ItemDateResp;
|
||||
import com.tencent.supersonic.common.pojo.enums.DatePeriodEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.common.util.DateModeUtils;
|
||||
import com.tencent.supersonic.common.util.SqlFilterUtils;
|
||||
@@ -40,10 +41,7 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
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.MONTH;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.WEEK;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@@ -236,7 +234,7 @@ public class QueryStructUtils {
|
||||
Set<String> dateList = new HashSet<>();
|
||||
String startDate = "";
|
||||
String endDate = "";
|
||||
String period = "";
|
||||
DatePeriodEnum period = null;
|
||||
for (FieldExpression f : fieldExpressions) {
|
||||
if (Objects.isNull(f.getFieldName())
|
||||
|| !internalCols.contains(f.getFieldName().toLowerCase())) {
|
||||
@@ -247,7 +245,7 @@ public class QueryStructUtils {
|
||||
continue;
|
||||
}
|
||||
period = dateModeUtils.getPeriodByCol(f.getFieldName().toLowerCase());
|
||||
if ("".equals(period)) {
|
||||
if (period == null) {
|
||||
continue;
|
||||
}
|
||||
if ("=".equals(f.getOperator())) {
|
||||
@@ -263,7 +261,7 @@ public class QueryStructUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!"".equals(period)) {
|
||||
if (period != null) {
|
||||
DateConf dateConf = new DateConf();
|
||||
dateConf.setPeriod(period);
|
||||
if (!CollectionUtils.isEmpty(dateList)) {
|
||||
|
||||
Reference in New Issue
Block a user