# Unless

Utilisé comme préfixe ou comme suffixe, unless permet de créer une clause conditionnelle qui détermine si une instruction ou une clause exit doit être évaluée ou pas. Il peut être considéré comme une alternative plus compacte à l'instruction complète if..end if.

(Unless condition statement | exitstatement Unless condition )

Les arguments statement ou exitstatement sont uniquement exécutés si l'argument condition est évalué comme False.

Vous pouvez utiliser le préfixe unless pour des instructions qui comportent déjà une ou plusieurs autres instructions, y compris des préfixes when ou unless supplémentaires.

Arguments

| Argument | Description |
| --- | --- |
| condition | Expression logique dont l'évaluation a pour résultat True ou False. |
| statement | Toute instruction de script Qlik Sense à l'exception des instructions de contrôle. |
| exitstatement | Toute clause exit for, exit do ou exit sub, ou toute instruction exit script. |

## Cas d'utilisation

L'instruction `Unless` renvoie un résultat booléen. En règle générale, ce type de fonction est utilisé comme condition lorsque l'utilisateur souhaite effectuer un chargement conditionnel ou exclure des parties du script.

Les lignes suivantes montrent trois exemples d'utilisation de la fonction `Unless` :

`exit script 
 unless A=1;` `unless A=1 
 LOAD  * from myfile.csv;` `unless A=1 
 when B=2 drop table Tab1;`

## Paramètres régionaux

Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/JJ/AAAA. Le format de date est indiqué dans l'instruction `SET DateFormat` de votre script de chargement de données. Le format de date par défaut peut être différent dans votre système en raison de vos paramètres régionaux et d'autres facteurs. Vous pouvez modifier les formats utilisés dans les exemples ci-dessous en fonction de vos besoins. Ou vous pouvez modifier les formats utilisés dans votre script de chargement pour qu'ils correspondent à ceux de ces exemples.

Les paramètres régionaux par défaut des applications sont basés sur les paramètres système régionaux de l'ordinateur ou du serveur sur lequel Qlik Sense est installé. Si le serveur Qlik Sense auquel vous accédez est configuré sur la Suède, l'éditeur de chargement de données utilisera les paramètres régionaux suédois pour les dates, l'heure et la devise. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Sense. Qlik Sense sera affiché dans la même langue que celle du navigateur que vous utilisez.

## Exemple 1 – préfixe Unless

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Création de la variable A, d'une valeur 1.

* Jeu de données chargé dans une table appelée Transactions, sauf si (unless) la variable A = 2.

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `id`

* `date`

* `amount`

Tableau de résultats

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

Étant donné que la variable A a la valeur 1 au début du script, la condition suivant le préfixe `Unless` est évaluée, renvoyant un résultat `FALSE`. En conséquence, le script continue à exécuter l'instruction `Load`. Le tableau de résultats montre l'ensemble des enregistrements de la table `Transactions`.

Si la valeur de cette variable est définie sur 2, aucune donnée ne sera chargée dans le modèle de données.

## Exemple 2 – suffixe Unless

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.

Le script de chargement commence par charger un jeu de données initial dans une table appelée `Transactions`. Ensuite, le script se termine, sauf si (unless) il existe moins de dix enregistrements dans la table `Transactions`.

Si cette condition n'entraîne pas la fin du script, un autre ensemble de transactions est concaténé dans la table `Transactions` et ce processus est répété.

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `id`

* `date`

* `amount`

Tableau de résultats

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

Chacun des trois jeux de données du script de chargement contient sept enregistrements.

Le premier jeu de données (`id` de transaction de 1 à 7) est chargé dans l'application. La condition `Unless` évalue s'il existe moins de dix lignes dans la table `Transactions`. Le résultat est `TRUE`. Par conséquent, le deuxième jeu de données (`id` de transaction 8 à 14) est chargé dans l'application. La deuxième condition `Unless` évalue s'il existe moins de dix enregistrements dans la table `Transactions`. Le résultat est `FALSE`, ce qui met fin au script.

## Exemple 3 – plusieurs préfixes Unless

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

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.

Dans cet exemple, un jeu de données contenant une transaction est créé dans une table appelée `Transactions`. Une boucle 'for' est alors déclenchée, dans laquelle deux instructions unless imbriquées sont évaluées :

1. Unless (sauf si) il existe plus de 100 enregistrements dans la table `Transactions`

2. Unless (sauf si) le nombre d'enregistrements dans la table `Transactions` est un multiple de 6

Si ces conditions sont évaluées sur `FALSE`, sept autres enregistrements sont générés et concaténés dans la table `Transactions` existante. Ce processus se répète jusqu'à ce qu'une des deux transactions renvoie une valeur `TRUE`.

Script de chargement

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

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :`id`.

Tableau de résultats

| id |
| --- |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| +30 autres lignes |

Les instructions unless imbriquées qui se produisent dans la boucle 'for' évaluent ce qui suit :

1. Existe-t-il plus de 100 lignes dans la table `Transactions` ?

2. Le nombre total d'enregistrements dans la table `Transactions` est-il un multiple de 6 ?

Chaque fois que les deux instructions unless renvoient une valeur `FALSE`, sept autres enregistrements sont générés et concaténés dans la table `Transactions` existante.

Ces instructions renvoient une valeur `FALSE` cinq fois, ce qui produit un total de 36 lignes de données dans la table `Transactions`.

Ensuite, la deuxième instruction `Unless` renvoie une valeur `TRUE`, et, par conséquent, l'instruction LOAD suivante ne sera plus exécutée.