diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java index 1675a1a4c..39e2adb7f 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java @@ -67,6 +67,8 @@ public class MetricResp extends SchemaItem { private double similarity; + private String defaultAgg; + public void setClassifications(String tag) { if (StringUtils.isBlank(tag)) { classifications = Lists.newArrayList(); @@ -92,14 +94,6 @@ public class MetricResp extends SchemaItem { return relateDimension.getDrillDownDimensions(); } - public String getDefaultAgg() { - if (metricDefineByMeasureParams != null - && CollectionUtils.isNotEmpty(metricDefineByMeasureParams.getMeasures())) { - return metricDefineByMeasureParams.getMeasures().get(0).getAgg(); - } - return ""; - } - public String getExpr() { if (MetricDefineType.MEASURE.equals(metricDefineType)) { return metricDefineByMeasureParams.getExpr(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/ModelController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/ModelController.java index 25fbd44f2..0173e6091 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/ModelController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/ModelController.java @@ -84,7 +84,7 @@ public class ModelController { @GetMapping("/getAllModelByDomainId") public List getAllModelByDomainId(@RequestParam("domainId") Long domainId) { - return modelService.getAllModelByDomainIds(Lists.newArrayList(domainId)); + return modelService.getAllModelByDomainIds(Lists.newArrayList(domainId)); } @GetMapping("/getModelDatabase/{modelId}") diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/MetricService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/MetricService.java index 37d178b1f..85aeb92e7 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/MetricService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/MetricService.java @@ -13,6 +13,7 @@ import com.tencent.supersonic.headless.api.pojo.request.PageMetricReq; import com.tencent.supersonic.headless.api.pojo.request.QueryMetricReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.response.MetricResp; +import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.server.pojo.MetaFilter; import com.tencent.supersonic.headless.server.pojo.MetricsFilter; @@ -65,6 +66,8 @@ public interface MetricService { List queryMetrics(MetricsFilter metricsFilter); + void batchFillMetricDefaultAgg(List metricResps, List modelResps); + QueryStructReq convert(QueryMetricReq queryMetricReq); DataEvent getDataEvent(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java index ec2b49828..31f134a95 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java @@ -19,6 +19,7 @@ import com.tencent.supersonic.common.pojo.enums.TypeEnums; import com.tencent.supersonic.common.util.BeanMapper; import com.tencent.supersonic.common.util.ChatGptHelper; import com.tencent.supersonic.headless.api.pojo.DrillDownDimension; +import com.tencent.supersonic.headless.api.pojo.Measure; import com.tencent.supersonic.headless.api.pojo.MeasureParam; import com.tencent.supersonic.headless.api.pojo.MetricParam; import com.tencent.supersonic.headless.api.pojo.MetricQueryDefaultConfig; @@ -174,7 +175,7 @@ public class MetricServiceImpl implements MetricService { DataItem dataItem = getDataItem(metricDO); dataItem.setName(oldName); dataItem.setNewName(metricDO.getName()); - sendEvent(getDataItem(metricDO), EventType.UPDATE); + sendEvent(dataItem, EventType.UPDATE); } return MetricConverter.convert2MetricResp(metricDO); } @@ -688,12 +689,46 @@ public class MetricServiceImpl implements MetricService { private DataItem getDataItem(MetricDO metricDO) { MetricResp metricResp = MetricConverter.convert2MetricResp(metricDO, new HashMap<>(), Lists.newArrayList()); + fillDefaultAgg(metricResp); return DataItem.builder().id(metricDO.getId() + Constants.UNDERLINE).name(metricDO.getName()) .bizName(metricDO.getBizName()) .modelId(metricDO.getModelId() + Constants.UNDERLINE) .type(TypeEnums.METRIC).defaultAgg(metricResp.getDefaultAgg()).build(); } + @Override + public void batchFillMetricDefaultAgg(List metricResps, List modelResps) { + Map modelRespMap = modelResps.stream().collect(Collectors.toMap(ModelResp::getId, m -> m)); + for (MetricResp metricResp : metricResps) { + if (MetricDefineType.MEASURE.equals(metricResp.getMetricDefineType())) { + fillDefaultAgg(metricResp, modelRespMap.get(metricResp.getModelId())); + } + } + } + + private void fillDefaultAgg(MetricResp metricResp) { + if (MetricDefineType.MEASURE.equals(metricResp.getMetricDefineType())) { + Long modelId = metricResp.getModelId(); + ModelResp modelResp = modelService.getModel(modelId); + fillDefaultAgg(metricResp, modelResp); + } + } + + private void fillDefaultAgg(MetricResp metricResp, ModelResp modelResp) { + if (modelResp == null) { + return; + } + List measures = modelResp.getModelDetail().getMeasures(); + MeasureParam firstMeasure = metricResp.getMetricDefineByMeasureParams() + .getMeasures().get(0); + for (Measure measure : measures) { + if (measure.getBizName().equalsIgnoreCase(firstMeasure.getBizName())) { + metricResp.setDefaultAgg(measure.getAgg()); + break; + } + } + } + @Override public QueryStructReq convert(QueryMetricReq queryMetricReq) { //1. If a domainId exists, the modelIds obtained from the domainId. diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java index cca188ffe..e86fe47ff 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java @@ -178,7 +178,7 @@ public class SchemaServiceImpl implements SchemaService { metaFilter.setIds(modelIds); List modelResps = modelService.getModelList(metaFilter); - + metricService.batchFillMetricDefaultAgg(metricResps, modelResps); TagFilter tagFilter = new TagFilter(); tagFilter.setModelIds(modelIds);