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:44:38 UTC
[25/33] kylin git commit: KYLIN-2024 kylin TopN only support the
first measure
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/1d8e8e53
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1d8e8e53
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1d8e8e53
Branch: refs/heads/v1.6.0-rc1-cdh5.7
Commit: 1d8e8e5389dae3960d9540dea68321a0f8b0cfb8
Parents: eaaaf2f
Author: shaofengshi <sh...@apache.org>
Authored: Wed Nov 2 13:20:10 2016 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Wed Nov 2 13:42:06 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/1d8e8e53/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 8c98672..7e788e4 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;
@@ -307,15 +307,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) {
@@ -324,12 +325,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;
}
}