diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/SqlQueryParser.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/SqlQueryParser.java index 2aaef6b52..04b89ee5e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/SqlQueryParser.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/SqlQueryParser.java @@ -48,15 +48,16 @@ public class SqlQueryParser implements QueryParser { List queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql()); Set queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql()); Set ontologyMetricsDimensions = Collections.synchronizedSet(new HashSet()); + Set ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet()); queryFields.removeAll(queryAliases); Ontology ontology = queryStatement.getOntology(); OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields); Set queryFieldsSet = new HashSet<>(queryFields); - ontologyQuery.getMetrics().forEach(m -> ontologyMetricsDimensions.add(m.getName())); - ontologyQuery.getDimensions().forEach(d -> ontologyMetricsDimensions.add(d.getName())); + ontologyQuery.getMetrics().forEach(m -> {ontologyMetricsDimensions.add(m.getName()); ontologyBizNameMetricsDimensions.add(m.getBizName());}); + ontologyQuery.getDimensions().forEach(d -> {ontologyMetricsDimensions.add(d.getName()); ontologyBizNameMetricsDimensions.add(d.getBizName());}); // check if there are fields not matched with any metric or dimension - if (!queryFieldsSet.containsAll(ontologyMetricsDimensions)) { + if (!(queryFieldsSet.containsAll(ontologyMetricsDimensions)||queryFieldsSet.containsAll(ontologyBizNameMetricsDimensions))) { List semanticFields = Lists.newArrayList(); ontologyQuery.getMetrics().forEach(m -> semanticFields.add(m.getName())); ontologyQuery.getDimensions().forEach(d -> semanticFields.add(d.getName()));