QlikView中的非标准连接?

时间:2010-02-12 01:37:16

标签: database join associative qlikview

最近我们一直在办公室测试QlikView。第一印象是好的:它具有吸引人的界面并且执行速度非常快。我们希望将其用作客户的数据库前端。我们还试图确定它是否可以接管部分关系数据库结构。但是,我们不确定它的数据库功能是否足够先进,不仅仅是一个有吸引力的前端。

具体来说,我们遇到了以下问题。只需在表格中设置相等的字段名称,即可在QlikView中完成正常JOIN(等值连接)操作的等效操作 - 然后将链接这些字段。但是,我们的一个传统SQL JOIN操作使用“BETWEEN”查询来查明日期是否在某个范围内并加入该数据。

是否可以在QlikView中的表之间指定这种“非等值”关系?或者这是所谓的“关联数据库”结构的固有限制?

2 个答案:

答案 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功能。