mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +00:00
Co-authored-by: lxwcodemonkey
This commit is contained in:
@@ -8,16 +8,15 @@ import com.tencent.supersonic.common.util.ContextUtils;
|
|||||||
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
|
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
|
||||||
import com.tencent.supersonic.headless.api.pojo.RelatedSchemaElement;
|
import com.tencent.supersonic.headless.api.pojo.RelatedSchemaElement;
|
||||||
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
|
||||||
|
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||||
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
import com.tencent.supersonic.headless.api.pojo.SemanticParseInfo;
|
||||||
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
|
import com.tencent.supersonic.headless.server.facade.service.SemanticLayerService;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DimensionRecommendProcessor recommend some dimensions related to metrics based on configuration
|
* DimensionRecommendProcessor recommend some dimensions related to metrics based on configuration
|
||||||
@@ -38,8 +37,7 @@ public class DimensionRecommendProcessor implements ExecuteResultProcessor {
|
|||||||
if (!firstMetric.isPresent()) {
|
if (!firstMetric.isPresent()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SchemaElement element = firstMetric.get();
|
List<SchemaElement> dimensionRecommended = getDimensions(firstMetric.get().getId(), dataSetId);
|
||||||
List<SchemaElement> dimensionRecommended = getDimensions(element.getId(), dataSetId);
|
|
||||||
queryResult.setRecommendedDimensions(dimensionRecommended);
|
queryResult.setRecommendedDimensions(dimensionRecommended);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,23 +47,16 @@ public class DimensionRecommendProcessor implements ExecuteResultProcessor {
|
|||||||
if (dataSetSchema == null) {
|
if (dataSetSchema == null) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
List<Long> drillDownDimensions = Lists.newArrayList();
|
SchemaElement metric = dataSetSchema.getElement(SchemaElementType.METRIC, metricId);
|
||||||
Set<SchemaElement> metricElements = dataSetSchema.getMetrics();
|
if (!CollectionUtils.isEmpty(metric.getRelatedSchemaElements())) {
|
||||||
if (!CollectionUtils.isEmpty(metricElements)) {
|
List<Long> drillDownDimensions = metric.getRelatedSchemaElements().stream()
|
||||||
Optional<SchemaElement> metric = metricElements.stream()
|
.map(RelatedSchemaElement::getDimensionId).collect(Collectors.toList());
|
||||||
.filter(schemaElement -> metricId.equals(schemaElement.getId())
|
return dataSetSchema.getDimensions().stream()
|
||||||
&& !CollectionUtils.isEmpty(schemaElement.getRelatedSchemaElements()))
|
.filter(dim -> filterDimension(drillDownDimensions, dim))
|
||||||
.findFirst();
|
.sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed())
|
||||||
if (metric.isPresent()) {
|
.limit(recommend_dimension_size).collect(Collectors.toList());
|
||||||
drillDownDimensions = metric.get().getRelatedSchemaElements().stream()
|
|
||||||
.map(RelatedSchemaElement::getDimensionId).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
final List<Long> drillDownDimensionsFinal = drillDownDimensions;
|
return Lists.newArrayList();
|
||||||
return dataSetSchema.getDimensions().stream()
|
|
||||||
.filter(dim -> filterDimension(drillDownDimensionsFinal, dim))
|
|
||||||
.sorted(Comparator.comparing(SchemaElement::getUseCnt).reversed())
|
|
||||||
.limit(recommend_dimension_size).collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean filterDimension(List<Long> drillDownDimensions, SchemaElement dimension) {
|
private boolean filterDimension(List<Long> drillDownDimensions, SchemaElement dimension) {
|
||||||
|
|||||||
Reference in New Issue
Block a user