最近我们一直在办公室测试QlikView。第一印象是好的:它具有吸引人的界面并且执行速度非常快。我们希望将其用作客户的数据库前端。我们还试图确定它是否可以接管部分关系数据库结构。但是,我们不确定它的数据库功能是否足够先进,不仅仅是一个有吸引力的前端。
具体来说,我们遇到了以下问题。只需在表格中设置相等的字段名称,即可在QlikView中完成正常JOIN(等值连接)操作的等效操作 - 然后将链接这些字段。但是,我们的一个传统SQL JOIN操作使用“BETWEEN”查询来查明日期是否在某个范围内并加入该数据。
是否可以在QlikView中的表之间指定这种“非等值”关系?或者这是所谓的“关联数据库”结构的固有限制?
答案 0 :(得分:4)
马库斯的回答是正确的。这样做的方法是使用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(扩展)”的Qlikview帮助中找到此信息。 Qlikview cookbook(fillrowsintervalmatch.qvw)也帮助我解决了这个问题。
答案 1 :(得分:1)
当然可以 - 我想你想要的是IntervalMatch功能。