(improvement)(chat) support show sum metric in chinese name and support multiple conditions in having and if not exist metirc than not addAggregateToMetric (#165)

This commit is contained in:
lexluo09
2023-09-30 23:35:58 +08:00
committed by GitHub
parent 2a6391a2ee
commit 741ed4191b
6 changed files with 46 additions and 16 deletions

View File

@@ -30,8 +30,6 @@ public class GlobalBeforeCorrector extends BaseSemanticCorrector {
correctFieldName(semanticCorrectInfo);
}
private void replaceAlias(SemanticCorrectInfo semanticCorrectInfo) {
String replaceAlias = SqlParserUpdateHelper.replaceAlias(semanticCorrectInfo.getSql());
semanticCorrectInfo.setSql(replaceAlias);

View File

@@ -30,21 +30,18 @@ public class GroupByCorrector extends BaseSemanticCorrector {
if (!CollectionUtils.isEmpty(selectFields)
&& !CollectionUtils.isEmpty(metrics)
&& selectFields.stream().anyMatch(s -> metrics.contains(s))) {
return;
&& !selectFields.stream().anyMatch(s -> metrics.contains(s))) {
//add aggregate to all metric
addAggregateToMetric(semanticCorrectInfo);
}
//add aggregate to all metric
addAggregateToMetric(semanticCorrectInfo);
//add dimension group by
String sql = semanticCorrectInfo.getSql();
SemanticSchema semanticSchema = ContextUtils.getBean(SchemaService.class).getSemanticSchema();
Set<String> dimensions = semanticSchema.getDimensions(modelId).stream()
.filter(schemaElement -> !DateUtils.DATE_FIELD.equals(schemaElement.getBizName()))
.map(schemaElement -> schemaElement.getName()).collect(Collectors.toSet());
dimensions.add(DateUtils.DATE_FIELD);
selectFields = SqlParserSelectHelper.getSelectFields(sql);
if (CollectionUtils.isEmpty(selectFields) || CollectionUtils.isEmpty(dimensions)) {