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.
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. 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.
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
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 ensemble 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é.
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 ensembles de données du script de chargement contient sept enregistrements.
Le premier ensemble 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 ensemble 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
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 ensemble 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 :
Unless (sauf si) il existe plus de 100 enregistrements dans la table Transactions
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 :
Existe-t-il plus de 100 lignes dans la table Transactions ?
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.
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 !