mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 13:07:32 +00:00
(improvement)(headless) Develop a time format conversion function for adapting to PostgreSQL database, capable of supporting data aggregation by week and month
This commit is contained in:
@@ -26,19 +26,19 @@ public class PostgresqlAdaptor extends BaseDbAdaptor {
|
|||||||
public String getDateFormat(String dateType, String dateFormat, String column) {
|
public String getDateFormat(String dateType, String dateFormat, String column) {
|
||||||
if (dateFormat.equalsIgnoreCase(Constants.DAY_FORMAT_INT)) {
|
if (dateFormat.equalsIgnoreCase(Constants.DAY_FORMAT_INT)) {
|
||||||
if (TimeDimensionEnum.MONTH.name().equalsIgnoreCase(dateType)) {
|
if (TimeDimensionEnum.MONTH.name().equalsIgnoreCase(dateType)) {
|
||||||
return "formatDateTime(toDate(parseDateTimeBestEffort(toString(%s))),'%Y-%m')"
|
return "to_char(to_date(%s,'yyyymmdd'), 'yyyy-mm')".replace("%s", column);
|
||||||
.replace("%s", column);
|
|
||||||
} else if (TimeDimensionEnum.WEEK.name().equalsIgnoreCase(dateType)) {
|
} else if (TimeDimensionEnum.WEEK.name().equalsIgnoreCase(dateType)) {
|
||||||
return "toMonday(toDate(parseDateTimeBestEffort(toString(%s))))"
|
return "to_char(date_trunc('week',to_date(%s, 'yyyymmdd')),'yyyy-mm-dd')"
|
||||||
.replace("%s", column);
|
.replace("%s", column);
|
||||||
} else {
|
} else {
|
||||||
return "toDate(parseDateTimeBestEffort(toString(%s)))".replace("%s", column);
|
return "to_char(to_date(%s,'yyyymmdd'), 'yyyy-mm-dd')".replace("%s", column);
|
||||||
}
|
}
|
||||||
} else if (dateFormat.equalsIgnoreCase(Constants.DAY_FORMAT)) {
|
} else if (dateFormat.equalsIgnoreCase(Constants.DAY_FORMAT)) {
|
||||||
if (TimeDimensionEnum.MONTH.name().equalsIgnoreCase(dateType)) {
|
if (TimeDimensionEnum.MONTH.name().equalsIgnoreCase(dateType)) {
|
||||||
return "formatDateTime(toDate(%s),'%Y-%m')".replace("%s", column);
|
return "to_char(to_date(%s,'yyyy-mm-dd'), 'yyyy-mm')".replace("%s", column);
|
||||||
} else if (TimeDimensionEnum.WEEK.name().equalsIgnoreCase(dateType)) {
|
} else if (TimeDimensionEnum.WEEK.name().equalsIgnoreCase(dateType)) {
|
||||||
return "toMonday(toDate(%s))".replace("%s", column);
|
return "to_char(date_trunc('week',to_date(%s, 'yyyy-mm-dd')),'yyyy-mm-dd')"
|
||||||
|
.replace("%s", column);
|
||||||
} else {
|
} else {
|
||||||
return column;
|
return column;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,8 +43,10 @@ public class TagQueryServiceImpl implements TagQueryService {
|
|||||||
@Value("${s2.item.value.date.format:yyyy-MM-dd}")
|
@Value("${s2.item.value.date.format:yyyy-MM-dd}")
|
||||||
private String itemValueDateFormat;
|
private String itemValueDateFormat;
|
||||||
|
|
||||||
private final String tagValueAlias = "internalTagCount";
|
//因有些数据库(如Postgresql)不支持列名大小写,所以列名统一使用小写,以兼容更多数据库
|
||||||
private final String maxDateAlias = "internalMaxDate";
|
//private final String tagValueAlias = "internalTagCount";
|
||||||
|
private final String tagValueAlias = "internal_tag_count";
|
||||||
|
private final String maxDateAlias = "internal_max_date";
|
||||||
private final TagMetaService tagMetaService;
|
private final TagMetaService tagMetaService;
|
||||||
private final SemanticLayerService queryService;
|
private final SemanticLayerService queryService;
|
||||||
private final ModelService modelService;
|
private final ModelService modelService;
|
||||||
|
|||||||
Reference in New Issue
Block a user