2013-10-02 35 views
0

有一些非規範化的數據,沿着以下線路:數據標準化/搜索跨越多個領域

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' 
]; 

,我需要做的是比較這些字段水果的主列表什麼(在另一臺舉行)。這意味着如果我選擇了香蕉,ID 1和ID 2就會出現,如果我選擇了Strawberry,ID 2和ID 3就會出現。

有沒有什麼辦法可以創建一個能同時搜索所有3個字段的列表框?

回答

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