[fix][heaadless]Avoid duplicate semantic fields in modelDetail.
Some checks failed
supersonic CentOS CI / build (21) (push) Has been cancelled
supersonic mac CI / build (21) (push) Has been cancelled
supersonic ubuntu CI / build (21) (push) Has been cancelled
supersonic windows CI / build (21) (push) Has been cancelled

This commit is contained in:
jerryjzhang
2025-05-17 16:43:15 +08:00
parent 08705c9d3b
commit 00814a3807
3 changed files with 45 additions and 15 deletions

View File

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

View File

@@ -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) {

View File

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