For..next
L'istruzione di controllo for..next è un costrutto per la ripetizione di script con un contatore. Le istruzioni all'interno del ciclo incluso tra for e next verranno eseguite per ogni valore del contatore in base ai limiti inferiore e superiore specificati.
Sintassi:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
Le espressioni expr1, expr2 ed expr3 vengono valutate solo la prima volta che il ciclo viene eseguito. Il valore della variabile counter 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.
Argomenti:
Argomento | Descrizione |
---|---|
counter | Un nome di variabile. Se counter viene specificato dopo next, deve avere lo stesso nome di variabile rilevato dopo l'istruzione for corrispondente. |
expr1 | Un'espressione che determina il primo valore della variabilecounter per cui deve essere eseguito il ciclo. |
expr2 | Un'espressione che determina l'ultimo valore della variabile counter per cui deve essere eseguito il ciclo. |
expr3 | Un'espressione che determina il valore che indica l'incremento della variabile counter ogni volta che il ciclo è stato eseguito. |
condition | Un'espressione logica che restituisce un valore True o False. |
statements | Qualsiasi gruppo di una o più istruzioni dello script di Qlik Sense. |
Esempio 1: Caricamento di una sequenza di file
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
Esempio 2: Caricamento di un numero casuale di file
In questo esempio si presuppone l'utilizzo dei file di dati x1.csv, x3.csv, x5.csv, x7.csv e x9.csv. Il caricamento viene interrotto in un punto casuale mediante la condizione 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