2017-05-02 36 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