mirror of
https://github.com/tencentmusic/supersonic.git
synced 2026-01-24 04:21:10 +08:00
修复维度值导入字典时,维度值和度量值为英文名导致字段不匹配的问题
修复维度值导入字典时,维度值和度量值为英文名导致字段不匹配的问题。 维度值导入字典时会遍历调用到SqlQueryParser方法,这时的维度值或度量值为Bizname而非name,新增一个set用于添加Bizname,并在判断中新加入Bizname名的判断,只要两个条件符合一个即可
This commit is contained in:
@@ -48,15 +48,16 @@ public class SqlQueryParser implements QueryParser {
|
||||
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
|
||||
Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql());
|
||||
Set<String> ontologyMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
|
||||
Set<String> ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
|
||||
queryFields.removeAll(queryAliases);
|
||||
Ontology ontology = queryStatement.getOntology();
|
||||
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
|
||||
Set<String> 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<String> semanticFields = Lists.newArrayList();
|
||||
ontologyQuery.getMetrics().forEach(m -> semanticFields.add(m.getName()));
|
||||
ontologyQuery.getDimensions().forEach(d -> semanticFields.add(d.getName()));
|
||||
|
||||
Reference in New Issue
Block a user