答案 0 :(得分: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
基本上是连接的两个(或更多)字段。在您的情况下,表格之间的联接应位于两个字段 - Location
和Reason
。
// 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)
;
重新加载后,您的数据模型将如下所示:
数据:
请注意,最后两行中Answer
,Location
,Reason
的值为null
。这是因为Table2
(基于您的屏幕截图)中的数据不包含LocB and R2
和LocA and R4
但Table1
的组合。
如果您只想保留两个表中存在的组合,那么方法类似但有两点不同:
Table2
keep
函数排除在Table1
(keep
在Qlik的帮助网站 - keep)
如果您想查看正在运行的脚本,只需对第一个标签进行评论,并取消注释example qvw
中的第二个标签答案 1 :(得分:0)
有几种方法可以做到这一点。
if [Location] = 'LocA' then [LocA] else [LocB]
之类的if语句。这可能需要先将它加载到临时表中,然后在常驻负载中执行if语句。您还可以将两者结合起来,并根据ReasonLocation字段连接#1中的表。
希望有所帮助 - 对不起,它没有完全通过......