mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
[fix][heaadless]Avoid duplicate semantic fields in modelDetail.
This commit is contained in:
@@ -439,9 +439,8 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
|
|||||||
metricFilter.setBizName(bizName);
|
metricFilter.setBizName(bizName);
|
||||||
metricFilter.setModelIds(Lists.newArrayList(modelId));
|
metricFilter.setModelIds(Lists.newArrayList(modelId));
|
||||||
List<MetricResp> metricResps = getMetrics(metricFilter);
|
List<MetricResp> metricResps = getMetrics(metricFilter);
|
||||||
MetricResp metricResp = null;
|
|
||||||
if (CollectionUtils.isEmpty(metricResps)) {
|
if (CollectionUtils.isEmpty(metricResps)) {
|
||||||
return metricResp;
|
return null;
|
||||||
}
|
}
|
||||||
return metricResps.get(0);
|
return metricResps.get(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,12 +241,28 @@ public class ModelServiceImpl implements ModelService {
|
|||||||
|
|
||||||
private void batchCreateDimension(ModelDO modelDO, User user) throws Exception {
|
private void batchCreateDimension(ModelDO modelDO, User user) throws Exception {
|
||||||
List<DimensionReq> dimensionReqs = ModelConverter.convertDimensionList(modelDO);
|
List<DimensionReq> dimensionReqs = ModelConverter.convertDimensionList(modelDO);
|
||||||
dimensionService.createDimensionBatch(dimensionReqs, user);
|
List<DimensionReq> dimensionToCreate = new ArrayList<>();
|
||||||
|
for (DimensionReq dimensionReq : dimensionReqs) {
|
||||||
|
DimensionResp dimensionResp =
|
||||||
|
dimensionService.getDimension(dimensionReq.getBizName(), modelDO.getId());
|
||||||
|
if (dimensionResp == null) {
|
||||||
|
dimensionToCreate.add(dimensionReq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dimensionService.createDimensionBatch(dimensionToCreate, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void batchCreateMetric(ModelDO modelDO, User user) throws Exception {
|
private void batchCreateMetric(ModelDO modelDO, User user) throws Exception {
|
||||||
List<MetricReq> metricReqs = ModelConverter.convertMetricList(modelDO);
|
List<MetricReq> metricReqs = ModelConverter.convertMetricList(modelDO);
|
||||||
metricService.createMetricBatch(metricReqs, user);
|
List<MetricReq> metricToCreate = new ArrayList<>();
|
||||||
|
for (MetricReq metricReq : metricReqs) {
|
||||||
|
MetricResp metricResp =
|
||||||
|
metricService.getMetric(modelDO.getId(), metricReq.getBizName());
|
||||||
|
if (metricResp == null) {
|
||||||
|
metricToCreate.add(metricReq);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
metricService.createMetricBatch(metricToCreate, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkParams(ModelReq modelReq) {
|
private void checkParams(ModelReq modelReq) {
|
||||||
|
|||||||
@@ -164,19 +164,34 @@ public class ModelConverter {
|
|||||||
fields.add(new Field(semanticColumn.getColumnName(), semanticColumn.getDataType()));
|
fields.add(new Field(semanticColumn.getColumnName(), semanticColumn.getDataType()));
|
||||||
|
|
||||||
if (getIdentifyType(fieldType) != null) {
|
if (getIdentifyType(fieldType) != null) {
|
||||||
Identify identify = new Identify(semanticColumn.getName(),
|
Optional<Identify> optional = modelDetail.getIdentifiers().stream().filter(
|
||||||
getIdentifyType(fieldType).name(), semanticColumn.getColumnName(), 1);
|
identify -> identify.getBizName().equals(semanticColumn.getColumnName()))
|
||||||
modelDetail.getIdentifiers().add(identify);
|
.findAny();
|
||||||
|
if (optional.isEmpty()) {
|
||||||
|
Identify identify = new Identify(semanticColumn.getName(),
|
||||||
|
getIdentifyType(fieldType).name(), semanticColumn.getColumnName(), 1);
|
||||||
|
modelDetail.getIdentifiers().add(identify);
|
||||||
|
}
|
||||||
} else if (FieldType.measure.equals(fieldType)) {
|
} else if (FieldType.measure.equals(fieldType)) {
|
||||||
Measure measure = new Measure(semanticColumn.getName(),
|
Optional<Measure> optional = modelDetail.getMeasures().stream().filter(
|
||||||
semanticColumn.getColumnName(), semanticColumn.getExpr(),
|
measure -> measure.getBizName().equals(semanticColumn.getColumnName()))
|
||||||
semanticColumn.getAgg().getOperator(), semanticColumn.getUnit(), 1);
|
.findAny();
|
||||||
modelDetail.getMeasures().add(measure);
|
if (optional.isEmpty()) {
|
||||||
|
Measure measure = new Measure(semanticColumn.getName(),
|
||||||
|
semanticColumn.getColumnName(), semanticColumn.getExpr(),
|
||||||
|
semanticColumn.getAgg().getOperator(), semanticColumn.getUnit(), 1);
|
||||||
|
modelDetail.getMeasures().add(measure);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Dimension dim = new Dimension(semanticColumn.getName(),
|
Optional<Dimension> optional = modelDetail.getDimensions().stream().filter(
|
||||||
semanticColumn.getColumnName(), semanticColumn.getExpr(),
|
dimension -> dimension.getBizName().equals(semanticColumn.getColumnName()))
|
||||||
DimensionType.valueOf(semanticColumn.getFiledType().name()), 1);
|
.findAny();
|
||||||
modelDetail.getDimensions().add(dim);
|
if (optional.isEmpty()) {
|
||||||
|
Dimension dim = new Dimension(semanticColumn.getName(),
|
||||||
|
semanticColumn.getColumnName(), semanticColumn.getExpr(),
|
||||||
|
DimensionType.valueOf(semanticColumn.getFiledType().name()), 1);
|
||||||
|
modelDetail.getDimensions().add(dim);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
modelDetail.setFields(fields);
|
modelDetail.setFields(fields);
|
||||||
|
|||||||
Reference in New Issue
Block a user