有一些非规范化数据,如下所示:
FruitData:
LOAD * INLINE [
ID,ColumnA, ColumnB, ColumnC
1,'Apple','Pear','Banana'
2,'Banana','Mango','Strawberry'
3,'Pear','Strawberry','Kiwi'
];
MasterFruits
LOAD * INLINE [
Fruitname
'Apple'
'Banana'
'Pear'
'Mango'
'Kiwi'
'Strawberry'
'Papaya'
];
我需要做的是将这些字段与水果的主列表(在另一个表中保存)进行比较。这意味着如果我选择Banana,ID 1和2会出现,如果我选择了Strawberry,则会出现ID 2和3。
有什么办法可以创建一个可以同时搜索所有3个字段的列表框吗?
答案 0 :(得分:0)
列表框只是一种机制,允许您“选择”某个字段中的值作为过滤器。 Qlikview所做的真正魔术来自于数据模型中的关联。由于您的表没有公共字段,因此您无法加载Fruitname
的列表框并单击某些内容并使其更改其他字段(如ColumnA,B或C)的列表框。以获取行为你希望你需要关联这两个表。这可以通过将各列连接成一列来实现(基本上将数据标准化)。
[LinkTable]:
LOAD Distinct ColumnA as Fruitname,
ID
Resident FruitData;
Concatenate([LinkTable])
LOAD Distinct ColumnB as Fruitname,
ID
Resident FruitData;
Concatenate([LinkTable])
LOAD Distinct ColumnC as Fruitname,
ID
Resident FruitData;
您可以在此处看到此表格生成的表格:
,数据模型如下所示:
最后,期望的行为: