Repository: kylin
Updated Branches:
  refs/heads/2.0.x 071ce90e5 -> 68f2d39b1


KYLIN-2543 Still build dictionary for TopN group, fix IT


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/68f2d39b
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/68f2d39b
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/68f2d39b

Branch: refs/heads/2.0.x
Commit: 68f2d39b19754246373a3c5a57dcaf6c4d6d3011
Parents: 071ce90
Author: shaofengshi <shaofeng...@apache.org>
Authored: Fri Apr 14 10:32:48 2017 +0800
Committer: shaofengshi <shaofeng...@apache.org>
Committed: Fri Apr 14 10:32:55 2017 +0800

----------------------------------------------------------------------
 .../metadata/measure/TopNMeasureTypeTest.java   |  2 +-
 .../kylin/measure/topn/TopNMeasureType.java     | 32 +++++++++++++++-----
 2 files changed, 26 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/68f2d39b/core-cube/src/test/java/org/apache/kylin/metadata/measure/TopNMeasureTypeTest.java
----------------------------------------------------------------------
diff --git 
a/core-cube/src/test/java/org/apache/kylin/metadata/measure/TopNMeasureTypeTest.java
 
b/core-cube/src/test/java/org/apache/kylin/metadata/measure/TopNMeasureTypeTest.java
index 593eb6e..f04c742 100644
--- 
a/core-cube/src/test/java/org/apache/kylin/metadata/measure/TopNMeasureTypeTest.java
+++ 
b/core-cube/src/test/java/org/apache/kylin/metadata/measure/TopNMeasureTypeTest.java
@@ -69,7 +69,7 @@ public class TopNMeasureTypeTest extends 
LocalFileMetadataTestCase {
         assertTrue(colsNeedDict != null && colsNeedDict.size() == 1);
 
         TblColRef sellerColRef = 
topSellerMeasure.getFunction().getParameter().getColRefs().get(1);
-        
topSellerMeasure.getFunction().getConfiguration().put(TopNMeasureType.CONFIG_ENCODING_PREFIX
 + sellerColRef.getName(), "int:6");
+        
topSellerMeasure.getFunction().getConfiguration().put(TopNMeasureType.CONFIG_ENCODING_PREFIX
 + sellerColRef.getIdentity(), "int:6");
         colsNeedDict = 
measureType.getColumnsNeedDictionary(topSellerMeasure.getFunction());
 
         assertTrue(colsNeedDict.size() == 0);

http://git-wip-us.apache.org/repos/asf/kylin/blob/68f2d39b/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 f90aab2..f936cb8 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
@@ -27,6 +27,7 @@ import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.util.ByteArray;
 import org.apache.kylin.common.util.Dictionary;
+import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.dimension.DateDimEnc;
 import org.apache.kylin.dimension.DictionaryDimEnc;
 import org.apache.kylin.dimension.DimensionEncoding;
@@ -221,11 +222,7 @@ public class TopNMeasureType extends 
MeasureType<TopNCounter<ByteArray>> {
         int start = (functionDesc.getParameter().isColumnType() == true) ? 1 : 
0;
         for (int i = start; i < allCols.size(); i++) {
             TblColRef tblColRef = allCols.get(i);
-            String encoding = 
functionDesc.getConfiguration().get(CONFIG_ENCODING_PREFIX + 
tblColRef.getIdentity());
-            if (StringUtils.isEmpty(encoding)) {
-                // for backward compatibility
-                encoding = 
functionDesc.getConfiguration().get(CONFIG_ENCODING_PREFIX + 
tblColRef.getName());
-            }
+            String encoding = getEncoding(functionDesc, tblColRef).getFirst();
             if (StringUtils.isEmpty(encoding) || 
DictionaryDimEnc.ENCODING_NAME.equals(encoding)) {
                 columnsNeedDict.add(tblColRef);
             }
@@ -415,8 +412,10 @@ public class TopNMeasureType extends 
MeasureType<TopNCounter<ByteArray>> {
         final DimensionEncoding[] dimensionEncodings = new 
DimensionEncoding[literalCols.size()];
         for (int i = 0; i < literalCols.size(); i++) {
             TblColRef colRef = literalCols.get(i);
-            String encoding = 
function.getConfiguration().get(TopNMeasureType.CONFIG_ENCODING_PREFIX + 
colRef.getName());
-            String encodingVersionStr = 
function.getConfiguration().get(TopNMeasureType.CONFIG_ENCODING_VERSION_PREFIX 
+ colRef.getName());
+
+            Pair<String, String> topNEncoding = 
TopNMeasureType.getEncoding(function, colRef);
+            String encoding = topNEncoding.getFirst();
+            String encodingVersionStr = topNEncoding.getSecond();
             if (StringUtils.isEmpty(encoding) || 
DictionaryDimEnc.ENCODING_NAME.equals(encoding)) {
                 dimensionEncodings[i] = new 
DictionaryDimEnc(dictionaryMap.get(colRef));
             } else {
@@ -460,4 +459,23 @@ public class TopNMeasureType extends 
MeasureType<TopNCounter<ByteArray>> {
         return FUNC_TOP_N.equalsIgnoreCase(functionDesc.getExpression());
     }
 
+
+    /**
+     * Get the encoding name and version for the given col from Measure 
FunctionDesc
+     * @param functionDesc
+     * @param tblColRef
+     * @return a pair of the encoding name and encoding version
+     */
+    public static final Pair<String, String> getEncoding(FunctionDesc 
functionDesc, TblColRef tblColRef) {
+        String encoding = 
functionDesc.getConfiguration().get(CONFIG_ENCODING_PREFIX + 
tblColRef.getIdentity());
+        String encodingVersion 
=functionDesc.getConfiguration().get(CONFIG_ENCODING_VERSION_PREFIX + 
tblColRef.getIdentity());
+        if (StringUtils.isEmpty(encoding)) {
+            // for backward compatibility
+            encoding = 
functionDesc.getConfiguration().get(CONFIG_ENCODING_PREFIX + 
tblColRef.getName());
+            encodingVersion 
=functionDesc.getConfiguration().get(CONFIG_ENCODING_VERSION_PREFIX + 
tblColRef.getName());
+        }
+
+        return new Pair<>(encoding, encodingVersion);
+    }
+
 }

Reply via email to