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.
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/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. Pour plus d'informations, voir Modification des paramètres régionaux des applications et des scripts.
Les paramètres régionaux par défaut des applications sont basés sur le profil utilisateur. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'interface utilisateur Qlik Cloud. Qlik Cloud sera affiché dans la même langue que celle du navigateur que vous utilisez.
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
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 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
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 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.
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
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 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 :
Il existe moins de 100 enregistrements dans la table 'Transactions'.
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.
Cette page vous a-t-elle aidé ?
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !