You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2016/11/11 03:09:12 UTC
[2/5] kylin git commit: minor, refactor CubeJoinedFlatTableDesc
minor, refactor CubeJoinedFlatTableDesc
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/a6e2494d
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/a6e2494d
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/a6e2494d
Branch: refs/heads/yang21-cdh5.7
Commit: a6e2494df79a0e8801d9b9dd51a738b94e1f7d2d
Parents: 41cb52c
Author: Li Yang <li...@apache.org>
Authored: Fri Nov 11 10:47:29 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Nov 11 10:47:29 2016 +0800
----------------------------------------------------------------------
.../cube/model/CubeJoinedFlatTableDesc.java | 65 ++++++++++----------
1 file changed, 31 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/a6e2494d/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java
index 6ca89c8..50852eb 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java
@@ -30,6 +30,7 @@ import org.apache.kylin.metadata.model.ISegment;
import org.apache.kylin.metadata.model.MeasureDesc;
import org.apache.kylin.metadata.model.TblColRef;
+import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -37,14 +38,13 @@ import com.google.common.collect.Maps;
*/
public class CubeJoinedFlatTableDesc implements IJoinedFlatTableDesc {
- private String tableName;
- private final CubeDesc cubeDesc;
- private final CubeSegment cubeSegment;
-
- private int columnCount;
+ protected final String tableName;
+ protected final CubeDesc cubeDesc;
+ protected final CubeSegment cubeSegment;
+ private int columnCount = 0;
private List<TblColRef> columnList = Lists.newArrayList();
- private Map<TblColRef, Integer> columnIndexMap;
+ private Map<TblColRef, Integer> columnIndexMap = Maps.newHashMap();;
public CubeJoinedFlatTableDesc(CubeDesc cubeDesc) {
this(cubeDesc, null);
@@ -57,23 +57,34 @@ public class CubeJoinedFlatTableDesc implements IJoinedFlatTableDesc {
private CubeJoinedFlatTableDesc(CubeDesc cubeDesc, CubeSegment cubeSegment /* can be null */) {
this.cubeDesc = cubeDesc;
this.cubeSegment = cubeSegment;
- this.columnIndexMap = Maps.newHashMap();
- parseCubeDesc();
+ this.tableName = makeTableName(cubeDesc, cubeSegment);
+ initParseCubeDesc();
}
- // check what columns from hive tables are required, and index them
- private void parseCubeDesc() {
+ protected String makeTableName(CubeDesc cubeDesc, CubeSegment cubeSegment) {
if (cubeSegment == null) {
- this.tableName = "kylin_intermediate_" + cubeDesc.getName();
+ return "kylin_intermediate_" + cubeDesc.getName();
} else {
- this.tableName = "kylin_intermediate_" + cubeDesc.getName() + "_" + cubeSegment.getUuid().replaceAll("-", "_");
+ return "kylin_intermediate_" + cubeDesc.getName() + "_" + cubeSegment.getUuid().replaceAll("-", "_");
}
-
- int columnIndex = 0;
+ }
+
+ protected final void initAddColumn(TblColRef col) {
+ if (columnIndexMap.containsKey(col))
+ return;
+
+ int columnIndex = columnIndexMap.size();
+ columnIndexMap.put(col, columnIndex);
+ columnList.add(col);
+ columnCount = columnIndexMap.size();
+
+ Preconditions.checkState(columnIndexMap.size() == columnList.size());
+ }
+
+ // check what columns from hive tables are required, and index them
+ protected void initParseCubeDesc() {
for (TblColRef col : cubeDesc.listDimensionColumnsExcludingDerived(false)) {
- columnIndexMap.put(col, columnIndex);
- columnList.add(col);
- columnIndex++;
+ initAddColumn(col);
}
List<MeasureDesc> measures = cubeDesc.getMeasures();
@@ -84,11 +95,7 @@ public class CubeJoinedFlatTableDesc implements IJoinedFlatTableDesc {
if (colRefs != null) {
for (int j = 0; j < colRefs.size(); j++) {
TblColRef c = colRefs.get(j);
- if (columnList.indexOf(c) < 0) {
- columnIndexMap.put(c, columnIndex);
- columnList.add(c);
- columnIndex++;
- }
+ initAddColumn(c);
}
}
}
@@ -96,23 +103,13 @@ public class CubeJoinedFlatTableDesc implements IJoinedFlatTableDesc {
if (cubeDesc.getDictionaries() != null) {
for (DictionaryDesc dictDesc : cubeDesc.getDictionaries()) {
TblColRef c = dictDesc.getColumnRef();
- if (columnList.indexOf(c) < 0) {
- columnIndexMap.put(c, columnIndex);
- columnList.add(c);
- columnIndex++;
- }
+ initAddColumn(c);
if (dictDesc.getResuseColumnRef() != null) {
c = dictDesc.getResuseColumnRef();
- if (columnList.indexOf(c) < 0) {
- columnIndexMap.put(c, columnIndex);
- columnList.add(c);
- columnIndex++;
- }
+ initAddColumn(c);
}
}
}
-
- columnCount = columnIndex;
}
// sanity check the input record (in bytes) matches what's expected