Accéder au contenu principal Passer au contenu complémentaire

For each..next

L'instruction de contrôle for each..next est une construction d'itération de script qui exécute une ou plusieurs instructions pour chaque valeur d'une liste de valeurs séparées par des virgules. Les instructions comprises entre for et next à l'intérieur de la boucle sont exécutées pour chaque valeur de la liste.

 

Une syntaxe spéciale permet de générer des listes comprenant les noms des fichiers et des répertoires contenus dans le répertoire actif.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

 

Arguments
ArgumentDescription
varNom de variable de script qui prendra une nouvelle valeur de la liste à chaque exécution de la boucle. Si l'argument var 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 each correspondant.

Il est possible de modifier la valeur de la variable var à 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.

Note InformationsComme l'instruction for each..next est une instruction de contrôle et, en tant que telle, se termine par un point-virgule ou une fin de ligne, aucune de ses trois clauses possibles (for each,exit for et next) ne peut s'étendre sur plusieurs lignes.

 

list := item { , item }

item := constant | (expression) | filelist mask | dirlist mask | fieldvaluelist mask

 

Arguments
ArgumentDescription
constantTout nombre ou toute chaîne. Veuillez noter qu'une chaîne écrite directement dans le script doit être placée entre guillemets simples. Une chaîne non mise entre guillemets simples est interprétée comme une variable ; la valeur de la variable lui est ensuite appliquée. Il est inutile de placer les nombres entre guillemets simples.
expressionExpression arbitraire.
mask

Masque de nom de fichier ou de dossier pouvant inclure n'importe quel caractère de nom de fichier valide, ainsi que les caractères génériques standard, * et ?.

Vous pouvez utiliser des chemins d'accès absolus ou des chemins d'accès lib://.

conditionExpression logique dont l'évaluation a pour résultat True ou False.
statementsTout groupe d'une ou plusieurs instructions de script Qlik Sense.
filelist mask

Cette syntaxe génère une liste de tous les fichiers, séparés par des virgules, qui se trouvent dans le répertoire actif et qui correspondent au masque de nom de fichier.

dirlist mask

Cette syntaxe génère une liste de tous les dossiers, séparés par des virgules, qui se trouvent dans le dossier actif et qui correspondent au masque de nom de dossier.

fieldvaluelist maskCette syntaxe effectue une itération à travers les valeurs d'un champ déjà chargé dans Qlik Sense.
Note AvertissementLe Qlik Connecteurs de fournisseurs de stockage Web et les autres connexions DataFiles ne prennent pas en charge les masques de filtre utilisant les caractères génériques (* et ?).

Chargement d'une liste de fichiers

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Création d'une liste de fichiers sur un disque

Dans cet exemple, la liste de tous les fichiers relatifs à Qlik Sense sont chargés dans un dossier.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvf', 'qvd' for each File in filelist (Root&'/*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'/*' ) call DoDir (Dir) next Dir end sub call DoDir ('lib://DataFiles')

Itération au sein des valeurs d'un champ

Cet exemple itère au sein de la liste des valeurs chargées de champ FIELD et génère un nouveau champ, NEWFIELD. Pour chaque valeur de FIELD, deux enregistrements NEWFIELD sont créés.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

La table résultante a l'aspect suivant :

Example table
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

En savoir plus

 

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 !