mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +00:00
(improvement)(Headless) Obtain metric default agg (#984)
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user