(fix)(headless)Fix showType determination and date field setting in metric query.
Some checks failed
supersonic CentOS CI / build (21) (push) Has been cancelled
supersonic mac CI / build (21) (push) Has been cancelled
supersonic ubuntu CI / build (21) (push) Has been cancelled
supersonic windows CI / build (21) (push) Has been cancelled

(fix)(headless)Fix showType determination and date field setting in metric query.
This commit is contained in:
supersonicbi
2025-05-24 09:26:31 +08:00
parent 0709575cd9
commit e171bdd97f
6 changed files with 31 additions and 10 deletions

View File

@@ -48,16 +48,23 @@ 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>());
Set<String> ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet<>());
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()); ontologyBizNameMetricsDimensions.add(m.getBizName());});
ontologyQuery.getDimensions().forEach(d -> {ontologyMetricsDimensions.add(d.getName()); ontologyBizNameMetricsDimensions.add(d.getBizName());});
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)||queryFieldsSet.containsAll(ontologyBizNameMetricsDimensions))) {
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()));

View File

@@ -36,8 +36,10 @@ public class DataModelNode extends SemanticNode {
&& !dataModel.getModelDetail().getSqlQuery().isEmpty()) {
sqlTable = dataModel.getModelDetail().getSqlQuery();
// if model has sqlVariables, parse sqlVariables
if (Objects.nonNull(dataModel.getModelDetail().getSqlVariables()) || (CollectionUtils.isEmpty(dataModel.getModelDetail().getSqlVariables()))) {
sqlTable = SqlVariableParseUtils.parse(sqlTable, dataModel.getModelDetail().getSqlVariables(), Lists.newArrayList());
if (Objects.nonNull(dataModel.getModelDetail().getSqlVariables())
|| (CollectionUtils.isEmpty(dataModel.getModelDetail().getSqlVariables()))) {
sqlTable = SqlVariableParseUtils.parse(sqlTable,
dataModel.getModelDetail().getSqlVariables(), Lists.newArrayList());
}
} else if (dataModel.getModelDetail().getTableQuery() != null
&& !dataModel.getModelDetail().getTableQuery().isEmpty()) {