mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
(improvement)(chat) If no partition date is configured, remove the date passed from the frontend. (#1547)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user