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 或小于 6 的记录。此时仍然可以使用 Previous() 作为函数引用从加载中排除的数据。
在此情况下,计算 Month=7 的 Increase 时可以引用 Month=6 的 Sales 值(该已值从加载中排除)。
Month | Sales | Increase |
---|---|---|
7 | 22 | 1 |
8 | 23 | 1 |
9 | 32 | 9 |
10 | 35 | 3 |
11 | 40 | 5 |
12 | 41 | 1 |