From 13d8b9cff596dba184a136537e5aca0b2d23420d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E6=B2=B3?= Date: Wed, 15 Nov 2023 20:14:30 +0800 Subject: [PATCH] Get original name for dimensions and metrics. (#390) --- .../parser/convert/QueryReqConverter.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java index 109ca58b8..df5e05d64 100644 --- a/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java +++ b/semantic/query/src/main/java/com/tencent/supersonic/semantic/query/parser/convert/QueryReqConverter.java @@ -141,20 +141,22 @@ public class QueryReqConverter { } private Set getDimensions(ModelSchemaResp modelSchemaResp, List allFields) { - Set allDimensions = modelSchemaResp.getDimensions().stream() - .map(entry -> entry.getBizName().toLowerCase()) - .collect(Collectors.toSet()); - allDimensions.addAll(QueryStructUtils.internalCols); - Set collect = allFields.stream().filter(entry -> allDimensions.contains(entry.toLowerCase())) - .map(String::toLowerCase).collect(Collectors.toSet()); + Map dimensionLowerToNameMap = modelSchemaResp.getDimensions().stream() + .collect(Collectors.toMap(entry -> entry.getBizName().toLowerCase(), entry -> entry.getBizName())); + Map internalLowerToNameMap = QueryStructUtils.internalCols.stream() + .collect(Collectors.toMap(a -> a.toLowerCase(), a -> a)); + dimensionLowerToNameMap.putAll(internalLowerToNameMap); + Set collect = allFields.stream() + .filter(entry -> dimensionLowerToNameMap.containsKey(entry.toLowerCase())) + .map(entry -> dimensionLowerToNameMap.get(entry.toLowerCase())).collect(Collectors.toSet()); return collect; } private List getMetrics(ModelSchemaResp modelSchemaResp, List allFields) { - Set allMetrics = modelSchemaResp.getMetrics().stream().map(entry -> entry.getBizName().toLowerCase()) - .collect(Collectors.toSet()); - List metrics = allFields.stream().filter(entry -> allMetrics.contains(entry.toLowerCase())) - .map(String::toLowerCase).collect(Collectors.toList()); + Map metricLowerToNameMap = modelSchemaResp.getMetrics().stream() + .collect(Collectors.toMap(entry -> entry.getBizName().toLowerCase(), entry -> entry.getBizName())); + List metrics = allFields.stream().filter(entry -> metricLowerToNameMap.containsKey(entry.toLowerCase())) + .map(entry -> metricLowerToNameMap.get(entry.toLowerCase())).collect(Collectors.toList()); return metrics; }