mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
[improvement][chat]Introduce AllFieldMapper to increase parsing robustness when normal pipeline fails.
[improvement][chat]Introduce `AllFieldMapper` to increase parsing robustness when normal pipeline fails.
This commit is contained in:
@@ -30,6 +30,9 @@ public class DefaultSemanticTranslator implements SemanticTranslator {
|
||||
if (parser.accept(queryStatement)) {
|
||||
log.debug("QueryConverter accept [{}]", parser.getClass().getName());
|
||||
parser.parse(queryStatement);
|
||||
if (queryStatement.getStatus() != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!queryStatement.isOk()) {
|
||||
|
||||
@@ -63,6 +63,14 @@ public class SqlQueryParser implements QueryParser {
|
||||
List<String> metrics =
|
||||
metricSchemas.stream().map(SchemaItem::getBizName).collect(Collectors.toList());
|
||||
Set<String> dimensions = getDimensions(semanticSchemaResp, allFields);
|
||||
// check if there are fields not matched with any metric or dimension
|
||||
if (allFields.size() > metricSchemas.size() + dimensions.size()) {
|
||||
queryStatement
|
||||
.setErrMsg("There are fields in the SQL not matched with any semantic column.");
|
||||
queryStatement.setStatus(1);
|
||||
return;
|
||||
}
|
||||
|
||||
OntologyQuery ontologyQuery = new OntologyQuery();
|
||||
ontologyQuery.getMetrics().addAll(metrics);
|
||||
ontologyQuery.getDimensions().addAll(dimensions);
|
||||
|
||||
Reference in New Issue
Block a user