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/10/22 05:47:42 UTC
kylin git commit: KYLIN-2764 Apply KYLIN-2800
Repository: kylin
Updated Branches:
refs/heads/2764 3941b4da3 -> 48f3fb195
KYLIN-2764 Apply KYLIN-2800
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/48f3fb19
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/48f3fb19
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/48f3fb19
Branch: refs/heads/2764
Commit: 48f3fb1953a413acfdd405539a7cfd211a5e85de
Parents: 3941b4d
Author: kangkaisen <ka...@meituan.com>
Authored: Sun Oct 22 13:35:15 2017 +0800
Committer: kangkaisen <ka...@meituan.com>
Committed: Sun Oct 22 13:47:25 2017 +0800
----------------------------------------------------------------------
.../java/org/apache/kylin/cube/CubeManager.java | 30 +--------------
.../apache/kylin/dict/DictionaryManager.java | 40 --------------------
2 files changed, 1 insertion(+), 69 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/48f3fb19/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
index 180c3f4..b18d40f 100755
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -833,26 +833,6 @@ public class CubeManager implements IRealizationProvider {
// ============================================================================
-
- /**
- * Get the columns which need build the dictionary from fact table. (the column exists on fact and is not fk)
- * @param cubeDesc
- * @return
- * @throws IOException
- */
- public List<TblColRef> getAllDictColumnsOnFact(CubeDesc cubeDesc) throws IOException {
- List<TblColRef> factDictCols = new ArrayList<TblColRef>();
- DictionaryManager dictMgr = DictionaryManager.getInstance(config);
- for (TblColRef col : cubeDesc.getAllColumnsNeedDictionaryBuilt()) {
-
- String scanTable = dictMgr.decideSourceData(cubeDesc.getModel(), col).getTable();
- if (cubeDesc.getModel().isFactTable(scanTable)) {
- factDictCols.add(col);
- }
- }
- return factDictCols;
- }
-
public List<TblColRef> getAllGlobalDictColumns(CubeDesc cubeDesc) {
List<TblColRef> globalDictCols = new ArrayList<TblColRef>();
List<DictionaryDesc> dictionaryDescList = cubeDesc.getDictionaries();
@@ -874,19 +854,11 @@ public class CubeManager implements IRealizationProvider {
List<TblColRef> uhcColumns = new ArrayList<TblColRef>();
uhcColumns.addAll(getAllGlobalDictColumns(cubeDesc));
uhcColumns.addAll(cubeDesc.getShardByColumns());
-
- //handle PK-FK, see getAllDictColumnsOnFact
- try {
- uhcColumns.retainAll(getAllDictColumnsOnFact(cubeDesc));
- } catch (IOException e) {
- throw new RuntimeException("Get all dict columns on fact failed");
- }
-
return uhcColumns;
}
public int[] getUHCIndex(CubeDesc cubeDesc) throws IOException {
- List<TblColRef> factDictCols = getAllDictColumnsOnFact(cubeDesc);
+ List<TblColRef> factDictCols = Lists.newArrayList(cubeDesc.getAllColumnsNeedDictionaryBuilt());
List<TblColRef> uhcColumns = getAllUHCColumns(cubeDesc);
int[] uhcIndex = new int[factDictCols.size()];
http://git-wip-us.apache.org/repos/asf/kylin/blob/48f3fb19/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
index 7ce608b..e97899c 100755
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
@@ -29,17 +29,13 @@ import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.lang.ArrayUtils;
import org.apache.kylin.common.KylinConfig;
import org.apache.kylin.common.persistence.ResourceStore;
import org.apache.kylin.common.util.ClassUtil;
import org.apache.kylin.common.util.Dictionary;
import org.apache.kylin.common.util.JsonUtil;
import org.apache.kylin.metadata.datatype.DataType;
-import org.apache.kylin.metadata.model.DataModelDesc;
import org.apache.kylin.metadata.model.DataModelManager;
-import org.apache.kylin.metadata.model.JoinDesc;
-import org.apache.kylin.metadata.model.TableRef;
import org.apache.kylin.metadata.model.TblColRef;
import org.apache.kylin.source.IReadableTable;
import org.apache.kylin.source.IReadableTable.TableSignature;
@@ -346,42 +342,6 @@ public class DictionaryManager {
return dictInfo;
}
- /**
- * Decide a dictionary's source data, leverage PK-FK relationship.
- */
- public TblColRef decideSourceData(DataModelDesc model, TblColRef col) {
- // Note FK on fact table is supported by scan the related PK on lookup table
- // FK on fact table and join type is inner, use PK from lookup instead
- if (model.isFactTable(col.getTable()) == false)
- return col;
-
- // find a lookup table that the col joins as FK
- for (TableRef lookup : model.getLookupTables()) {
- JoinDesc lookupJoin = model.getJoinByPKSide(lookup);
- int find = ArrayUtils.indexOf(lookupJoin.getForeignKeyColumns(), col);
- if (find < 0)
- continue;
-
- // make sure the joins are all inner up to the root
- if (isAllInnerJoinsToRoot(model, lookupJoin))
- return lookupJoin.getPrimaryKeyColumns()[find];
- }
-
- return col;
- }
-
- private boolean isAllInnerJoinsToRoot(DataModelDesc model, JoinDesc join) {
- while (join != null) {
- if (join.isInnerJoin() == false)
- return false;
-
- TableRef table = join.getFKSide();
- join = model.getJoinByPKSide(table);
- }
- return true;
- }
-
-
private String checkDupByInfo(DictionaryInfo dictInfo) throws IOException {
final ResourceStore store = DataModelManager.getInstance(config).getStore();
final List<DictionaryInfo> allResources = store.getAllResources(dictInfo.getResourceDir(), DictionaryInfo.class, DictionaryInfoSerializer.INFO_SERIALIZER);