(improvement)(chat) The rules will uniformly use 'data date' and exclude data partition dimensions for dimension pushdown. (#1598)

This commit is contained in:
lexluo09
2024-08-23 17:38:04 +08:00
committed by GitHub
parent 59c50176c5
commit 371e2f1e05
5 changed files with 33 additions and 60 deletions

View File

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