mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +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) {
|
||||
if (dateFormat.equalsIgnoreCase(Constants.DAY_FORMAT_INT)) {
|
||||
if (TimeDimensionEnum.MONTH.name().equalsIgnoreCase(dateType)) {
|
||||
return "formatDateTime(toDate(parseDateTimeBestEffort(toString(%s))),'%Y-%m')"
|
||||
.replace("%s", column);
|
||||
return "to_char(to_date(%s,'yyyymmdd'), 'yyyy-mm')".replace("%s", column);
|
||||
} 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);
|
||||
} 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)) {
|
||||
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)) {
|
||||
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 {
|
||||
return column;
|
||||
}
|
||||
|
||||
@@ -43,8 +43,10 @@ public class TagQueryServiceImpl implements TagQueryService {
|
||||
@Value("${s2.item.value.date.format:yyyy-MM-dd}")
|
||||
private String itemValueDateFormat;
|
||||
|
||||
private final String tagValueAlias = "internalTagCount";
|
||||
private final String maxDateAlias = "internalMaxDate";
|
||||
//因有些数据库(如Postgresql)不支持列名大小写,所以列名统一使用小写,以兼容更多数据库
|
||||
//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 SemanticLayerService queryService;
|
||||
private final ModelService modelService;
|
||||
|
||||
Reference in New Issue
Block a user