Il prefisso e suffisso unless viene utilizzato per creare una clausola condizionale che determina se valutare o meno un'istruzione oppure una clausola exit. Può essere considerato come un'alternativa compatta all'istruzione completa if..end if.
L'istruzione statement o exitstatement verrà eseguita solo se condition restituisce False.
Il prefisso unless può essere utilizzato con istruzioni che presentano già almeno un’altra istruzione, inclusi i prefissi addizionali when o unless.
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.
Casi di utilizzo
L'istruzione Unless restituisce un risultato booleano. In genere, questo tipo di funzione viene utilizzata come condizione quando l'utente desidera caricare o escludere parti dello script in modo condizionato.
Le righe seguenti mostrano tre esempi di utilizzo della funzione Unless:
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
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.
Esempio 1 - Prefisso Unless
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
La creazione della variabile A, alla quale viene assegnato il valore 1.
Un set di dati che viene caricato in una tabella denominata Transazioni, a meno che la variabile A = 2.
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 1 all'inizio dello script, la condizione che segue il prefisso Unless viene valutata, restituendo un risultato di FALSE. Di conseguenza, lo script continua a eseguire l'istruzione Load. Nella tabella dei risultati sono visibili tutti i record della tabella Transactions.
Se il valore di questa variabile è impostato su 2, non verranno caricati dati nel modello dati.
Esempio 2 – Suffisso Unless
Panoramica
Aprire l'Editor di caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento dati inizia caricando un set di dati iniziale in una tabella denominata Transactions. Lo script viene quindi terminato se non vi sono meno di 10 record nella tabella Transactions.
Se questa condizione non porta alla chiusura dello script, un altro set di transazioni viene concatenato nella tabella Transactions e il processo viene ripetuto.
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
Sono presenti sette record in ciascuno dei tre set di dati dello script di caricamento.
Il primo set di dati (con le transazioni da id 1 a 7) viene caricato nell'applicazione. La condizione Unless valuta se nella tabella Transactions ci sono meno di 10 righe. La valutazione è pari a TRUE, quindi il secondo set di dati (con le transazioni id da 8 a 14) viene caricato nell'applicazione. La seconda condizione Unless viene valutata se nella tabella Transactions sono presenti meno di 10 record. La valutazione è pari a FALSE, quindi lo script termina.
Esempio 3 – Prefissi Unless multipli
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
In questo esempio, un set di dati contenente una transazione viene creato come tabella chiamata Transactions. Viene quindi attivato un ciclo "for", in cui vengono valutate due istruzioni "unless" nidificate:
A meno che non ci siano più di 100 record nella tabella Transactions
A meno che il numero di record nella tabella Transactions non sia un multiplo di 6
Se queste condizioni sono FALSE, vengono generati altri sette record e concatenati alla tabella Transactions esistente. Questo processo viene ripetuto finché una delle due transazioni non restituisce un valore di TRUE.
Script di caricamento
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
unless NoOfRows('Transactions') > 100 unless 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.
Tabella dei risultati
id
0
1
2
3
4
5
+30 righe in più
Le istruzioni nidificate unless che si verificano nel ciclo 'for' valutano quanto segue:
Sono presenti più di 100 righe nella tabella Transactions?
Il numero totale di record nella tabella Transactions è un multiplo di 6?
Ogni volta che entrambe le istruzioni unless restituiscono un valore di FALSE, vengono generati altri sette record e concatenati alla tabella Transactions esistente.
Queste istruzioni restituiscono un valore di FALSE cinque volte, a questo punto è presente un totale di 36 righe di dati nella tabella Transactions.
Dopodiché, la seconda istruzione Unless restituisce un valore di TRUE, pertanto l'istruzione di caricamento successiva non verrà 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!