mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 20:25:12 +00:00
fix:convert name or alias to schema element (#465)
This commit is contained in:
@@ -57,19 +57,19 @@ public class SemanticSchema implements Serializable {
|
|||||||
|
|
||||||
switch (elementType) {
|
switch (elementType) {
|
||||||
case ENTITY:
|
case ENTITY:
|
||||||
element = getElementsByName(name, getEntities());
|
element = getElementsByNameOrAlias(name, getEntities());
|
||||||
break;
|
break;
|
||||||
case MODEL:
|
case MODEL:
|
||||||
element = getElementsByName(name, getModels());
|
element = getElementsByNameOrAlias(name, getModels());
|
||||||
break;
|
break;
|
||||||
case METRIC:
|
case METRIC:
|
||||||
element = getElementsByName(name, getMetrics());
|
element = getElementsByNameOrAlias(name, getMetrics());
|
||||||
break;
|
break;
|
||||||
case DIMENSION:
|
case DIMENSION:
|
||||||
element = getElementsByName(name, getDimensions());
|
element = getElementsByNameOrAlias(name, getDimensions());
|
||||||
break;
|
break;
|
||||||
case VALUE:
|
case VALUE:
|
||||||
element = getElementsByName(name, getDimensionValues());
|
element = getElementsByNameOrAlias(name, getDimensionValues());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
@@ -151,10 +151,11 @@ public class SemanticSchema implements Serializable {
|
|||||||
.findFirst();
|
.findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<SchemaElement> getElementsByName(String name, List<SchemaElement> elements) {
|
private Optional<SchemaElement> getElementsByNameOrAlias(String name, List<SchemaElement> elements) {
|
||||||
return elements.stream()
|
return elements.stream()
|
||||||
.filter(schemaElement -> name.equals(schemaElement.getName()))
|
.filter(schemaElement ->
|
||||||
.findFirst();
|
name.equals(schemaElement.getName()) || schemaElement.getAlias().contains(name)
|
||||||
|
).findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SchemaElement> getModels() {
|
public List<SchemaElement> getModels() {
|
||||||
|
|||||||
@@ -15,8 +15,10 @@ import com.tencent.supersonic.chat.service.SemanticService;
|
|||||||
import com.tencent.supersonic.common.pojo.QueryType;
|
import com.tencent.supersonic.common.pojo.QueryType;
|
||||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||||
import com.tencent.supersonic.common.util.ContextUtils;
|
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.SqlParserRemoveHelper;
|
||||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
|
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
@@ -30,6 +32,7 @@ import java.util.stream.Collectors;
|
|||||||
* MetricCheckProcessor verifies whether the dimensions
|
* MetricCheckProcessor verifies whether the dimensions
|
||||||
* involved in the query in metric mode can drill down on the metric.
|
* involved in the query in metric mode can drill down on the metric.
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public class MetricCheckProcessor implements ParseResultProcessor {
|
public class MetricCheckProcessor implements ParseResultProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -43,6 +46,7 @@ public class MetricCheckProcessor implements ParseResultProcessor {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String correctSqlProcessed = processCorrectSql(parseInfo, semanticSchema);
|
String correctSqlProcessed = processCorrectSql(parseInfo, semanticSchema);
|
||||||
|
log.info("correct sql:{}", correctSqlProcessed);
|
||||||
parseInfo.getSqlInfo().setCorrectS2SQL(correctSqlProcessed);
|
parseInfo.getSqlInfo().setCorrectS2SQL(correctSqlProcessed);
|
||||||
}
|
}
|
||||||
semanticQueries.removeIf(semanticQuery -> {
|
semanticQueries.removeIf(semanticQuery -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user