(improvement)(Headless) Obtain metric default agg (#984)

This commit is contained in:
LXW
2024-05-11 18:03:40 +08:00
committed by GitHub
parent fb465b74f3
commit 623203888b
5 changed files with 43 additions and 11 deletions

View File

@@ -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();

View File

@@ -84,7 +84,7 @@ public class ModelController {
@GetMapping("/getAllModelByDomainId")
public List<ModelResp> getAllModelByDomainId(@RequestParam("domainId") Long domainId) {
return modelService.getAllModelByDomainIds(Lists.newArrayList(domainId));
return modelService.getAllModelByDomainIds(Lists.newArrayList(domainId));
}
@GetMapping("/getModelDatabase/{modelId}")

View File

@@ -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<MetricResp> queryMetrics(MetricsFilter metricsFilter);
void batchFillMetricDefaultAgg(List<MetricResp> metricResps, List<ModelResp> modelResps);
QueryStructReq convert(QueryMetricReq queryMetricReq);
DataEvent getDataEvent();

View File

@@ -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<MetricResp> metricResps, List<ModelResp> modelResps) {
Map<Long, ModelResp> 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<Measure> 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.

View File

@@ -178,7 +178,7 @@ public class SchemaServiceImpl implements SchemaService {
metaFilter.setIds(modelIds);
List<ModelResp> modelResps = modelService.getModelList(metaFilter);
metricService.batchFillMetricDefaultAgg(metricResps, modelResps);
TagFilter tagFilter = new TagFilter();
tagFilter.setModelIds(modelIds);