For..next
L'instruction de contrôle for..next est une construction d'itération de script avec compteur. Les instructions comprises entre for et next à l'intérieur de la boucle sont exécutées pour chaque valeur de la variable du compteur entre les limites inférieure et supérieure spécifiées.
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
Les expressions expr1, expr2 et expr3 ne sont évaluées que la première fois que le script entre dans la boucle. Il est possible de modifier la valeur de la variable counter à l'aide d'instructions placées à l'intérieur de la boucle, mais ce n'est pas une bonne méthode de programmation.
Si une clause exit for se trouve dans la boucle, l'exécution du script est transférée à la première instruction qui suit la clause next indiquant la fin de la boucle. Il est possible de rendre une clause exit for conditionnelle par l'utilisation facultative d'un suffixe when ou unless.
Argument | Description |
---|---|
counter | Nom de variable. Si l'argument counter est spécifié après next, il doit s'agir du même nom de variable que celui qui se trouve après le for correspondant. |
expr1 | Expression qui détermine la première valeur de la variable counter pour laquelle la boucle doit être exécutée. |
expr2 | Expression qui détermine la dernière valeur de la variable counter pour laquelle la boucle doit être exécutée. |
expr3 | Expression qui détermine la valeur de l'incrément de la variable counter lors de chaque exécution de la boucle. |
condition | Expression logique dont l'évaluation a pour résultat True ou False. |
statements | Tout groupe d'une ou plusieurs instructions de script Qlik Sense. |
Chargement d'une séquence de fichiers
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
Chargement d'un nombre aléatoire de fichiers
Dans cet exemple, supposons les fichiers de données x1.csv, x3.csv, x5.csv, x7.csv et x9.csv. Le chargement est arrêté en un point aléatoire à l'aide de la condition if rand( )<0.5 then.
for counter=1 to 9 step 2
set filename=x$(counter).csv;
if rand( )<0.5 then
exit for unless counter=1
end if
LOAD a,b from $(filename);
next