Previous - 指令碼函數
Previous() 使用來自先前輸入記錄的資料,找到 expr 運算式的值。在內部表格的第一筆記錄中,此函數會傳回 NULL。
語法:
Previous(expr)
傳回的資料類型: 雙值
引數:
引數 | 描述 |
---|---|
expr | 包含待測量資料的運算式或欄位。 運算式可以包含巢狀 previous() 函數,以存取更早之前的記錄。資料是直接擷取自輸入來源,因此也可參考尚未載入 QlikView 的欄位,即尚未儲存在關聯資料庫中的欄位。 |
限制:
在內部表格的第一筆記錄中,此函數會傳回 NULL。
範例 1:
Sales2013:
Load *, (Sales - Previous(Sales) )as Increase Inline [
Month|Sales
1|12
2|13
3|15
4|17
5|21
6|21
7|22
8|23
9|32
10|35
11|40
12|41
] (delimiter is '|');
透過使用 Load 陳述式中的 Previous() 函數,我們可以比較 Sales 的目前值與前置值,並將它用在第三個欄位 Increase 中。
Month | Sales | Increase |
---|---|---|
1 | 12 | - |
2 | 13 | 1 |
3 | 15 | 2 |
4 | 17 | 2 |
5 | 21 | 4 |
6 | 21 | 0 |
7 | 22 | 1 |
8 | 23 | 1 |
9 | 32 | 9 |
10 | 35 | 3 |
11 | 40 | 5 |
12 | 41 | 1 |
範例 2:
Sales2013:
Load * Inline [
Month|Sales
1|12
2|13
3|15
4|17
5|21
6|21
7|22
8|23
9|32
10|35
11|40
12|41
] (delimiter is '|');
Sales:
NoConcatenate Load *, (Sales - Previous(Sales) )as Increase Resident Sales2013 where Month > 6;
Drop Table Sales2013;
在此範例中,我們使用 WHERE 子句,排除了 Month 為 6 或更少的記錄。這仍然可以使用 Previous(),因為函數可以參考從載入中排除的資料。
在此情況下, Increase 對於 Month=7 的計算參考了已從載入中排除的 Month=6 的 Sales 值。
Month | Sales | Increase |
---|---|---|
7 | 22 | 1 |
8 | 23 | 1 |
9 | 32 | 9 |
10 | 35 | 3 |
11 | 40 | 5 |
12 | 41 | 1 |