mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 13:07:32 +00:00
(improvement)(chat) The rules will uniformly use 'data date' and exclude data partition dimensions for dimension pushdown. (#1598)
This commit is contained in:
@@ -53,9 +53,12 @@ public class QueryReqBuilder {
|
||||
queryStructReq.setMetricFilters(metricFilters);
|
||||
|
||||
addDateDimension(parseInfo);
|
||||
List<String> dimensions = parseInfo.getDimensions().stream().map(SchemaElement::getBizName)
|
||||
.collect(Collectors.toList());
|
||||
queryStructReq.setGroups(dimensions);
|
||||
|
||||
if (isDateFieldAlreadyPresent(parseInfo, getDateField(parseInfo.getDateInfo()))) {
|
||||
parseInfo.getDimensions().removeIf(schemaElement -> schemaElement.containsPartitionTime());
|
||||
}
|
||||
queryStructReq.setGroups(parseInfo.getDimensions().stream().map(SchemaElement::getBizName)
|
||||
.collect(Collectors.toList()));
|
||||
queryStructReq.setLimit(parseInfo.getLimit());
|
||||
// only one metric is queried at once
|
||||
Set<SchemaElement> metrics = parseInfo.getMetrics();
|
||||
@@ -212,8 +215,7 @@ public class QueryReqBuilder {
|
||||
|
||||
private static boolean isDateFieldAlreadyPresent(SemanticParseInfo parseInfo, String dateField) {
|
||||
return parseInfo.getDimensions().stream()
|
||||
.anyMatch(dimension -> dimension.getBizName().equalsIgnoreCase(dateField)
|
||||
|| dimension.containsPartitionTime());
|
||||
.anyMatch(dimension -> dimension.getBizName().equalsIgnoreCase(dateField));
|
||||
}
|
||||
|
||||
private static void addDimension(SemanticParseInfo parseInfo, SchemaElement dimension) {
|
||||
|
||||
Reference in New Issue
Block a user