Vai al contenuto principale Passa a contenuto complementare

For each..next

L'istruzione di controllo for each..next è un costrutto per la ripetizione di script che esegue una o più istruzioni per ogni valore in un elenco le cui voci sono separate da virgole. Le istruzioni incluse nel ciclo fra for e next verranno eseguite per ogni valore nell'elenco.

Sintassi:  

Una sintassi speciale consente di generare elenchi contenenti nomi di file e di directory nella directory attuale.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Argomenti:  

Argomenti
ArgomentoDescrizione
varIl nome di una variabile di script che acquisisce un nuovo valore dall'elenco a ogni esecuzione del ciclo. Se var viene specificato dopo next, deve avere lo stesso nome di variabile rilevato dopo l'istruzione for each corrispondente.

Il valore della variabile var può essere modificato dalle istruzioni all'interno del ciclo, tuttavia l'utilizzo di questa procedura di programmazione non è consigliato.

Se all'interno del ciclo è presente una clausola exit for, l'esecuzione dello script verrà trasferita alla prima istruzione dopo la clausola next indicando quindi la fine del ciclo. Una clausola exit for può essere resa condizionale dall'utilizzo opzionale di un suffisso when o unless.

Nota informaticaPoiché for each..next è un'istruzione di controllo che termina con un punto e virgola o con un carattere di fine riga, ciascuna delle tre possibili clausole corrispondenti (for each, exit for e next) deve essere contenuta in una sola riga.

Sintassi:  

list := item { , item }

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

 

Argomenti
ArgomentoDescrizione
constantQualsiasi numero o stringa. Tenere presente che una stringa inserita direttamente nello script deve essere racchiusa tra virgolette singole. Se la stringa non viene racchiusa tra virgolette singole, verrà interpretata come una variabile, pertanto verrà utilizzato il valore della variabile. Non è necessario che i numeri siano racchiusi tra virgolette singole.
expressionUn'espressione arbitraria.
mask

Una maschera di un nome di file o di cartella che può includere un carattere qualsiasi di nome di file valido, così come i caratteri speciali standard, quali * e ?.

È possibile utilizzare percorsi di file assoluti o percorsi lib://.

conditionUn'espressione logica che restituisce un valore True o False.
statementsQualsiasi gruppo di una o più istruzioni dello script di Qlik Sense.
filelist mask

Questa sintassi restituisce un elenco con valori separati da virgole di tutti i file presenti nella directory attuale che presentano una corrispondenza con la maschera del nome di file.

dirlist mask

Questa sintassi restituisce un elenco con valori separati da virgole di tutte le cartelle incluse nella cartella attuale che presentano una corrispondenza con la maschera del nome di file.

fieldvaluelist maskQuesta sintassi ripete i valori di un campo già caricato in Qlik Sense.
Nota di avvisoQlik Connettori provider di archiviazione Web e altre connessioni DataFiles non supportano le maschere di filtro che utilizzano caratteri speciali (* e ?).

Esempio 1: Caricamento di un elenco di file

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

Esempio 2: Creazione di un elenco di file sul disco

In questo esempio viene caricato un elenco di tutti i file correlati a Qlik Sense in una cartella.

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')

Esempio 3: Ripetizione dei valori di un campo

In questo esempio viene ripetuto l'elenco di valori caricati di FIELD e viene generato un nuovo campo NEWFIELD. Per ciascun valore di FIELD, verranno creati due record NEWFIELD.

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

La tabella risultante avrà l'aspetto seguente:

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

Ulteriori informazioni

 

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!