(improvement)(chat) If no partition date is configured, remove the date passed from the frontend. (#1547)

This commit is contained in:
lexluo09
2024-08-09 20:23:14 +08:00
committed by GitHub
parent ecc651e12d
commit e586d887ed
3 changed files with 28 additions and 6 deletions

View File

@@ -12,10 +12,13 @@ public class ModelCluster {
private static final String split = "_";
private Set<Long> modelIds = new LinkedHashSet<>();
private String key;
public static ModelCluster build(Set<Long> modelIds) {
private boolean containsPartitionDimensions;
public static ModelCluster build(Set<Long> modelIds, Boolean containsPartitionDimensions) {
ModelCluster modelCluster = new ModelCluster();
modelCluster.setModelIds(modelIds);
modelCluster.setKey(StringUtils.join(modelIds, split));
modelCluster.setContainsPartitionDimensions(containsPartitionDimensions);
return modelCluster;
}
}

View File

@@ -13,6 +13,7 @@ import com.tencent.supersonic.common.pojo.Aggregator;
import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.common.pojo.DataEvent;
import com.tencent.supersonic.common.pojo.DataItem;
import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.common.pojo.Filter;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.common.pojo.enums.EventType;
@@ -750,6 +751,9 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
if (modelCluster == null) {
throw new IllegalArgumentException("Invalid input parameters, unable to obtain valid metrics");
}
if (!modelCluster.isContainsPartitionDimensions()) {
queryMetricReq.setDateInfo(null);
}
//4. set groups
List<String> dimensionBizNames = dimensionResps.stream()
.filter(entry -> modelCluster.getModelIds().contains(entry.getModelId()))
@@ -759,8 +763,9 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
.map(SchemaItem::getBizName).collect(Collectors.toList());
QueryStructReq queryStructReq = new QueryStructReq();
if (queryMetricReq.getDateInfo().isGroupByDate()) {
queryStructReq.getGroups().add(queryMetricReq.getDateInfo().getGroupByTimeDimension());
DateConf dateInfo = queryMetricReq.getDateInfo();
if (Objects.nonNull(dateInfo) && dateInfo.isGroupByDate()) {
queryStructReq.getGroups().add(dateInfo.getGroupByTimeDimension());
}
if (!CollectionUtils.isEmpty(dimensionBizNames)) {
queryStructReq.getGroups().addAll(dimensionBizNames);
@@ -795,7 +800,7 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
}
queryStructReq.setDimensionFilters(filters);
//7. set dateInfo
queryStructReq.setDateInfo(queryMetricReq.getDateInfo());
queryStructReq.setDateInfo(dateInfo);
return queryStructReq;
}

View File

@@ -5,10 +5,13 @@ import com.tencent.supersonic.common.util.ContextUtils;
import com.tencent.supersonic.headless.api.pojo.response.ModelSchemaResp;
import com.tencent.supersonic.headless.server.pojo.ModelCluster;
import com.tencent.supersonic.headless.server.service.SchemaService;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -29,12 +32,23 @@ public class ModelClusterBuilder {
modelClusters.add(modelCluster);
}
}
return modelClusters.stream().map(ModelCluster::build)
return modelClusters.stream()
.map(modelCluster -> getModelCluster(modelIdToModelSchema, modelCluster))
.collect(Collectors.toMap(ModelCluster::getKey, value -> value, (k1, k2) -> k1));
}
private static ModelCluster getModelCluster(Map<Long, ModelSchemaResp> modelIdToModelSchema, Set<Long> modelIds) {
boolean containsPartitionDimensions = modelIds.stream()
.map(modelIdToModelSchema::get)
.filter(Objects::nonNull)
.anyMatch(modelSchemaResp -> CollectionUtils.isNotEmpty(modelSchemaResp.getTimeDimension()));
return ModelCluster.build(modelIds, containsPartitionDimensions);
}
private static void dfs(ModelSchemaResp model, Map<Long, ModelSchemaResp> modelMap,
Set<Long> visited, Set<Long> modelCluster) {
Set<Long> visited, Set<Long> modelCluster) {
visited.add(model.getId());
modelCluster.add(model.getId());
for (Long neighborId : model.getModelClusterSet()) {