Il prefisso e suffisso when viene utilizzato per creare una clausola condizionale che determina se eseguire o meno un'istruzione oppure una clausola exit. Può essere considerato come un'alternativa compatta all'istruzione completa if..end if.
In Qlik Sense, il valore booleano vero è rappresentato da -1 e il valore falso è rappresentato da 0.
Le istruzioni statement o exitstatement vengono eseguite solamente se la condizione viene valutata essere TRUE.
Il prefisso When può essere utilizzato con istruzioni che presentano già almeno un’altra istruzione, inclusi i prefissi addizionali When o Unless.
Casi di utilizzo
L'istruzione When restituisce un risultato booleano. In genere, questo tipo di funzione viene utilizzata come condizione quando l'utente desidera caricare o escludere parti di uno script.
Argomenti
Argomento
Descrizione
condition
Un'espressione logica che restituisce un valore TRUE o FALSE
statement
Qualsiasi istruzione dello script di Qlik Sense, ad eccezione delle istruzioni di controllo.
exitstatement
Una clausola exit for, exit do o exit sub oppure un'istruzione exit script.
Impostazioni locali
Se non diversamente specificato, gli esempi di questo argomento utilizzano il seguente formato di data: MM/GG/AAAA. Il formato della data viene specificato nell'istruzione SET DateFormat nello script di caricamento dei dati. La formattazione predefinita della data potrebbe essere diversa nel proprio sistema, a causa delle impostazioni regionali e di altri fattori. È possibile modificare i formati degli esempi seguenti in base alle proprie esigenze. In alternativa, è possibile modificare i formati nel proprio script di caricamento per adattarli a questi esempi.
Le impostazioni regionali predefinite delle app si basano sulle impostazioni regionali del sistema del computer o del server in cui risulta installato Qlik Sense. Se il server Qlik Sense a cui si accede è impostato in Svezia, l'editor caricamento dati utilizzerà le impostazioni regionali svedesi per date, ora e valuta. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Sense. Qlik Sense verrà visualizzato nella stessa lingua del browser utilizzato.
Esempi di funzioni
Esempio
Risultato
exit script when A=1;
Quando l'istruzione A=1 viene valutata come TRUE, lo script si interrompe.
when A=1 LOAD * from myfile.csv;
Quando l'istruzione A=1 viene valutata come TRUE, viene caricato myfile.csv.
when A=1 unless B=2 drop table Tab1;
Quando l'istruzione A=1 viene valutata come TRUE e se B=2 viene valutato come FALSE, la tabella Tab1 viene eliminata.
Esempio 1 – Prefisso When
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
Un set di dati con date e importi che viene inviato a una tabella denominata 'Transactions'.
L'istruzione Let che afferma che la variabile A è stata creata e ha il valore di 1.
La condizione When che fornisce la condizione che se A è uguale a 1, allora lo script continuerà a essere caricato.
Script di caricamento
LET A = 1;
WHEN A = 1
Transactions:
LOAD
*
Inline [
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
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
id
date
amount
Tabella dei risultati
id
date
importo
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
Poiché alla variabile A viene assegnato il valore di 1 all'inizio dello script, la condizione che segue il prefisso When viene valutata e restituisce un risultato di TRUE. Poiché il risultato è TRUE, lo script continua a eseguire l'istruzione LOAD. È possibile visualizzare tutti i record della tabella dei risultati.
Se il valore di questa variabile fosse impostato su un valore diverso da 1, non verrebbero caricati dati nel modello dati.
Esempio 2 – Suffisso When
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
Tre set di dati con date e importi che vengono inviati a una tabella denominata 'Transactions'.
Il primo set di dati contiene le transazioni 1-7.
Il secondo set di dati contiene le transazioni 8-14.
Il terzo set di dati contiene le transazioni 15-21.
Una condizione When che determina se la tabella 'Transactions' contiene più di dieci righe. Se una qualsiasi delle istruzioni When viene valutata come TRUE, lo script di caricamento si interrompe. Questa condizione è posta alla fine di ciascuno dei tre set di dati.
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
id
date
amount
Tabella dei risultati
id
date
importo
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
Ciascuno dei tre set di dati contiene sette transazioni. Il primo set di dati contiene le transazioni 1-7 e viene caricato nell'applicazione. La condizione When che segue l'istruzione di caricamento viene valutata come FALSE perché nella tabella 'Transactions' sono presenti meno di dieci righe. Lo script di caricamento continua con il set di dati successivo.
Il secondo set di dati contiene le transazioni 8-14 e viene caricato nell'applicazione. La seconda condizione When viene valutata come TRUE perché ci sono più di dieci righe nella tabella 'Transactions'. Pertanto, lo script termina.
Esempio 3 - Prefissi When multipli
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
Un set di dati contenente una singola transazione viene creato come tabella chiamata 'Transactions'.
Un ciclo For che viene attivato contiene due condizioni nidificate When che valutano se:
Vi sono meno di 100 record nella tabella 'Transactions'.
Il numero di record nella tabella 'Transactions' non sia un multiplo di 6
Script di caricamento
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when NoOfRows('Transactions') < 100 when mod(NoOfRows('Transactions'),6) <> 0
Concatenate
Load
if(isnull(Peek(id)),1,peek(id)+1) as id
Autogenerate 7;
next i
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:
id
La tabella dei risultati mostra solo i primi cinque ID di transazione, ma lo script di caricamento crea 36 righe e termina una volta soddisfatta la condizione When.
Tabella dei risultati
id
0
1
2
3
4
5
+30 righe in più
Le condizioni When nidificate nel ciclo For valutano le seguenti domande:
Sono presenti meno di 100 righe nella tabella 'Transactions'?
Il numero totale di record nella tabella 'Transactions' non è un multiplo di sei?
Ogni volta che entrambe le condizioni When restituiscono un valore TRUE, vengono generati altri sette record e concatenati alla tabella 'Transactions' esistente.
Le condizioni When restituiscono un valore TRUE per cinque volte. A questo punto, nella tabella 'Transactions' vi è un totale di 36 righe di dati.
Quando vengono create 36 righe di dati nella tabella 'Transactions', la seconda istruzione When restituisce il valore FALSE, pertanto l'istruzione LOAD successiva non viene più eseguita.
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!