You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2016/11/02 08:10:19 UTC
kylin git commit: KYLIN-2024 kylin TopN only support the first measure
Repository: kylin
Updated Branches:
refs/heads/yang21 f522e2bfe -> 37fbf0c1e
KYLIN-2024 kylin TopN only support the first measure
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/37fbf0c1
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/37fbf0c1
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/37fbf0c1
Branch: refs/heads/yang21
Commit: 37fbf0c1e22160b4da6ab88d59507a5e887d187c
Parents: f522e2b
Author: shaofengshi <sh...@apache.org>
Authored: Wed Nov 2 13:20:10 2016 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Wed Nov 2 16:07:13 2016 +0800
----------------------------------------------------------------------
.../kylin/measure/topn/TopNMeasureType.java | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/37fbf0c1/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
index 12343b3..3974a4f 100644
--- a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
+++ b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
@@ -39,8 +39,8 @@ import org.apache.kylin.metadata.datatype.DataTypeSerializer;
import org.apache.kylin.metadata.model.FunctionDesc;
import org.apache.kylin.metadata.model.MeasureDesc;
import org.apache.kylin.metadata.model.TblColRef;
-import org.apache.kylin.metadata.realization.SQLDigest;
import org.apache.kylin.metadata.realization.CapabilityResult.CapabilityInfluence;
+import org.apache.kylin.metadata.realization.SQLDigest;
import org.apache.kylin.metadata.tuple.Tuple;
import org.apache.kylin.metadata.tuple.TupleInfo;
import org.slf4j.Logger;
@@ -312,15 +312,16 @@ public class TopNMeasureType extends MeasureType<TopNCounter<ByteArray>> {
@Override
public void adjustSqlDigest(List<MeasureDesc> measureDescs, SQLDigest sqlDigest) {
+ if (sqlDigest.aggregations.size() > 1) {
+ return;
+ }
+
for (MeasureDesc measureDesc : measureDescs) {
FunctionDesc topnFunc = measureDesc.getFunction();
List<TblColRef> topnLiteralCol = getTopNLiteralColumn(topnFunc);
- if (sqlDigest.groupbyColumns.containsAll(topnLiteralCol) == false)
- return;
-
- if (sqlDigest.aggregations.size() > 1) {
- return;
+ if (sqlDigest.groupbyColumns.containsAll(topnLiteralCol) == false) {
+ continue;
}
if (sqlDigest.aggregations.size() > 0) {
@@ -329,12 +330,18 @@ public class TopNMeasureType extends MeasureType<TopNCounter<ByteArray>> {
logger.warn("When query with topN, only SUM/Count function is allowed.");
return;
}
+
+ if (isTopNCompatibleSum(measureDesc.getFunction(), origFunc) == false) {
+ continue;
+ }
+
logger.info("Rewrite function " + origFunc + " to " + topnFunc);
}
sqlDigest.aggregations = Lists.newArrayList(topnFunc);
sqlDigest.groupbyColumns.removeAll(topnLiteralCol);
sqlDigest.metricColumns.addAll(topnLiteralCol);
+ break;
}
}