数据规范化/跨多个字段搜索

时间:2013-10-02 08:37:27

标签: normalization qlikview

有一些非规范化数据,如下所示:

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个字段的列表框吗?

1 个答案:

答案 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;

您可以在此处看到此表格生成的表格: enter image description here

,数据模型如下所示: enter image description here

最后,期望的行为: enter image description here