You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/01/31 13:01:52 UTC
[25/50] incubator-kylin git commit: KYLIN-540,
always use FK instead of PK as dimension columns
KYLIN-540, always use FK instead of PK as dimension columns
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/220647c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/220647c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/220647c6
Branch: refs/heads/inverted-index
Commit: 220647c6293b22acac72dc91269c55aebc47e784
Parents: 850d4b5
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Jan 28 17:25:24 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Jan 28 17:25:24 2015 +0800
----------------------------------------------------------------------
.../java/com/kylinolap/common/util/StringUtil.java | 11 -----------
.../main/java/com/kylinolap/cube/model/CubeDesc.java | 15 +++++++++++----
2 files changed, 11 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/220647c6/common/src/main/java/com/kylinolap/common/util/StringUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/com/kylinolap/common/util/StringUtil.java b/common/src/main/java/com/kylinolap/common/util/StringUtil.java
index 89b6181..006f3b7 100644
--- a/common/src/main/java/com/kylinolap/common/util/StringUtil.java
+++ b/common/src/main/java/com/kylinolap/common/util/StringUtil.java
@@ -18,8 +18,6 @@ package com.kylinolap.common.util;
import java.util.ArrayList;
import java.util.Collection;
-import org.apache.commons.lang.StringUtils;
-
/**
* Created with IntelliJ IDEA. User: lukhan Date: 12/2/13 Time: 11:43 AM To
* change this template use File | Settings | File Templates.
@@ -99,13 +97,4 @@ public class StringUtil {
return s1.compareTo(s2) > 0 ? s1 : s2;
}
- public static boolean contains(String[] haystack, String needle) {
- if (haystack != null) {
- for (int i = 0, n = haystack.length; i < n; i++) {
- if (StringUtils.equals(haystack[i], needle))
- return true;
- }
- }
- return false;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/220647c6/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
----------------------------------------------------------------------
diff --git a/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java b/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
index 219f30a..b099f9a 100644
--- a/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
+++ b/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
@@ -46,7 +46,6 @@ import com.kylinolap.common.persistence.RootPersistentEntity;
import com.kylinolap.common.util.Array;
import com.kylinolap.common.util.CaseInsensitiveStringMap;
import com.kylinolap.common.util.JsonUtil;
-import com.kylinolap.common.util.StringUtil;
import com.kylinolap.metadata.MetadataConstances;
import com.kylinolap.metadata.MetadataManager;
import com.kylinolap.metadata.model.ColumnDesc;
@@ -467,7 +466,7 @@ public class CubeDesc extends RootPersistentEntity {
String[] colStrs = dim.getColumn();
// when column is omitted, special case
- if (colStrs == null && dim.isDerived() || StringUtil.contains(colStrs, "{FK}")) {
+ if (colStrs == null && dim.isDerived() || ArrayUtils.contains(colStrs, "{FK}")) {
for (TblColRef col : join.getForeignKeyColumns()) {
dimCols.add(initDimensionColRef(col));
}
@@ -572,9 +571,17 @@ public class CubeDesc extends RootPersistentEntity {
if (col == null)
throw new IllegalArgumentException("No column '" + colName + "' found in table " + table);
- // always use FK instead PK, FK could be shared to join more than one lookup tables
-
TblColRef ref = new TblColRef(col);
+
+ // always use FK instead PK, FK could be shared by more than one lookup tables
+ JoinDesc join = dim.getJoin();
+ if (join != null) {
+ int idx = ArrayUtils.indexOf(join.getPrimaryKeyColumns(), ref);
+ if (idx >= 0) {
+ ref = join.getForeignKeyColumns()[idx];
+ }
+ }
+
return initDimensionColRef(ref);
}