El prefijo y sufijo when se utiliza para crear una cláusula condicional que determina si una sentencia o cláusula de salida debería ejecutarse o no. Puede verse como una alternativa compacta a la sentencia if..end if completa.
En Qlik Sense, el valor booleano verdadero viene representado por -1 y el valor falso está representado por 0.
Las instrucciones statement o exitstatement solo se ejecutarán si la condición se evalúa como verdadera, TRUE.
El prefijo When se puede usar en sentencias que ya tienen una o varias sentencias adicionales, incluyendo los prefijos When o Unless.
Cuándo se utiliza
La sentencia When devuelve un resultado booleano. Por lo general, este tipo de función se utilizará como condición cuando el usuario desee cargar o excluir partes de un script.
Argumentos
Argumento
Descripción
condition
Una expresión lógica que devuelve TRUE o FALSE
statement
Cualquier sentencia de script de Qlik Sense, excepto las sentencias de control.
exitstatement
Una cláusula exit for, exit do o exit sub o una sentencia exit script.
Configuraciones regionales
A menos que se especifique algo distinto, los ejemplos de este tema utilizan el siguiente formato de fecha: MM/DD/YYYY. El formato de fecha se especifica en la sentencia SET DateFormat de su script de carga de datos. El formato de fecha predeterminado puede ser diferente en su sistema, debido a su configuración regional y otros factores. Puede cambiar el formato en los ejemplos a continuación para ajustarlo a sus necesidades. O puede cambiar los formatos en su script de carga para que coincidan con estos ejemplos. Para más información, vea Modificar la configuración regional para aplicaciones y scripts.
La configuración regional predeterminada en las aplicaciones se basa en el perfil de usuario. Estos ajustes de formato regional no están relacionados con el idioma mostrado en la interfaz de usuario de Qlik Cloud. Qlik Cloud se mostrará en el mismo idioma que esté utilizando su navegador.
Cuando la sentencia A=1 devuelve TRUE, el script se detendrá.
when A=1 LOAD * from myfile.csv;
Cuando la sentencia A=1 devuelve TRUE, el archivo myfile.csv se cargará.
when A=1 unless B=2 drop table Tab1;
Cuando la sentencia A=1 devuelve TRUE, y si B=2 devuelve FALSE, entonces se descartará la tabla Tab1.
Ejemplo 1: el prefijo When
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
Un conjunto de datos con fechas y cantidades que se envía a una tabla denominada "Transactions".
La sentencia Let que establece que la variable A se ha creado y tiene el valor de 1.
La condición When que porporciona la condición de que si A es igual a 1, entonces el script continuará cargándose.
Script de carga
LET A = 1;
WHEN A = 1
Transactions:
LOAD
*
Inline [
id, date, amount
1, 08/30/2018, 23.56
2, 09/07/2018, 556.31
3, 09/16/2018, 5.75
4, 09/22/2018, 125.00
5, 09/22/2018, 484.21
6, 09/22/2018, 59.18
7, 09/23/2018, 177.42
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
id
date
amount
Tabla de resultados
ID
fecha
cantidad
1
08/30/2018
23.56
2
09/07/2018
556.31
3
09/16/2018
5.75
4
09/22/2018
125.00
5
09/22/2018
484.21
6
09/22/2018
59.18
7
09/23/2018
177.42
Como a la variable A se le asigna el valor de 1 al comienzo del script, se evalúa la condición que sigue al prefijo When, devolviendo un resultado de TRUE. Debido a que devuelve un resultado TRUE, el script continúa ejecutando la instrucción de carga. Se pueden ver todos los registros de la tabla de resultados.
Si el valor de esta variable se estableciera en cualquier valor que no fuera igual a 1, no se cargarían datos en el modelo de datos.
Ejemplo 2: el sufijo When
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
Tres conjuntos de datos con fechas y cantidades que se envían a una tabla denominada "Transactions".
El primer conjunto de datos contiene las transacciones 1-7.
El segundo conjunto de datos contiene las transacciones 8-14.
El tercer conjunto de datos contiene las transacciones 15-21.
Una condición When que determina si la tabla "Transactions" contiene más de diez filas. Si alguna de las sentencias When se evalúa como TRUE, el script de carga se detendrá. Esta condición se coloca al final de cada uno de los tres conjuntos de datos.
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
id
date
amount
Tabla de resultados
id
fecha
cantidad
1
08/30/2018
23.56
2
09/07/2018
556.31
3
09/16/2018
5.75
4
09/22/2018
125.00
5
09/22/2018
484.21
6
09/22/2018
59.18
7
09/23/2018
177.42
8
10/01/2018
164.27
9
10/03/2018
384.00
10
10/06/2018
25.82
11
10/09/2018
312.00
12
10/15/2018
4.56
13
10/16/2018
90.24
14
10/18/2018
19.32
Hay siete transacciones en cada uno de los tres conjuntos de datos. El primer conjunto de datos contiene las transacciones 1-7 y se carga en la aplicación. La condición When que sigue a esta instrucción de carga se evalúa como FALSE porque hay menos de diez filas en la tabla "Transactions". El script de carga continúa con el siguiente conjunto de datos.
El segundo conjunto de datos contiene las transacciones 8-14 y se carga en la aplicación. La segunda condición When devuelve TRUE porque hay más de diez filas en la tabla "Transactions". Por lo tanto, el script termina.
Ejemplo 3: múltiples prefijos When
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
Se crea un conjunto de datos que contiene una única transacción como una tabla llamada "Transactions".
Un bucle For que se activa contiene dos condiciones When anidadas que evalúan si:
Hay menos de 100 registros en la tabla "Transactions".
El número de registros en la tabla "Transactions" no es un múltiplo de 6.
Script de carga
RowsCheck = NoOfRows('Transactions') < 100 or mod(NoOfRows('Transactions'),6) <> 0;
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when(RowsCheck)
Concatenate
Load
if(isnull(Peek(id)),1,peek(id)+1) as id
Autogenerate 7;
next i
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:
id
La tabla de resultados solo muestra los primeros cinco ID de transacción, pero el script de carga crea 36 filas y luego finaliza una vez que se cumple la condición When.
Tabla de resultados
ID
0
1
2
3
4
5
+30 filas más
Las condiciones anidadas When en el ciclo For evalúan las siguientes preguntas:
¿Hay menos de 100 filas en la tabla "Transactions"?
¿El número total de registros en la tabla "Transactions" no es un múltiplo de 6?
Cada vez que ambas condiciones When devuelven un valor de TRUE, se generan y concatenan otros siete registros en la tabla "Transactions" existente.
Las condiciones When devuelven un valor TRUE cinco veces. En ese punto, hay un total de 36 filas de datos en la tabla "Transactions".
Cuando se crean 36 filas de datos en la tabla "Transactions", la segunda instrucción When devuelve un valor de FALSE y, por lo tanto, la instrucción de carga que sigue a esta ya no se ejecutará.
¿Esta página le ha sido útil?
No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.