mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
(improvement)(chat) Rules and large model queries should be queried using s2sql (#334)
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package com.tencent.supersonic.common.pojo.enums;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
public enum TimeDimensionEnum {
|
||||
|
||||
DAY("sys_imp_date", "数据日期"),
|
||||
WEEK("sys_imp_week", "数据日期_周"),
|
||||
|
||||
MONTH("sys_imp_month", "数据日期_月");
|
||||
|
||||
private String name;
|
||||
|
||||
private String chName;
|
||||
|
||||
TimeDimensionEnum(String name, String chName) {
|
||||
this.name = name;
|
||||
this.chName = chName;
|
||||
}
|
||||
|
||||
public static List<String> getNameList() {
|
||||
return Arrays.stream(TimeDimensionEnum.values()).map(TimeDimensionEnum::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static Set<String> getChNameSet() {
|
||||
return Arrays.stream(TimeDimensionEnum.values()).map(TimeDimensionEnum::getChName).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getChName() {
|
||||
return chName;
|
||||
}
|
||||
}
|
||||
@@ -15,8 +15,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
public class DateUtils {
|
||||
|
||||
public static final String DATE_FORMAT = "yyyy-MM-dd";
|
||||
|
||||
public static final String DATE_FIELD = "数据日期";
|
||||
public static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
public static final String FORMAT = "yyyyMMddHHmmss";
|
||||
|
||||
|
||||
@@ -55,15 +55,14 @@ public class SqlFilterUtils {
|
||||
return filterCols;
|
||||
}
|
||||
|
||||
|
||||
public String getWhereClause(List<Filter> filters) {
|
||||
public String getWhereClause(List<Filter> filters, boolean isBizName) {
|
||||
StringJoiner joiner = new StringJoiner(Constants.AND_UPPER);
|
||||
|
||||
if (!CollectionUtils.isEmpty(filters)) {
|
||||
filters.stream()
|
||||
.forEach(filter -> {
|
||||
if (Strings.isNotEmpty(dealFilter(filter))) {
|
||||
joiner.add(SPACE + dealFilter(filter) + SPACE);
|
||||
if (Strings.isNotEmpty(dealFilter(filter, isBizName))) {
|
||||
joiner.add(SPACE + dealFilter(filter, isBizName) + SPACE);
|
||||
}
|
||||
});
|
||||
log.info("getWhereClause, where sql : {}", joiner.toString());
|
||||
@@ -73,7 +72,12 @@ public class SqlFilterUtils {
|
||||
return "";
|
||||
}
|
||||
|
||||
public String dealFilter(Filter filter) {
|
||||
|
||||
public String getWhereClause(List<Filter> filters) {
|
||||
return getWhereClause(filters, true);
|
||||
}
|
||||
|
||||
public String dealFilter(Filter filter, boolean isBizName) {
|
||||
if (Objects.isNull(filter)) {
|
||||
return "";
|
||||
}
|
||||
@@ -82,14 +86,14 @@ public class SqlFilterUtils {
|
||||
}
|
||||
StringBuilder condition = new StringBuilder();
|
||||
if (Filter.Relation.FILTER.equals(filter.getRelation())) {
|
||||
return dealSingleFilter(filter);
|
||||
return dealSingleFilter(filter, isBizName);
|
||||
}
|
||||
|
||||
List<Filter> children = filter.getChildren();
|
||||
condition.append(PARENTHESES_START);
|
||||
StringJoiner joiner = new StringJoiner(SPACE + filter.getRelation().name() + SPACE);
|
||||
for (Filter child : children) {
|
||||
joiner.add(dealFilter(child));
|
||||
joiner.add(dealFilter(child, isBizName));
|
||||
}
|
||||
condition.append(joiner.toString());
|
||||
condition.append(PARENTHESES_END);
|
||||
@@ -97,8 +101,11 @@ public class SqlFilterUtils {
|
||||
}
|
||||
|
||||
// todo deal metric filter
|
||||
private String dealSingleFilter(Filter filter) {
|
||||
private String dealSingleFilter(Filter filter, boolean isBizName) {
|
||||
String name = filter.getBizName();
|
||||
if (!isBizName) {
|
||||
name = filter.getName();
|
||||
}
|
||||
Object value = filter.getValue();
|
||||
FilterOperatorEnum operator = filter.getOperator();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user