Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
josh_ben86
Contributor III
Contributor III

Problema Filtros

Boa tarde !
 

Primeiramente, gostaria de informar que utilizo MasterCalendário. 

MasterCalendar:
Carrega
TempDate como [data_emissão],
semana (TempDate) Como semana,  
Ano (TempDate) Como Ano,  
Mês (TempDate) Como Mês,  
Dia (TempDate) Como dia,  
(Ano (TempDate) -1) * 12 + num ( (TempDate)) como PeriodoID,
ApplyMap ('QuartersMap', Mês (TempDate), Nulo ()) como Trimestre,
NomeMês (TempDate) como MesAno,
Semana (Tempestate)) & '-' & WeekYear (TempDate) como semana,  
Se (TempDate <= Hoje (), 1,0) Como FlgProjetado,  
Se (TempDate> = Hoje (), 1,0) Como FlgProjetado,
WeekDay (TempDate) como diasemana  
Residente TempCalendar;
Drop Table TempCalendar;

Em todas as pastas e Dashs trago apenas o resultado do ano atual. Utilizo a seguinte expressão:

Sum ({$ <PeriodoID = {"<= $ (= max (PeriodoID))"}, Ano = {"$ (= max (Ano))"}>} Medida)

A dúvida é a seguinte:

Tenho um filtro Chamado "Movimento" que têm Aéreo, Carro e Hotel. Apenas Aéreo e o Hotel possuem vendas em 2019. Ao clicar no carro, os gráficos e o KPIS me trazem o valor do ano anterior. Alguem poderia me auxliar pq isso ocorre? Sendo que deveria me retornar 0 para o carro.

1 Solution

Accepted Solutions
erick_ws
Contributor II
Contributor II

Dá uma olhada se assim atende, ele vai considerar o ano e períodoID máximos (desconsiderando a seleção feita no campo Movimento(caso houver). Pelo que entendi esse atendeu, simulei uns dados e filtrando o ano anterior e um movimento (sem dados para o ano atual) ele exibiu 0 na soma.

=Sum ({1 <PeriodoID = {"<= $ (= max ({$<Movimento=>}PeriodoID))"}, Ano = {"$ (= max ({$<Movimento=>}Ano))",Movimento=$::Movimento}>} Medida)

View solution in original post

6 Replies
erick_ws
Contributor II
Contributor II

Como não tem registros para "Carro" para o ano atual, o max(ANO) dele retorna o ano passado.

Adicionando o 1 no início do set analysis faz ele considerar todo o universo dos dados, ignorando as seleções, depois disso ele considera onde o periodo e o ano forem igual ao valor máximo, logo, ano atual, e adicionando no final Movimento=$::Movimento irá considerar o filtro selecionado para o campo Movimento.

O resultado disso deve ser 0 na sua aplicação, faça um teste. (usando o 1 no ínicio do set analysis irá desconsiderar qualquer filtro que você não deixe explícito dentro do set.)

Sum ({1 <PeriodoID = {"<= $ (= max (PeriodoID))"}, Ano = {"$ (= max (Ano))",Movimento=$::Movimento}>} Medida)

josh_ben86
Contributor III
Contributor III
Author

Érick...obrigado pela resposta. Eu trago apenas ano atual, porém nada impede do usuário filtrar o ano anterior ou qualquer outro tipo de filtro... creio que não frisei isso!!

Consigo fazer o qlik colocar 0 se não tiver registro?... Pensei que o ocorrido fosse isso mesmo mas não sei como ajustar, se é que tem como rsss..!!

erick_ws
Contributor II
Contributor II

Caso o usuário filtrar o ano ou outra coisa o seu KPI deve mudar? Ou quer que ele continue no ano atual?
josh_ben86
Contributor III
Contributor III
Author

Tem que mudar sim... Por exemplo... se filtrar 2018: Apenas 2018 e assim por diante... Isso o Dash faz, porém estou com esse problema de Movimento que não tem dados e retorna valores de ano anterior.
Não posso restringir o usuário.
erick_ws
Contributor II
Contributor II

Dá uma olhada se assim atende, ele vai considerar o ano e períodoID máximos (desconsiderando a seleção feita no campo Movimento(caso houver). Pelo que entendi esse atendeu, simulei uns dados e filtrando o ano anterior e um movimento (sem dados para o ano atual) ele exibiu 0 na soma.

=Sum ({1 <PeriodoID = {"<= $ (= max ({$<Movimento=>}PeriodoID))"}, Ano = {"$ (= max ({$<Movimento=>}Ano))",Movimento=$::Movimento}>} Medida)
josh_ben86
Contributor III
Contributor III
Author

Fiz alguns testes rápidos e a principio deu certo... só vou ajustar a expressão caso alguém tenha a mesma dificuldade.
=Sum ({1 <PeriodoID = {"<= $ (= max ({$<Movimento=>}PeriodoID))"}, Ano = {"$ (= max ({$<Movimento=>}Ano))"},Movimento=$::Movimento>} Medida).

Obrigado pela força Erick... Grande Abraço!!