# Unless

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.

Sintassi:

(Unless condition statement | exitstatement Unless condition )

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

## Quando usare Unless

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/DD/YYYY. 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. Per ulteriori informazioni, vedere [Modifica delle impostazioni internazionali per applicazioni e script](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Le impostazioni regionali predefinite nelle applicazioni si basano sul profilo utente. Queste impostazioni di formato regionale non riguardano la lingua visualizzata nell'interfaccia utente Qlik Cloud. Qlik Cloud verrà visualizzato nella stessa lingua del browser utilizzato.

Se si è un creatore di applicazioni, è possibile impostare la regione predefinita per le applicazioni che si creano. Per ulteriori informazioni, vedere [Regolazione delle impostazioni internazionali preferite per la creazione di app e script in Qlik Cloud Analytics](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Esempio 1 - Prefisso Unless

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.htm)

#### Script di caricamento e risultati

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

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.

Script di caricamento

```
LET A = 1;

UNLESS A = 2

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 | 30/08/2018 | 23,56 |
| 2 | 09/07/2018 | 556,31 |
| 3 | 16/09/2018 | 5,75 |
| 4 | 22/09/2018 | 125,00 |
| 5 | 22/09/2018 | 484,21 |
| 6 | 22/09/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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.htm)

#### Script di caricamento e risultati

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.

Script di caricamento

```
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
];


exit script unless NoOfRows('Transactions') < 10 ;

Concatenate
LOAD
* 
Inline [
id, date, amount
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
];

exit script unless NoOfRows('Transactions') < 10 ;

Concatenate
LOAD
* 
Inline [
id, date, amount
15, 10/01/2018, 164.27
16, 10/03/2018, 384.00
17, 10/06/2018, 25.82
18, 10/09/2018, 312.00
19, 10/15/2018, 4.56
20, 10/16/2018, 90.24
21, 10/18/2018, 19.32
];

exit script unless NoOfRows('Transactions') < 10 ;
```

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 | 30/08/2018 | 23,56 |
| 2 | 09/07/2018 | 556,31 |
| 3 | 16/09/2018 | 5,75 |
| 4 | 22/09/2018 | 125,00 |
| 5 | 22/09/2018 | 484,21 |
| 6 | 22/09/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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.htm)

#### Script di caricamento e risultati

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:

1. A meno che non ci siano più di 100 record nella tabella `Transactions`

2. 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:

1. Sono presenti più di 100 righe nella tabella `Transactions`?

2. 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.