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.
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
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 carregamento 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.
As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor em que o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Sense. O Qlik Sense será exibido no mesmo idioma do navegador que você está usando.
Exemplo 1: prefixo “unless”
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
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.
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
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
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”
Visão geral
Abra o editor da carga 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.
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
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
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”
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:
A menos que haja mais de 100 registros na tabela Transactions
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:
Há mais de 100 linhas na tabela Transactions?
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.
Esta página ajudou?
Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!