[improvement][chat]Change query type resolution logic.

This commit is contained in:
jerryjzhang
2024-10-29 19:03:10 +08:00
parent ec6d7ba93d
commit 996cb3df56
3 changed files with 4 additions and 8 deletions

View File

@@ -30,10 +30,7 @@ public class SqlSelectFunctionHelper {
Arrays.asList("SUM", "COUNT", "MAX", "MIN", "AVG"); Arrays.asList("SUM", "COUNT", "MAX", "MIN", "AVG");
public static boolean hasAggregateFunction(String sql) { public static boolean hasAggregateFunction(String sql) {
if (!CollectionUtils.isEmpty(getFunctions(sql))) { return !CollectionUtils.isEmpty(getFunctions(sql));
return true;
}
return SqlSelectHelper.hasGroupBy(sql);
} }
public static boolean hasFunction(String sql, String functionName) { public static boolean hasFunction(String sql, String functionName) {

View File

@@ -35,7 +35,7 @@ class SqlSelectFunctionHelperTest {
hasAggregateFunction = SqlSelectFunctionHelper.hasAggregateFunction(sql); hasAggregateFunction = SqlSelectFunctionHelper.hasAggregateFunction(sql);
Assert.assertEquals(hasAggregateFunction, false); Assert.assertEquals(hasAggregateFunction, false);
sql = "SELECT user_name, pv FROM t_34 WHERE sys_imp_date <= '2023-09-03' " sql = "SELECT user_name, sum(pv) FROM t_34 WHERE sys_imp_date <= '2023-09-03' "
+ "AND sys_imp_date >= '2023-08-04' GROUP BY user_name ORDER BY sum(pv) DESC LIMIT 10"; + "AND sys_imp_date >= '2023-08-04' GROUP BY user_name ORDER BY sum(pv) DESC LIMIT 10";
hasAggregateFunction = SqlSelectFunctionHelper.hasAggregateFunction(sql); hasAggregateFunction = SqlSelectFunctionHelper.hasAggregateFunction(sql);
Assert.assertEquals(hasAggregateFunction, true); Assert.assertEquals(hasAggregateFunction, true);

View File

@@ -68,9 +68,8 @@ public class QueryTypeParser implements SemanticParser {
} }
} }
// 2. metric queryType // 2. AGG queryType
if (selectContainsMetric(sqlInfo, dataSetId, semanticSchema) if (SqlSelectFunctionHelper.hasAggregateFunction(sqlInfo.getParsedS2SQL())) {
|| SqlSelectFunctionHelper.hasAggregateFunction(sqlInfo.getParsedS2SQL())) {
return QueryType.AGGREGATE; return QueryType.AGGREGATE;
} }