mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +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 double similarity;
|
||||||
|
|
||||||
|
private String defaultAgg;
|
||||||
|
|
||||||
public void setClassifications(String tag) {
|
public void setClassifications(String tag) {
|
||||||
if (StringUtils.isBlank(tag)) {
|
if (StringUtils.isBlank(tag)) {
|
||||||
classifications = Lists.newArrayList();
|
classifications = Lists.newArrayList();
|
||||||
@@ -92,14 +94,6 @@ public class MetricResp extends SchemaItem {
|
|||||||
return relateDimension.getDrillDownDimensions();
|
return relateDimension.getDrillDownDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDefaultAgg() {
|
|
||||||
if (metricDefineByMeasureParams != null
|
|
||||||
&& CollectionUtils.isNotEmpty(metricDefineByMeasureParams.getMeasures())) {
|
|
||||||
return metricDefineByMeasureParams.getMeasures().get(0).getAgg();
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getExpr() {
|
public String getExpr() {
|
||||||
if (MetricDefineType.MEASURE.equals(metricDefineType)) {
|
if (MetricDefineType.MEASURE.equals(metricDefineType)) {
|
||||||
return metricDefineByMeasureParams.getExpr();
|
return metricDefineByMeasureParams.getExpr();
|
||||||
|
|||||||
@@ -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.QueryMetricReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
|
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.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.MetaFilter;
|
||||||
import com.tencent.supersonic.headless.server.pojo.MetricsFilter;
|
import com.tencent.supersonic.headless.server.pojo.MetricsFilter;
|
||||||
|
|
||||||
@@ -65,6 +66,8 @@ public interface MetricService {
|
|||||||
|
|
||||||
List<MetricResp> queryMetrics(MetricsFilter metricsFilter);
|
List<MetricResp> queryMetrics(MetricsFilter metricsFilter);
|
||||||
|
|
||||||
|
void batchFillMetricDefaultAgg(List<MetricResp> metricResps, List<ModelResp> modelResps);
|
||||||
|
|
||||||
QueryStructReq convert(QueryMetricReq queryMetricReq);
|
QueryStructReq convert(QueryMetricReq queryMetricReq);
|
||||||
|
|
||||||
DataEvent getDataEvent();
|
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.BeanMapper;
|
||||||
import com.tencent.supersonic.common.util.ChatGptHelper;
|
import com.tencent.supersonic.common.util.ChatGptHelper;
|
||||||
import com.tencent.supersonic.headless.api.pojo.DrillDownDimension;
|
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.MeasureParam;
|
||||||
import com.tencent.supersonic.headless.api.pojo.MetricParam;
|
import com.tencent.supersonic.headless.api.pojo.MetricParam;
|
||||||
import com.tencent.supersonic.headless.api.pojo.MetricQueryDefaultConfig;
|
import com.tencent.supersonic.headless.api.pojo.MetricQueryDefaultConfig;
|
||||||
@@ -174,7 +175,7 @@ public class MetricServiceImpl implements MetricService {
|
|||||||
DataItem dataItem = getDataItem(metricDO);
|
DataItem dataItem = getDataItem(metricDO);
|
||||||
dataItem.setName(oldName);
|
dataItem.setName(oldName);
|
||||||
dataItem.setNewName(metricDO.getName());
|
dataItem.setNewName(metricDO.getName());
|
||||||
sendEvent(getDataItem(metricDO), EventType.UPDATE);
|
sendEvent(dataItem, EventType.UPDATE);
|
||||||
}
|
}
|
||||||
return MetricConverter.convert2MetricResp(metricDO);
|
return MetricConverter.convert2MetricResp(metricDO);
|
||||||
}
|
}
|
||||||
@@ -688,12 +689,46 @@ public class MetricServiceImpl implements MetricService {
|
|||||||
private DataItem getDataItem(MetricDO metricDO) {
|
private DataItem getDataItem(MetricDO metricDO) {
|
||||||
MetricResp metricResp = MetricConverter.convert2MetricResp(metricDO,
|
MetricResp metricResp = MetricConverter.convert2MetricResp(metricDO,
|
||||||
new HashMap<>(), Lists.newArrayList());
|
new HashMap<>(), Lists.newArrayList());
|
||||||
|
fillDefaultAgg(metricResp);
|
||||||
return DataItem.builder().id(metricDO.getId() + Constants.UNDERLINE).name(metricDO.getName())
|
return DataItem.builder().id(metricDO.getId() + Constants.UNDERLINE).name(metricDO.getName())
|
||||||
.bizName(metricDO.getBizName())
|
.bizName(metricDO.getBizName())
|
||||||
.modelId(metricDO.getModelId() + Constants.UNDERLINE)
|
.modelId(metricDO.getModelId() + Constants.UNDERLINE)
|
||||||
.type(TypeEnums.METRIC).defaultAgg(metricResp.getDefaultAgg()).build();
|
.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
|
@Override
|
||||||
public QueryStructReq convert(QueryMetricReq queryMetricReq) {
|
public QueryStructReq convert(QueryMetricReq queryMetricReq) {
|
||||||
//1. If a domainId exists, the modelIds obtained from the domainId.
|
//1. If a domainId exists, the modelIds obtained from the domainId.
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ public class SchemaServiceImpl implements SchemaService {
|
|||||||
|
|
||||||
metaFilter.setIds(modelIds);
|
metaFilter.setIds(modelIds);
|
||||||
List<ModelResp> modelResps = modelService.getModelList(metaFilter);
|
List<ModelResp> modelResps = modelService.getModelList(metaFilter);
|
||||||
|
metricService.batchFillMetricDefaultAgg(metricResps, modelResps);
|
||||||
TagFilter tagFilter = new TagFilter();
|
TagFilter tagFilter = new TagFilter();
|
||||||
tagFilter.setModelIds(modelIds);
|
tagFilter.setModelIds(modelIds);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user