El prefijo y sufijo unless se utiliza para crear una cláusula condicional que determina si una sentencia o cláusula de salida debería evaluarse o no. Puede verse como una alternativa compacta a la sentencia if..end if completa.
La sentencia statement o exitstatement solo se ejecutará si condition se evalúa como False.
El prefijo unless se puede usar en sentencias que ya tienen una o varias sentencias adicionales, incluyendo los prefijos when o unless.
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.
Cuándo se utiliza
La sentencia Unless 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 del script de forma condicional.
Las líneas siguientes muestran tres ejemplos de cómo se puede utilizar la función Unless:
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
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.
La configuración regional predeterminada en las aps se basa en la configuración del sistema regional de la computadora o servidor donde esté instalado Qlik Sense. Si el servidor de Qlik Sense al que está accediendo está configurado en Suecia, el editor de carga de datos utilizará la configuración regional sueca para las fechas, la hora y la moneda. Estos ajustes de formato regional no están relacionados con el idioma mostrado en la interfaz de usuario de Qlik Sense. Qlik Sense se mostrará en el mismo idioma que esté utilizando su navegador.
Ejemplo 1: el prefijo Unless
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:
La creación de la variable A, a la que se le da un valor de 1.
Un conjunto de datos que se carga en una tabla denominada Transacciones, a menos que la variable A = 2.
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 Unless, devolviendo un resultado de FALSE. Como resultado, el script continúa ejecutando la sentencia Load. En la tabla de resultados se pueden ver todos los registros de la tabla Transactions.
Si el valor de esta variable se establece en 2, no se cargarán datos en el modelo de datos.
Ejemplo 2: el sufijo Unless
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 comienza cargando un conjunto de datos inicial en una tabla denominada Transactions. Después el script finaliza, a menos que haya menos de 10 registros en la tabla Transactions.
Si esta condición no da como resultado la finalización del script, se concatena un conjunto adicional de transacciones en la tabla Transactions y se repite este proceso.
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 registros en cada uno de los tres conjuntos de datos del script de carga.
El primer conjunto de datos (con los id de transacción 1 a 7) se carga en la aplicación. La condición Unless evalúa si hay menos de 10 filas en la tabla Transactions. Esto devuelve TRUE y, por lo tanto, el segundo conjunto de datos (con los id de transacción 8 a 14) se carga en la aplicación. La segunda condición Unless evalúa si hay menos de 10 registros en la tabla Transactions. Esto devuelve FALSE y por lo tanto el script finaliza.
Ejemplo 3: Múltiples prefijos Unless
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
En este ejemplo, un conjunto de datos que contiene una transacción se crea como una tabla llamada Transactions. Luego se activa un bucle "for", en el que se evalúan dos sentencias unless anidadas:
A menos que haya más de 100 registros en la tabla Transactions
A menos que el número de registros en la tabla Transactions sea un múltiplo de 6
Si estas condiciones son FALSE, se generan y concatenan otros siete registros en la tabla existente Transactions. Este proceso se repite hasta que una de las dos transacciones devuelve un valor de TRUE.
Script de carga
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
unless NoOfRows('Transactions') > 100 unless mod(NoOfRows('Transactions'),6) = 0
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.
Tabla de resultados
id
0
1
2
3
4
5
+30 filas más
Las sentencias anidadas unless que ocurren en el bucle "for" devuelven lo siguiente:
¿Hay más de 100 filas en la tabla Transactions?
¿El número total de registros en la tabla Transactions es un múltiplo de 6?
Cada vez que ambas sentencias unless devuelvan un valor de FALSE, se generan y concatenan otros siete registros en la tabla Transactions existente.
Estas sentencias devuelven un valor de FALSE cinco veces, momento en el que hay un total de 36 filas de datos en la tabla Transactions.
Después de esto, la segunda sentencia Unless devuelve un valor de TRUE y, por lo tanto, la sentencia de carga que sigue a esto 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.