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",

Reply via email to