# Unless

O prefixo e o sufixo unless são utilizados para criar uma cláusula condicional que determina se um comando ou uma cláusula exit deve ser avaliada. Pode ser considerado como uma alternativa compacta do comando if..end if.

Sintaxe:

(Unless condition statement | exitstatement Unless condition )

O statement ou o exitstatement será executado apenas se condition for avaliado comoFalse.

O prefixo unless pode ser utilizado em comandos que já possuem um ou vários outros comandos, inclusive prefixos adicionais unless ou when.

Argumentos

| Argumento | Descrição |
| --- | --- |
| condition | Uma expressão lógica de avaliação como True ou False. |
| statement | Qualquer comando de script do Qlik Sense, exceto os de controle. |
| exitstatement | Uma cláusula exit for, exit do ou exit sub ou um comando exit script. |

## Quando usar Unless

A instrução `Unless` retorna um resultado booleano. Normalmente, esse tipo de função será usado como uma condição quando o usuário quiser carregar ou excluir condicionalmente partes do script.

As linhas a seguir mostram três exemplos de como a função `Unless` pode ser usada:

`exit script 
 unless A=1;` `unless A=1 
 LOAD  * from myfile.csv;` `unless A=1 
 when B=2 drop table Tab1;`

## Configurações regionais

A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução `SET DateFormat` no seu script de carga de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos. Para obter mais informações, consulte [Modificando configurações regionais para aplicativos e scripts](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

As configurações regionais padrão nos aplicativos são baseadas no perfil do usuário. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Cloud. O Qlik Cloud será exibido no mesmo idioma do navegador que você está usando.

Se você for um criador de aplicativos, poderá definir a região padrão para os aplicativos que criar. Para obter mais informações, consulte [Definir suas configurações regionais preferidas para criar aplicativos e scripts no Qlik Cloud Analytics](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Exemplo 1: prefixo “unless”

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

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* A criação da variável A, à qual é especificado um valor de 1.

* Um conjunto de dados que é carregado em uma tabela denominada Transactions, a menos que a variável A = 2.

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `id`

* `date`

* `amount`

Tabela de resultados

| id | data | quantidade |
| --- | --- | --- |
| 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 |

Como a variável A recebe o valor de 1 no início do script, a condição após o prefixo `Unless` é avaliada, retornando um resultado de `FALSE`. Como resultado, o script continua executando a instrução `Load`. Na tabela de resultados, todos os registros da tabela `Transactions` podem ser vistos.

Se o valor dessa variável for definido como igual a 2, nenhum dado será carregado no modelo de dados.

## Exemplo 2: sufixo “unless”

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

#### Script de carregamento e resultados

Visão geral

Abra o editor de carregamento de dados e adicione o script de carregamento abaixo em uma nova guia.

O script de carregamento começa carregando um conjunto de dados inicial em uma tabela denominada `Transactions`. O script é então encerrado, a menos que haja menos de 10 registros na tabela `Transactions`.

Se essa condição não resultar no encerramento do script, um conjunto adicional de transações será concatenado na tabela `Transactions`, e esse processo será repetido.

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `id`

* `date`

* `amount`

Tabela de resultados

| id | data | quantidade |
| --- | --- | --- |
| 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 |

Há sete registros em cada um dos três conjuntos de dados do script de carregamento.

O primeiro conjunto de dados (com a transação `id` de 1 a 7) é carregado no aplicativo. A condição `Unless` avalia se há menos de 10 linhas na tabela `Transactions`. Isso é avaliado como `TRUE` e, portanto, o segundo conjunto de dados (com as transações `id` de 8 a 14) é carregado no aplicativo. A segunda condição `Unless` avalia se há menos de 10 registros na tabela `Transactions`. Isso é avaliado como `FALSE` e, portanto, o script é encerrado.

## Exemplo 3: vários prefixos “unless”

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

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.

Neste exemplo, um conjunto de dados contendo uma transação é criado como uma tabela denominada `Transactions`. Um loop “for” é então acionado, no qual duas instruções “unless” aninhadas são avaliadas:

1. A menos que haja mais de 100 registros na tabela `Transactions`

2. A menos que o número de registros na tabela `Transactions` seja múltiplo de 6

Se essas condições forem `FALSE`, mais sete registros serão gerados e concatenados na tabela `Transactions` existente. Esse processo é repetido até que uma das duas transações retorne um valor de `TRUE`.

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:`id`.

Tabela de resultados

| id |
| --- |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| Mais de 30 linhas |

As instruções “unless” aninhadas que ocorrem no loop “for” avaliam o seguinte:

1. Há mais de 100 linhas na tabela `Transactions`?

2. O número total de registros na tabela `Transactions` é múltiplo de 6?

Sempre que ambas as instruções “unless” retornam um valor de `FALSE`, mais sete registros são gerados e concatenados na tabela `Transactions` existente.

Essas instruções retornam um valor de `FALSE` cinco vezes, momento em que há um total de 36 linhas de dados na tabela `Transactions`.

Depois disso, a segunda instrução `Unless` retorna um valor de `TRUE` e, portanto, a instrução de carregamento seguinte não será mais executada.