add metadata for index Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/96bd3c45 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/96bd3c45 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/96bd3c45
Branch: refs/heads/master Commit: 96bd3c455ffb2fd37466bd4cfc0ce9a5866925d3 Parents: 1d4c7bb Author: shaofengshi <[email protected]> Authored: Wed Apr 13 18:13:28 2016 +0800 Committer: shaofengshi <[email protected]> Committed: Wed Apr 13 18:14:26 2016 +0800 ---------------------------------------------------------------------- .../apache/kylin/cube/model/RowKeyColDesc.java | 9 +++++++ .../org/apache/kylin/cube/model/RowKeyDesc.java | 27 ++++++++++++++++---- .../test_kylin_cube_without_slr_desc.json | 15 +++++++---- 3 files changed, 41 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/96bd3c45/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyColDesc.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyColDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyColDesc.java index dd7d61f..fa8fce8 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyColDesc.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyColDesc.java @@ -43,6 +43,8 @@ public class RowKeyColDesc { private String encoding; @JsonProperty("isShardBy") private boolean isShardBy;//usually it is ultra high cardinality column, shard by such column can reduce the agg cache for each shard + @JsonProperty("index") + private String index; // computed private String encodingName; @@ -117,6 +119,13 @@ public class RowKeyColDesc { this.colRef = colRef; } + public String getIndex() { + return index; + } + + public void setIndex(String index) { + this.index = index; + } @Override public String toString() { return Objects.toStringHelper(this).add("column", column).add("encoding", encoding).toString(); http://git-wip-us.apache.org/repos/asf/kylin/blob/96bd3c45/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java index c3751df..cf7d731 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java @@ -18,12 +18,10 @@ package org.apache.kylin.cube.model; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; +import org.apache.commons.lang.ArrayUtils; +import org.apache.kylin.dimension.DictionaryDimEnc; import org.apache.kylin.metadata.model.TblColRef; import com.fasterxml.jackson.annotation.JsonAutoDetect; @@ -44,6 +42,7 @@ public class RowKeyDesc { private CubeDesc cubeDesc; private Map<TblColRef, RowKeyColDesc> columnMap; private Set<TblColRef> shardByColumns; + private int[] columnsNeedIndex; public RowKeyColDesc[] getRowKeyColumns() { return rowkeyColumns; @@ -78,6 +77,18 @@ public class RowKeyDesc { Map<String, TblColRef> colNameAbbr = cubeDesc.buildColumnNameAbbreviation(); buildRowKey(colNameAbbr); + + int[] tmp = new int[100]; + int x = 0; + for (int i = 0, n = rowkeyColumns.length; i < n; i++) { + if ("true".equalsIgnoreCase(rowkeyColumns[i].getIndex()) + && DictionaryDimEnc.ENCODING_NAME.equalsIgnoreCase(rowkeyColumns[i].getEncoding())) { + tmp[x] = i; + x++; + } + } + + columnsNeedIndex = ArrayUtils.subarray(tmp, 0, x); } public void setRowkeyColumns(RowKeyColDesc[] rowkeyColumns) { @@ -118,8 +129,14 @@ public class RowKeyDesc { } } + public long getFullMask() { return this.fullMask; } + public int[] getColumnsNeedIndex() { + return columnsNeedIndex; + + } + } http://git-wip-us.apache.org/repos/asf/kylin/blob/96bd3c45/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json ---------------------------------------------------------------------- diff --git a/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json b/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json index e1d740a..9f6ce7f 100644 --- a/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json +++ b/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_desc.json @@ -214,23 +214,28 @@ "rowkey_columns": [ { "column": "cal_dt", - "encoding": "dict" + "encoding": "dict", + "index": "true" }, { "column": "leaf_categ_id", - "encoding": "dict" + "encoding": "dict", + "index": "true" }, { "column": "meta_categ_name", - "encoding": "dict" + "encoding": "dict", + "index": "true" }, { "column": "categ_lvl2_name", - "encoding": "dict" + "encoding": "dict", + "index": "true" }, { "column": "categ_lvl3_name", - "encoding": "dict" + "encoding": "dict", + "index": "true" }, { "column": "lstg_format_name",
