diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/MetricCheckProcessor.java b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/MetricCheckProcessor.java index 1fdc0595a..e0d61d994 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/processor/MetricCheckProcessor.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/processor/MetricCheckProcessor.java @@ -79,8 +79,7 @@ public class MetricCheckProcessor implements ParseResultProcessor { } } for (String dimensionName : whereFields) { - if (TimeDimensionEnum.getNameList().contains(dimensionName) - || TimeDimensionEnum.getChNameList().contains(dimensionName)) { + if (TimeDimensionEnum.containsTimeDimension(dimensionName)) { continue; } if (!checkInModelSchema(dimensionName, SchemaElementType.DIMENSION, semanticSchema)) { @@ -91,8 +90,7 @@ public class MetricCheckProcessor implements ParseResultProcessor { } } for (String dimensionName : groupByFields) { - if (TimeDimensionEnum.getNameList().contains(dimensionName) - || TimeDimensionEnum.getChNameList().contains(dimensionName)) { + if (TimeDimensionEnum.containsTimeDimension(dimensionName)) { continue; } if (!checkInModelSchema(dimensionName, SchemaElementType.DIMENSION, semanticSchema)) { @@ -110,7 +108,7 @@ public class MetricCheckProcessor implements ParseResultProcessor { * eg: metric like UV is calculated in a certain dimension, it cannot be used on other dimensions. */ private boolean checkNecessaryDimension(SchemaElement metric, SemanticSchema semanticSchema, - List dimensionFields) { + List dimensionFields) { List necessaryDimensions = getNecessaryDimensionNames(metric, semanticSchema); if (CollectionUtils.isEmpty(necessaryDimensions)) { return true; @@ -128,7 +126,7 @@ public class MetricCheckProcessor implements ParseResultProcessor { * eg: some descriptive dimensions are not suitable as drill-down dimensions */ private boolean checkDrillDownDimension(String dimensionName, List metrics, - SemanticSchema semanticSchema) { + SemanticSchema semanticSchema) { List metricElements = semanticSchema.getMetrics().stream() .filter(schemaElement -> metrics.contains(schemaElement.getName())) .collect(Collectors.toList()); @@ -208,7 +206,7 @@ public class MetricCheckProcessor implements ParseResultProcessor { } private static String removeFieldInSql(String sql, Set metricToRemove, - Set dimensionByToRemove, Set whereFieldsToRemove) { + Set dimensionByToRemove, Set whereFieldsToRemove) { sql = SqlParserRemoveHelper.removeWhereCondition(sql, whereFieldsToRemove); sql = SqlParserRemoveHelper.removeSelect(sql, metricToRemove); sql = SqlParserRemoveHelper.removeSelect(sql, dimensionByToRemove); diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java index 03a17328f..05321e919 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/TimeDimensionEnum.java @@ -24,6 +24,13 @@ public enum TimeDimensionEnum { this.chName = chName; } + public static boolean containsTimeDimension(String fieldName) { + if (getNameList().contains(fieldName) || getChNameList().contains(fieldName)) { + return true; + } + return false; + } + public static List getNameList() { return Arrays.stream(TimeDimensionEnum.values()).map(TimeDimensionEnum::getName).collect(Collectors.toList()); }