You can convert this dim to string and check performance using like filters

With hive duplicate values in fact table.  One for each dim value

Other complex solution can be extended dictionary encode dimension to
understand multivalues

No more ideas :)


On 10 May 2017 8:51 a.m., "jianhui.yi" <jianhui...@zhiyoubao.com> wrote:

Sorry, I write it wrongly,this problem is multi-value dimension,

Example: I have a fact table named fact_order,a dimension table named
dim_sales

In the fact_order table ,An order data contains multiple salespeople.

When I use fact_order join dim_sales it report that error: Dup key found.

How can I solve it ?



*发件人:* Alberto Ramón [mailto:a.ramonporto...@gmail.com]
*发送时间:* 2017年5月10日 15:29
*收件人:* user <user@kylin.apache.org>
*主题:* Re: kylin nonsupport Multi-value dimensions?



Hi,

Not all hive types are supported

Check this lines:
https://github.com/apache/kylin/blob/5d4982e247a2172d97d44c85309cef
4b3dbfce09/core-metadata/src/main/java/org/apache/kylin/dimension/
DimensionEncodingFactory.java#L76



On 10 May 2017 at 08:10, jianhui.yi <jianhui...@zhiyoubao.com> wrote:

I encountered a multi-dimensional dimension of the problem, and I used
bridge table to try to solve it, but when building a cube,it report an error

java.lang.IllegalStateException: The table: DIM_XXX Dup key found,
key=[1446], value1=[1446,29,1,1], value2=[1446,28,0,0]

         at org.apache.kylin.dict.lookup.LookupTable.initRow(
LookupTable.java:86)

         at org.apache.kylin.dict.lookup.LookupTable.init(LookupTable.
java:69)

         at org.apache.kylin.dict.lookup.LookupStringTable.init(
LookupStringTable.java:79)

         at org.apache.kylin.dict.lookup.LookupTable.<init>(
LookupTable.java:57)

         at org.apache.kylin.dict.lookup.LookupStringTable.<init>(
LookupStringTable.java:65)

         at org.apache.kylin.cube.CubeManager.getLookupTable(
CubeManager.java:644)

         at org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(
DictionaryGeneratorCLI.java:98)

         at org.apache.kylin.cube.cli.DictionaryGeneratorCLI.processSegment(
DictionaryGeneratorCLI.java:54)

         at org.apache.kylin.engine.mr.steps.CreateDictionaryJob.run(
CreateDictionaryJob.java:66)

         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)

         at org.apache.kylin.engine.mr.common.HadoopShellExecutable.
doWork(HadoopShellExecutable.java:63)

         at org.apache.kylin.job.execution.AbstractExecutable.
execute(AbstractExecutable.java:124)

         at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(
DefaultChainedExecutable.java:64)

         at org.apache.kylin.job.execution.AbstractExecutable.
execute(AbstractExecutable.java:124)

         at org.apache.kylin.job.impl.threadpool.DefaultScheduler$
JobRunner.run(DefaultScheduler.java:142)

         at java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1145)

         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:615)

         at java.lang.Thread.run(Thread.java:745)

result code:2

Reply via email to