马库斯的答案是正确的。做到这一点的方法是使用IntervalMatch。你可以使用两个表格,并使用IntervalMatch添加一个“之间”关系。加载脚本运行后无法添加关系。
首先,您必须加载具有日期范围的表(省略了sql查询)。比方说:
Ranges:
LOAD
rangeID,
validfrom, // date
validto, // date
commonkey, // common key for the two tables
price; // the data that's needed as a result of the linking
其次,你加载另一个表的日期
Data:
LOAD
column1,
column2,
date,
commonkey;
接下来你将不得不使用IntervalMatch。这是做到这一点的一种方法:
Left Join (Data)
IntervalMatch(date, commonkey)
LOAD
validfrom,
validto,
commonkey
Resident Ranges;
现在你有两个表之间的链接。您可以通过添加删除此得到的合成关键:
Left Join (Data)
LOAD
validfrom,
validto,
commonkey,
rangeID
Resident Ranges;
DROP Fields validfrom, validto FROM Data;
现在的表是通过使用rangeID
键链接。如果这些表没有一些共同的关键字,比如类别id或某事(即只需要匹配日期),则可以忽略上述示例中的commonkey
。我只是想将它包含在示例中,因为我需要它,希望它能帮助出现类似问题的人。
你可以在标有“IntervalMatch(extended)”的Qlikview帮助中找到它。 Qlikview cookbook(fillrowsintervalmatch.qvw)也帮助我解决了这个问题。
来源
2012-11-16 14:29:04
miq
IntervalMatch函数只能在加载脚本中使用。这相当于已经预先将数据加入数据库服务器并在之后加载。我想要的是让QlikView按原样加载两个表,然后在它们之间定义一个“BETWEEN”关系。但我认为这是不可能的。 – thomaspaulb 2010-05-13 15:25:09
这是不可能的,除了在脚本。无论如何,你的答案是最好的QlikView可以做的,所以这里是要点! – thomaspaulb 2010-11-09 14:49:14