# Unless

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.

Sintaxis:

(Unless condition statement | exitstatement Unless condition )

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 en su navegador.

## Ejemplo 1: el prefijo Unless

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.htm)

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

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.

Script de carga

```
LET A = 1;

UNLESS A = 2

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 | date | 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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.htm)

#### Script de carga y resultados

Vista general

Abra el editor de carga de datos y agregue el script de carga a continuación en 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.

Script de carga

```
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
];


exit script unless NoOfRows('Transactions') < 10 ;

Concatenate
LOAD
* 
Inline [
id, date, amount
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
];

exit script unless NoOfRows('Transactions') < 10 ;

Concatenate
LOAD
* 
Inline [
id, date, amount
15, 10/01/2018, 164.27
16, 10/03/2018, 384.00
17, 10/06/2018, 25.82
18, 10/09/2018, 312.00
19, 10/15/2018, 4.56
20, 10/16/2018, 90.24
21, 10/18/2018, 19.32
];

exit script unless NoOfRows('Transactions') < 10 ;
```

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 | date | 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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.htm)

#### Script de carga y resultados

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:

1. A menos que haya más de 100 registros en la tabla `Transactions`

2. 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:

1. ¿Hay más de 100 filas en la tabla `Transactions`?

2. ¿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á.