From 5b77b39c60fd7f29dd136c01f93961cb49d493c8 Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Fri, 22 May 2026 17:45:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(dimension):=20=E6=B7=BB=E5=8A=A0=E7=BB=B4?= =?UTF-8?q?=E5=BA=A6=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在Dimension类中新增dataType字段 - 更新Dimension构造函数以支持dataType参数 - 在DimensionConverter中添加dataType转换逻辑 - 在ModelConverter中集成DataTypeEnums转换 - 支持从语义列到维度的数据类型映射 --- .../com/tencent/supersonic/headless/api/pojo/Dimension.java | 5 ++++- .../supersonic/headless/server/utils/DimensionConverter.java | 3 +++ .../supersonic/headless/server/utils/ModelConverter.java | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Dimension.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Dimension.java index 4e79a4a20..51b20c371 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Dimension.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/Dimension.java @@ -21,6 +21,8 @@ public class Dimension { private String dateFormat = Constants.DAY_FORMAT; + private String dataType; + private DimensionTimeTypeParams typeParams; private Integer isCreateDimension = 0; @@ -37,13 +39,14 @@ public class Dimension { this.expr = bizName; } - public Dimension(String name, String bizName, String expr, DimensionType type, + public Dimension(String name, String bizName, String expr, DimensionType type, String dataType, Integer isCreateDimension) { this.name = name; this.type = type; this.isCreateDimension = isCreateDimension; this.bizName = bizName; this.expr = expr; + this.dataType = dataType; } public Dimension(String name, String bizName, DimensionType type, Integer isCreateDimension, 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 d6893211c..9323c9290 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,6 +73,9 @@ 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; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java index 0e7c29a5d..8a575b7d9 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/ModelConverter.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.DimensionConstants; import com.tencent.supersonic.common.pojo.User; +import com.tencent.supersonic.common.pojo.enums.DataTypeEnums; import com.tencent.supersonic.common.pojo.enums.StatusEnum; import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.common.util.JsonUtil; @@ -109,6 +110,7 @@ public class ModelConverter { dimensionReq.setModelId(modelDO.getId()); dimensionReq.setExpr(dim.getExpr()); dimensionReq.setType(dim.getType().name()); + dimensionReq.setDataType(DataTypeEnums.of(dim.getDataType())); dimensionReq .setDescription(Objects.isNull(dim.getDescription()) ? dimensionReq.getDescription() : dim.getDescription()); @@ -193,7 +195,8 @@ public class ModelConverter { if (optional.isEmpty()) { Dimension dim = new Dimension(semanticColumn.getName(), semanticColumn.getColumnName(), semanticColumn.getExpr(), - DimensionType.valueOf(semanticColumn.getFiledType().name()), 1); + DimensionType.valueOf(semanticColumn.getFiledType().name()), + semanticColumn.getDataType(), 1); modelDetail.getDimensions().add(dim); } }