Skip to content

Commit 86bf40c

Browse files
authored
(feature)(chat) optimized code in GroupByCorrector (#226)
1 parent f90ab22 commit 86bf40c

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

chat/core/src/main/java/com/tencent/supersonic/chat/corrector/GroupByCorrector.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,22 @@ public class GroupByCorrector extends BaseSemanticCorrector {
2020
public void correct(SemanticCorrectInfo semanticCorrectInfo) {
2121

2222
super.correct(semanticCorrectInfo);
23-
Long modelId = semanticCorrectInfo.getParseInfo().getModel().getModel();
24-
// if select not exit metric not add aggregate
25-
List<String> selectFields = SqlParserSelectHelper.getSelectFields(semanticCorrectInfo.getSql());
2623

27-
Set<String> metrics = getMetricElements(modelId).stream()
28-
.map(schemaElement -> schemaElement.getName())
29-
.collect(Collectors.toSet());
24+
addGroupByFields(semanticCorrectInfo);
3025

31-
if (!CollectionUtils.isEmpty(selectFields)
32-
&& !CollectionUtils.isEmpty(metrics)
33-
&& selectFields.stream().anyMatch(s -> metrics.contains(s))) {
34-
//add aggregate to all metric
35-
addAggregateToMetric(semanticCorrectInfo);
36-
}
26+
addAggregate(semanticCorrectInfo);
27+
}
28+
29+
private void addGroupByFields(SemanticCorrectInfo semanticCorrectInfo) {
30+
Long modelId = semanticCorrectInfo.getParseInfo().getModel().getModel();
3731

3832
//add dimension group by
3933
String sql = semanticCorrectInfo.getSql();
4034
SemanticSchema semanticSchema = ContextUtils.getBean(SchemaService.class).getSemanticSchema();
41-
4235
Set<String> dimensions = semanticSchema.getDimensions(modelId).stream()
4336
.map(schemaElement -> schemaElement.getName()).collect(Collectors.toSet());
4437
dimensions.add(DateUtils.DATE_FIELD);
45-
selectFields = SqlParserSelectHelper.getSelectFields(sql);
38+
List<String> selectFields = SqlParserSelectHelper.getSelectFields(sql);
4639

4740
if (CollectionUtils.isEmpty(selectFields) || CollectionUtils.isEmpty(dimensions)) {
4841
return;
@@ -58,7 +51,13 @@ public void correct(SemanticCorrectInfo semanticCorrectInfo) {
5851
})
5952
.collect(Collectors.toSet());
6053
semanticCorrectInfo.setSql(SqlParserAddHelper.addGroupBy(sql, groupByFields));
54+
}
6155

56+
private void addAggregate(SemanticCorrectInfo semanticCorrectInfo) {
57+
List<String> sqlGroupByFields = SqlParserSelectHelper.getGroupByFields(semanticCorrectInfo.getSql());
58+
if (CollectionUtils.isEmpty(sqlGroupByFields)) {
59+
return;
60+
}
6261
addAggregateToMetric(semanticCorrectInfo);
6362
}
6463
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
<xk.time.version>3.2.4</xk.time.version>
6565
<mockito-inline.version>4.5.1</mockito-inline.version>
6666
<jsqlparser.version>4.5</jsqlparser.version>
67-
<revision>0.7.5</revision>
67+
<revision>0.7.5-SNAPSHOT</revision>
6868
<!-- Do not bump spotless plugin version since 2.30.0 is the latest version supports Java 8-->
6969
<maven.plugin.spotless.version>2.30.0</maven.plugin.spotless.version>
7070
<spotless.python.includes></spotless.python.includes>

0 commit comments

Comments
 (0)