Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Guilhermearthur
Contributor II
Contributor II

Interseção e união com cláusula Where no Load

Olá pessoal sou novato no Qlik, 

estou com uma dificuldade de seleção dos dados no script de carregamento de dados..

Eu preciso carregar apenas dados nas seguintes condições:

1 - Que o campo TIPO seja ''Solicitação de informação''

2 - Que o campo STATUS seja tudo, exceto ''cancelada''

3 - Respondidas em 2021, ou que ainda não tenha sido respondida(ou seja , campo resposta nulo)

 

Eu consigo gerar o carregamento com as seguintes  condições :

1 e 2 acima + data  de resposta partir de 2021( excluindo os sem resposta)

1 e 2 acima + sem resposta (excluindo os atendidos em 2021)

Porém não consegui gerar com as condições 1 e 2 acima ao mesmo tempo com a união dos critérios de data.

Eu tentei usar o comando abaixo:

where  
Demanda.Tipo = 'Solicitação de informação'
and not
[Demanda.Status]= 'Cancelada'

and
 len(trim([Demanda.Data da Resposta])) = 0 or
[Demanda.Data da Resposta]>= '2020-12-31'

 

Me parece que nos comandos de data acima, ele ignora as 2 primeiras condições (do Tipo e Status) e traz tudo que tiver atendimento em 2021 ou ainda sem resposta (nulo).

 

Alguém saberia me dar uma luz?

Obrigado!

1 Solution

Accepted Solutions
Guilhermearthur
Contributor II
Contributor II
Author

talvez seja útil para outros colegas, consegui chegar na solução para o problema da data... 

o campo data foi tratado da forma abaixo, puxando os 4 primeiros caracteres (função LEFT) que são o ano da resposta

WHERE

(LEFT([Demanda.Data da Resposta],4) > '2020' OR ISNULL([Demanda.Data da Resposta]))

View solution in original post

7 Replies
RafaMartins
Creator II
Creator II

Bom dia se está fazendo um load o where não aceita muitas funções de igualdade como no sql por exemplo.

para não ler uma linha de campo especifica você precisa usar o wildmatch, dessa forma

where  
Demanda.Tipo = 'Solicitação de informação'
and wildmatch([Demanda.Status], 'Cancelada')=0

wildmatch()=0 informa que não será lida a linha dentro da função

Thiago_Justen_

Bom dia nobre,

 

Vamos lá. Usando o teu script exemplo e o alterando para atender à tua necessidade: 

where  
Demanda.Tipo = 'Solicitação de informação'
and not
[Demanda.Status]= 'Cancelada'

and
IsNull([Demanda.Data da Resposta]) or
Year([Demanda.Data da Resposta])>= 2020

 

Abs e Sucesso

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Guilhermearthur
Contributor II
Contributor II
Author

Olá Rafa Martins,

 

Eu consegui fazer as 2 primeiras cláusulas simultâneas . A minha dificuldade é juntar ela com a 3a clausula de data da resposta (atendidas em 2021 ou sem atendimento)

No esquema abaixo , acho que fica mais fácil de atender. As 3 primeiras linhas não atendem os 3 critérios simultaneamente(o que não atende pintei de vermelho) e quero que sejam descartadas.

TIPO                                                      STATUS                              DATA RESPOSTA    Carregar ?
Solicitação de informação         Atendida                              01/12/2020             NAO
Solicitação de informação         Cancelada                                     -                         NAO
Reclamação                                      Atendida                              01/03/2021             NAO
Solicitação de informação         Atendida                               01/02/2021             SIM
Solicitação de informação          Em atendimento                    -                             SIM

Será que consigo carregar dessa forma?

 

 

Guilhermearthur
Contributor II
Contributor II
Author

Olá Thiago, 

tentei conforme a sua sugestão, mas o Load trouxe apenas as demandas sem resposta (valor nulo).

Solicitação de informação + Todos Status, exceto cancelada + sem resposta

 

Não considerou as que possuem resposta em 2021, que seria:

Solicitação de informação + Todos Status, exceto cancelada + Resposta em 2021

 

Eu simulei carregar somente as com resposta em 2021, da seguinte forma

where  
Demanda.Tipo = 'Solicitação de informação'
and not
[Demanda.Status]= 'Cancelada'

and

Year([Demanda.Data da Resposta])>= 2020

 

E o Qlik trouxe nenhum resultado. Será que falta algum ajuste no código, no trecho que indica que respostas em 2021 ?

Thiago_Justen_

Bem, não como está formatado teu campo data de resposta, portanto faça o seguinte:

 

Para carregar dados de 2021:

 

Date(Num([Data Abast]),'YYYY')='2021'

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Guilhermearthur
Contributor II
Contributor II
Author

Também retornou nenhum resultado dessa forma.

 

A fonte de dados que estou usando é um arquivo QVD.

Quando eu faço um carregamento de dados desse arquivo, é mostrado o seguinte formato de data , na Seção Gerada automaticamente.

Timestamp(Timestamp#([Demanda.Data da Resposta], 'YYYY-MM-DDThh:mm:ss.fffK') ) AS [Demanda.Data da Resposta],

Guilhermearthur
Contributor II
Contributor II
Author

talvez seja útil para outros colegas, consegui chegar na solução para o problema da data... 

o campo data foi tratado da forma abaixo, puxando os 4 primeiros caracteres (função LEFT) que são o ano da resposta

WHERE

(LEFT([Demanda.Data da Resposta],4) > '2020' OR ISNULL([Demanda.Data da Resposta]))