2017-05-02 76 views
0

我需要在Qlikview中加入兩個表才能獲得結果。Qlikview - 加入兩個表

表: enter image description here

我需要加入這種雙表格來得到這樣

enter image description here

任何想法,結果表?我可以使用十字表嗎?

回答

1

對於Table1可以使用CrossTable功能「旋轉」表中,但保持第一列。

例如:

CrossTable(Location, Quantity) 
Load 
    Reason, 
    LocA, 
    LocB 
From 
    [Data.xlsx] (ooxml, embedded labels, table is Table1) 
; 

在此之後的結果表將是:

Location Reason Quantity 
LocA  R1  5 
LocA  R2  4 
LocA  R3  5 
LocA  R4  3 
LocB  R1  2 
LocB  R2  2 
LocB  R3  3 
LocB  R4  5 

(你可以在Qlik幫助網站了解更多關於CrossTable - CrossTable

Table1後在這種格式下,您可以創建composite key(如x3ja建議)。 Composite key基本上是兩個(或多個)字段連接。在你的情況下,表格之間的連接應該在兩個字段上 - LocationReason

// CrossTable the data to get it in correct format 
Table1_Temp: 
CrossTable(Location, Quantity) 
Load 
    Reason, 
    LocA, 
    LocB 
From 
    [Data.xlsx] (ooxml, embedded labels, table is Table1) 
; 

// Resident load to form the composite key 
// based on Location and Reason fields 
Table1: 
Load 
    Location & '|' & Reason as Key, 
    Quantity 
Resident 
    Table1_Temp 
; 

// We dont need Table1_Temp table anymore 
Drop Table Table1_Temp; 

//Load the second table and create the same composite key 
Table2: 
Load 
    Location & '|' & Reason as Key, 
    Location, 
    Reason, 
    Answer 
From 
    [Data.xlsx] (ooxml, embedded labels, table is Table2) 
; 

重裝後你的數據模型看起來像:

enter image description here

而且數據:

enter image description here

注意,對於AnswerLocationReason的值在最下面的兩個是null行。這是因爲Table2(基於您的屏幕截圖)中的數據不包含LocB and R2LocA and R4的組合,但Table1不包含。

如果你想只保留存在兩個表中的組合,則方法是相似的,但有兩點不同:

  • Table2應先裝入
  • 使用keep功能,以排除非普通被加載Table1

的記錄(keep在Qlik幫助網站 - keep

如果你想看到腳本的行動只是評論第一個標籤,並取消第二個在example qvw

+0

非常感謝! – dev

0

有幾種方法可以做到這一點。

  1. 使用關聯。加載表1兩次並連接,創建一個組合鍵。所以你最終會得到ReasonLocation和Quantity的字段。然後加載表2創建相同的組合鍵,給你ReasonLocation,Location,原因&答案。然後這些表將關聯在該組合鍵上。
  2. 使用連接。加載表1,根據原因左表加入表1,if語句如if [Location] = 'LocA' then [LocA] else [LocB]。這可能需要您先將其加載到臨時表中,然後在駐留負載中執行if語句。

您也可以將兩者結合起來,並根據ReasonLocation字段將#1中的表連接起來。

希望幫助 - 抱歉,這不是完全通過工作...

+0

對不起,我是新的QLikview,我不不理解。你能給我同樣的例子嗎? – dev