Previous - función de script
Previous() halla el valor de la expresión expr utilizando datos del registro de entrada anterior. En el primer registro de una tabla interna, la función devolverá NULL.
Sintaxis:
Previous(expr)
Tipo de datos que devuelve: dual
Argumentos:
Argumento | Descripción |
---|---|
expr | La expresión o el campo que contiene los datos que se han de medir. La expresión puede contener funcione previous() anidadas para acceder a los registros más adelante. Los datos se recuperan directamente de la fuente de entrada; esto también hace posible consultar los campos que no se hayan cargado en QlikView, es decir, aunque no se hayan almacenado en la base de datos asociativa. |
Limitaciones:
En el primer registro de una tabla interna, la función devolverá NULL.
Ejemplo 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 '|');
Al usar la función Previous() en la sentencia Load, podemos comparar el valor actual de Sales con el valor precedente, y usarlo en un tercer campo, 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 |
Ejemplo 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;
En este ejemplo, excluimos los registros donde Month es 6 o menos utilizando una cláusula WHERE. Esto todavía permite utilizar Previous() ya que la función puede referirse a los datos que se excluyen de la carga.
En este caso el cálculo de Increase para Month=7 remite al valor de Sales para Month=6, el cual queda excluido de la carga.
Month | Sales | Increase |
---|---|---|
7 | 22 | 1 |
8 | 23 | 1 |
9 | 32 | 9 |
10 | 35 | 3 |
11 | 40 | 5 |
12 | 41 | 1 |