You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ka...@apache.org on 2017/04/17 13:01:15 UTC
[2/7] kylin git commit: KYLIN-2543 Still build dictionary for TopN
group, fix IT
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/75d50ae9
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/75d50ae9
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/75d50ae9
Branch: refs/heads/KYLIN-2506
Commit: 75d50ae97a5ee877acace8cb0e8b4557013b3702
Parents: 821f59b
Author: shaofengshi <sh...@apache.org>
Authored: Fri Apr 14 10:32:48 2017 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Fri Apr 14 10:33:20 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/75d50ae9/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/75d50ae9/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);
+ }
+
}