fix:convert name or alias to schema element (#465)

This commit is contained in:
Scott
2023-12-03 20:22:02 +08:00
committed by GitHub
parent 4280aad0a7
commit c220ca69c2
2 changed files with 13 additions and 8 deletions

View File

@@ -57,19 +57,19 @@ public class SemanticSchema implements Serializable {
switch (elementType) {
case ENTITY:
element = getElementsByName(name, getEntities());
element = getElementsByNameOrAlias(name, getEntities());
break;
case MODEL:
element = getElementsByName(name, getModels());
element = getElementsByNameOrAlias(name, getModels());
break;
case METRIC:
element = getElementsByName(name, getMetrics());
element = getElementsByNameOrAlias(name, getMetrics());
break;
case DIMENSION:
element = getElementsByName(name, getDimensions());
element = getElementsByNameOrAlias(name, getDimensions());
break;
case VALUE:
element = getElementsByName(name, getDimensionValues());
element = getElementsByNameOrAlias(name, getDimensionValues());
break;
default:
}
@@ -151,10 +151,11 @@ public class SemanticSchema implements Serializable {
.findFirst();
}
private Optional<SchemaElement> getElementsByName(String name, List<SchemaElement> elements) {
private Optional<SchemaElement> getElementsByNameOrAlias(String name, List<SchemaElement> elements) {
return elements.stream()
.filter(schemaElement -> name.equals(schemaElement.getName()))
.findFirst();
.filter(schemaElement ->
name.equals(schemaElement.getName()) || schemaElement.getAlias().contains(name)
).findFirst();
}
public List<SchemaElement> getModels() {

View File

@@ -15,8 +15,10 @@ import com.tencent.supersonic.chat.service.SemanticService;
import com.tencent.supersonic.common.pojo.QueryType;
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
import com.tencent.supersonic.common.util.ContextUtils;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.common.util.jsqlparser.SqlParserRemoveHelper;
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
@@ -30,6 +32,7 @@ import java.util.stream.Collectors;
* MetricCheckProcessor verifies whether the dimensions
* involved in the query in metric mode can drill down on the metric.
*/
@Slf4j
public class MetricCheckProcessor implements ParseResultProcessor {
@Override
@@ -43,6 +46,7 @@ public class MetricCheckProcessor implements ParseResultProcessor {
continue;
}
String correctSqlProcessed = processCorrectSql(parseInfo, semanticSchema);
log.info("correct sql:{}", correctSqlProcessed);
parseInfo.getSqlInfo().setCorrectS2SQL(correctSqlProcessed);
}
semanticQueries.removeIf(semanticQuery -> {