From 98833e041e05667948038538d6a2551094d419fb Mon Sep 17 00:00:00 2001 From: hit-lacus Date: Mon, 24 Sep 2018 15:34:30 +0800 Subject: [PATCH] KYLIN-3546 Add column which belongs to root fact table in join relation but lost --- .../kylin/source/kafka/KafkaInputBase.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaInputBase.java b/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaInputBase.java index a624f8fbb86..cb2e14ce5cc 100644 --- a/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaInputBase.java +++ b/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaInputBase.java @@ -18,8 +18,11 @@ package org.apache.kylin.source.kafka; +import java.util.LinkedList; import java.util.List; +import java.util.Set; +import com.google.common.collect.Sets; import org.apache.kylin.cube.CubeSegment; import org.apache.kylin.cube.model.CubeDesc; import org.apache.kylin.engine.mr.JobBuilderSupport; @@ -32,7 +35,10 @@ import org.apache.kylin.metadata.model.DataModelDesc; import org.apache.kylin.metadata.model.IJoinedFlatTableDesc; import org.apache.kylin.metadata.model.ISegment; +import org.apache.kylin.metadata.model.JoinDesc; +import org.apache.kylin.metadata.model.JoinTableDesc; import org.apache.kylin.metadata.model.SegmentRange; +import org.apache.kylin.metadata.model.TableRef; import org.apache.kylin.metadata.model.TblColRef; import org.apache.kylin.source.hive.CreateFlatHiveTableStep; import org.apache.kylin.source.hive.GarbageCollectionStep; @@ -89,7 +95,23 @@ public DataModelDesc getDataModel() { @Override public List getAllColumns() { - return flatDesc.getFactColumns(); + final Set factTableColumnSet = Sets.newHashSet(); + TableRef rootFactTable = getDataModel().getRootFactTable(); + for (TblColRef colRef : flatDesc.getAllColumns()) { + if (colRef.getTableRef().equals(rootFactTable)) { + factTableColumnSet.add(colRef); + } + } + // Add column which belongs to root fact table in join relation but lost + for (JoinTableDesc joinTableDesc : getDataModel().getJoinTables()) { + JoinDesc join = joinTableDesc.getJoin(); + for (TblColRef colRef : join.getForeignKeyColumns()) { + if (colRef.getTableRef().equals(rootFactTable)) { + factTableColumnSet.add(colRef); + } + } + } + return new LinkedList<>(factTableColumnSet); } @Override