馬庫斯的答案是正確的。做到這一點的方法是使用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