O prefixo e o sufixo when são utilizados para criar uma cláusula condicional que determina se um comando ou uma cláusula exit deve ser executada. Pode ser considerado como uma alternativa compacta do comando if..end if.
No Qlik Sense, o valor booleano “true” é representado por -1, e o valor falso é representado por 0.
A instrução ou a instrução de saída apenas será executada se a condição for avaliada como TRUE.
O prefixo Unless pode ser utilizado em comandos que já possuem um ou vários outros comandos, inclusive prefixos adicionais When ou When.
Quando usar
A instrução When retorna um resultado booleano. Normalmente, esse tipo de função será usado como uma condição quando o usuário quiser carregar ou excluir partes de um script.
Argumentos
Argumento
Descrição
condition
Uma expressão lógica que é avaliada 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.
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. Para obter mais informações, consulte Modificando configurações regionais para aplicativos e scripts.
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.
Quando a instrução A=1 for avaliada como TRUE, o script será interrompido.
when A=1 LOAD * from myfile.csv;
Quando a instrução A=1 for avaliada como TRUE, o myfile.csv será carregado.
when A=1 unless B=2 drop table Tab1;
Quando a instrução A=1 for avaliada como TRUE e B=2 for avaliada como FALSE, a tabela Tab1 será descartada.
Exemplo 1: prefixo “when”
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:
Um conjunto de dados com datas e valores que é enviado para uma tabela denominada "Transactions".
A instrução Let que afirma que a variável A foi criada e tem o valor de 1.
A condição When que fornece a condição de que, se A for igual 1, o script continuará sendo carregado.
Script de carregamento
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
];
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 When é avaliada e retorna o resultado TRUE. Como ela retorna um resultado TRUE, o script continua executando a instrução de carregamento. Todos os registros da tabela de resultados podem ser vistos.
Se esse valor de variável fosse definido como qualquer valor diferente de 1, nenhum dado seria carregado no modelo de dados.
Exemplo 2: sufixo “when”
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:
Três conjuntos de dados com datas e valores enviados para uma tabela denominada “Transactions”.
O primeiro conjunto de dados contém transações de 1 a 7.
O segundo conjunto de dados contém transações de 8 a 14.
O terceiro conjunto de dados contém transações de 15 a 21.
Uma condição When que determina se a tabela “Transactions” contém mais de dez linhas. Se alguma das instruções When for avaliada como TRUE, o script de carregamento será interrompido. Essa condição é colocada no final de cada um dos três conjuntos de dados.
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 transações em cada um dos três conjuntos de dados. O primeiro conjunto de dados contém a transação de 1 a 7 e é carregado no aplicativo. A condição When após essa instrução de carregamento é avaliada como FALSE, porque há menos de dez linhas na tabela “Transactions”. O script de carregamento continua até o próximo conjunto de dados.
O segundo conjunto de dados contém a transação de 8 a 14 e é carregado no aplicativo. A segunda condição When é avaliada como TRUE porque há mais de dez linhas na tabela “Transactions”. Portanto, o script é encerrado.
Exemplo 3: vários prefixos “when”
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:
Um conjunto de dados contendo uma única transação é criado como uma tabela denominada “Transactions”.
Um loop For que é acionado contém duas condições When aninhadas que avaliam se:
Há menos de 100 registros na tabela “Transactions”.
O número de registros na tabela “Transactions” não é múltiplo de 6.
Script de carregamento
RowsCheck = NoOfRows('Transactions') < 100 or mod(NoOfRows('Transactions'),6) <> 0;
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
when(RowsCheck)
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
A tabela de resultados mostra apenas os primeiros cinco IDs de transação, mas o script de carregamento cria 36 linhas e depois termina quando a condição When é atendida.
Tabela de resultados
id
0
1
2
3
4
5
Mais de 30 linhas
As condições When aninhadas no loop For avaliam as seguintes perguntas:
Há menos de 100 linhas na tabela “Transactions”'?
O número total de registros na tabela “Transactions” não é múltiplo de seis?
Sempre que ambas as condições When retornam um valor TRUE, mais sete registros são gerados e concatenados na tabela “Transactions” existente.
As condições When retornam um valor TRUE cinco vezes. Nesse ponto, há um total de 36 linhas de dados na tabela “Transactions”.
Quando 36 linhas de dados são criadas na tabela “Transactions”, a segunda instrução When retorna um valor FALSE 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!