From c3cf8b18894afac722c0b09308f1bdc87c518b7b Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Thu, 4 Jun 2026 21:02:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(data):=20=E6=B7=BB=E5=8A=A0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=88=B3=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B9=B6=E4=BC=98=E5=8C=96=E7=BB=B4=E5=BA=A6=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 TIMESTAMP 数据类型枚举值 - 为整型数据类型匹配添加 INT 关键字识别 - 移除维度转换中的冗余数据类型设置逻辑 - 修复数据类型转换过程中的潜在问题 --- .../common/calcite/SqlDialectFactory.java | 10 +++--- .../common/pojo/enums/DataTypeEnums.java | 5 +++ .../headless/chat/ChatQueryContext.java | 3 +- .../service/impl/DataSetServiceImpl.java | 34 ++++++++----------- .../server/utils/DimensionConverter.java | 3 -- 5 files changed, 26 insertions(+), 29 deletions(-) diff --git a/common/src/main/java/com/tencent/supersonic/common/calcite/SqlDialectFactory.java b/common/src/main/java/com/tencent/supersonic/common/calcite/SqlDialectFactory.java index 63b25d5f6..df058ac0b 100644 --- a/common/src/main/java/com/tencent/supersonic/common/calcite/SqlDialectFactory.java +++ b/common/src/main/java/com/tencent/supersonic/common/calcite/SqlDialectFactory.java @@ -26,12 +26,10 @@ public class SqlDialectFactory { .withLiteralQuoteString("'").withIdentifierQuoteString("\"") .withLiteralEscapedQuoteString("''").withUnquotedCasing(Casing.UNCHANGED) .withQuotedCasing(Casing.UNCHANGED).withCaseSensitive(true); - public static final Context PRESTO_CONTEXT = - SqlDialect.EMPTY_CONTEXT.withDatabaseProduct(DatabaseProduct.PRESTO) - .withLiteralQuoteString("'") - .withLiteralEscapedQuoteString("''") - .withUnquotedCasing(Casing.UNCHANGED) - .withQuotedCasing(Casing.UNCHANGED).withCaseSensitive(true); + public static final Context PRESTO_CONTEXT = SqlDialect.EMPTY_CONTEXT + .withDatabaseProduct(DatabaseProduct.PRESTO).withLiteralQuoteString("'") + .withLiteralEscapedQuoteString("''").withUnquotedCasing(Casing.UNCHANGED) + .withQuotedCasing(Casing.UNCHANGED).withCaseSensitive(true); public static final Context KYUUBI_CONTEXT = SqlDialect.EMPTY_CONTEXT.withDatabaseProduct(DatabaseProduct.BIG_QUERY) .withLiteralQuoteString("'").withIdentifierQuoteString("`") diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DataTypeEnums.java b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DataTypeEnums.java index c17fda72a..12304a7f4 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DataTypeEnums.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/enums/DataTypeEnums.java @@ -11,6 +11,8 @@ public enum DataTypeEnums { DATE("DATE"), + TIMESTAMP("TIMESTAMP"), + BIGINT("BIGINT"), INT("INT"), @@ -39,6 +41,9 @@ public enum DataTypeEnums { return typeEnum; } } + if (type != null && type.toUpperCase().contains("INT")) { + return DataTypeEnums.INT; + } return DataTypeEnums.UNKNOWN; } } diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatQueryContext.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatQueryContext.java index a62a688a1..b4b9152da 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatQueryContext.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/ChatQueryContext.java @@ -56,7 +56,8 @@ public class ChatQueryContext implements Serializable { candidateQueries = candidateQueries.stream() .sorted(Comparator.comparing( semanticQuery -> semanticQuery.getParseInfo().getScore(), - Comparator.reverseOrder())).collect(Collectors.toList()); + Comparator.reverseOrder())) + .collect(Collectors.toList()); return candidateQueries; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java index c4bac6dd2..365099082 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java @@ -79,11 +79,11 @@ public class DataSetServiceImpl extends ServiceImpl public DataSetResp getDataSet(Long id) { DataSetDO dataSetDO = getById(id); DataSetResp dataSetResp = convert(dataSetDO); - + if (dataSetResp.getDataSetDetail() != null) { expandIncludesAllModels(dataSetResp); } - + return dataSetResp; } @@ -286,10 +286,8 @@ public class DataSetServiceImpl extends ServiceImpl return; } - Set includeAllModelIds = configs.stream() - .filter(DataSetModelConfig::getIncludesAll) - .map(DataSetModelConfig::getId) - .collect(Collectors.toSet()); + Set includeAllModelIds = configs.stream().filter(DataSetModelConfig::getIncludesAll) + .map(DataSetModelConfig::getId).collect(Collectors.toSet()); if (CollectionUtils.isEmpty(includeAllModelIds)) { return; @@ -302,28 +300,26 @@ public class DataSetServiceImpl extends ServiceImpl List allDimensions = dimensionService.getDimensions(metaFilter); List allMetrics = metricService.getMetrics(metaFilter); - Map> modelDimensionMap = allDimensions.stream() - .collect(Collectors.groupingBy( - DimensionResp::getModelId, - Collectors.mapping(DimensionResp::getId, Collectors.toList()) - )); + Map> modelDimensionMap = + allDimensions.stream().collect(Collectors.groupingBy(DimensionResp::getModelId, + Collectors.mapping(DimensionResp::getId, Collectors.toList()))); - Map> modelMetricMap = allMetrics.stream() - .collect(Collectors.groupingBy( - MetricResp::getModelId, - Collectors.mapping(MetricResp::getId, Collectors.toList()) - )); + Map> modelMetricMap = + allMetrics.stream().collect(Collectors.groupingBy(MetricResp::getModelId, + Collectors.mapping(MetricResp::getId, Collectors.toList()))); for (DataSetModelConfig config : configs) { if (Boolean.TRUE.equals(config.getIncludesAll())) { Long modelId = config.getId(); - - List modelDimensions = modelDimensionMap.getOrDefault(modelId, Lists.newArrayList()); + + List modelDimensions = + modelDimensionMap.getOrDefault(modelId, Lists.newArrayList()); Set existingDimensions = new HashSet<>(config.getDimensions()); existingDimensions.addAll(modelDimensions); config.setDimensions(new ArrayList<>(existingDimensions)); - List modelMetrics = modelMetricMap.getOrDefault(modelId, Lists.newArrayList()); + List modelMetrics = + modelMetricMap.getOrDefault(modelId, Lists.newArrayList()); Set existingMetrics = new HashSet<>(config.getMetrics()); existingMetrics.addAll(modelMetrics); config.setMetrics(new ArrayList<>(existingMetrics)); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java index 9323c9290..d6893211c 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java @@ -73,9 +73,6 @@ public class DimensionConverter { if (dimensionReq.getTypeParams() != null) { dimensionDO.setTypeParams(JSONObject.toJSONString(dimensionReq.getTypeParams())); } - if (dimensionReq.getDataType() != null) { - dimensionDO.setDataType(dimensionReq.getDataType().getType()); - } dimensionDO.setStatus(StatusEnum.ONLINE.getCode()); return dimensionDO; }