# When

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

(when condition statement | exitstatement when condition )

Booléen

Dans Qlik Sense, la valeur booléenne true est représentée par -1 et la valeur false par 0.

L'argument statement ou exitstatement sera uniquement exécuté si la condition est évaluée sur TRUE.

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

Cas d'utilisation

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

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

## Paramètres régionaux

Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/DD/YYYY. 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 où 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'Qlik Sense interface utilisateur. Qlik Sense sera affiché dans la même langue que le navigateur que vous utilisez.

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| ` exit script when A=1;  ` | Lorsque l'instruction `A=1` est évaluée sur TRUE, le script s'arrête |
| `when A=1 LOAD * from myfile.csv;` | Lorsque l'instruction `A=1` est évaluée sur TRUE, le fichier `myfile.csv` est chargé. |
| `when A=1 unless B=2 drop table Tab1;` | Lorsque l'instruction `A=1` est évaluée sur TRUE, si `B=2` est évalué sur FALSE, la table `Tab1` est abandonnée. |

## Exemple 1 – préfixe When

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.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 :

* Jeu de données avec des dates et des montants, envoyé à une table appelée ‘`Transactions`’.

* Instruction `Let`, qui déclare que la variable `A` est créée et que sa valeur est de `1`.

* Condition `When`, qui détermine que si `A` est égal à `1`, le script poursuit le chargement.

Script de chargement

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

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 `When` est évaluée et renvoie un résultat TRUE. Parce qu'elle renvoie un résultat TRUE, le script continue à exécuter l'instruction LOAD. Tous les enregistrements du tableau de résultats sont visibles.

Si la valeur de cette variable était définie sur une valeur différente de `1`, aucune donnée ne serait chargée dans le modèle de données.

## Exemple 2 – suffixe When

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.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 :

* Trois jeux de données avec des dates et des montants, envoyés à une table appelée ‘`Transactions`’.

  * Le premier jeu de données contient les transactions 1 à 7.

  * Le deuxième jeu de données contient les transactions 8 à 14.

  * Le troisième jeu de données contient les transactions 15 à 21.

* Condition `When` qui détermine si la table ‘`Transactions`’ contient plus de dix lignes. Si une des instructions `When` est évaluée sur TRUE, le script de chargement s'arrête. Cette condition est placée à la fin de chacun des trois jeux de données.

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 when 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 when 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 when 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 contient sept transactions. Le premier jeu de données contient les transactions 1 à 7 et est chargé dans l'application. La condition `When` suivant cette instruction LOAD est évaluée sur FALSE, car la table ‘`Transactions`’ contient moins de dix lignes. Le script de chargement passe au jeu de données suivant.

Le deuxième jeu de données contient les transactions 8 à 14 et est chargé dans l'application. La deuxième condition `When` est évaluée sur TRUE, car la table ‘`Transactions`’ contient plus de dix lignes. Par conséquent, le script s'arrête.

## Exemple 3 – plusieurs préfixes When

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.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 :

* Un jeu de données contenant une seule transaction est créé dans une table appelée '`Transactions`'.

* Une boucle `For` déclenchée contient deux conditions `When` imbriquées évaluées comme suit :

  1. Il existe moins de `100` enregistrements dans la table '`Transactions`'.

  2. Le nombre d'enregistrements dans la table '`Transactions`' n'est pas un multiple de `6`.

Script de chargement

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

Résultats

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

* `id`

Le tableau de résultats montre uniquement les cinq premiers ID de transaction, mais le script de chargement crée 36 lignes, puis s'arrête une fois la condition `When` remplie.

Tableau de résultats

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

Les conditions `When` imbriquées dans la boucle `For` évaluent les questions suivantes :

* Existe-t-il moins de 100 lignes dans la table '`Transactions`' ?

* Le nombre total d'enregistrements dans la table '`Transactions`' est-il différent d'un multiple de 6 ?

Chaque fois que les deux conditions `When` renvoient une valeur TRUE, sept autres enregistrements sont générés et concaténés dans la table ‘`Transactions`’ existante.

Les conditions `When` renvoient une valeur TRUE à cinq reprises. À ce stade, la table ‘`Transactions`’ contient un total de 36 lignes de données.

Lorsque 36 lignes de données sont créées dans la table '`Transactions`', la deuxième instruction `When` renvoie une valeur FALSE et, en conséquence, l'instruction LOAD suivante n'est plus exécutée.