Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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!!