Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
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: 
Not applicable

Ajuda em fórmula...

Pessoal, boa tarde!

Estou precisando de uma dica..
O que estou tentando fazer, tenho uma tabela com campo Ano, Mes e quantidade de funcionarios.. Estou fazendo uma análise anual, para mostrar diversas informações e um dos campos, quero mostrar a quantidade de funcionários.
Mas para este caso, quero mostrar a quantidade de funcionarios do maior mes daquele ano.

Como eu fiz:

sum ({$< ACID_DT_ANO_ACIDENTE = ,
               ACID_NR_MES_ACIDENTE = {$(=MAX(ACID_DT_MES_ACIDENTE))

             >}

       )

O que acontece é que no caso de 2012 eu só tenho informações do mês de janeiro no momento e dos outros anos tenho de janeiro a dezembro. Esta acontecendo que quando não seleciono nada no filtro de ano e mês aparece o valor de quantidade de funcionários para os anos 2009, 2010, 2011, porém para 2012 traz zerado o valor.
Se eu selecionar então o mês de janeiro, mostra o valor de 2012, porém altera também as quantidades do ano de 2009, 2010, 2011, trazendo as quantidade do mes de janeiro dos respectivos anos e não do último mês.

Alguém tem alguma dica de como posso tratar isto?

Desde já agradeço a ajuda! Valeu...


Juliana Holstein.

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Então juliana,

parece algo simples, porém não é tao simples assim,

achei uma maneira de resolver isso , segue um exemplo:

if ( Max(Mês) = 12 ,

sum( {<Mês = {$(=MaxString(Mês))}>} [Valor de Venda])  ,

sum({<Mês = {$(=MaxString( {<Ano = {$(=max(Ano))}>}  Mês))}>} [Valor de Venda])

)

a idéia dessa expressão é o seguinte... se o mês for dezembro, usa aquela sua primeira expressão, do contrário

usa aquela sua expressão com um set analysis dentro do max(mês) para pegar do ultimo ano ...

-----------

Essa não é a melhor maneira, parece até algo meio POG (programação orientada a gambiarra) rsrs. Mas acredito que resolve.

Já tive essa mesma dúvida e lembro que me bati bastante ... lembro também que com a ajuda aqui da comunidade consegui resolver com uma agregação e dentro uma condicional, porém não estou lembrando e nem achando aqui na comunidade.

OBS: Isso é algo que eu não consigo entender no QlikView... o max() dentro de um set analisys nao considera a dimensão da tabela... por isso pedi pra você fazer aquele teste de criar um campo max... observe que o campo max traz perfeitamente os ultimos meses dos anos... e quando esse mesmo max é colocado dentro do set analysis ele ultiliza o mes 12 para todos os anos.

Espero que tenha ajudado.

Abraço.

View solution in original post

10 Replies
Anonymous
Not applicable
Author

Olá Juliana,

acredito que com if ja resolva seu problema

if(ACID_NR_MES_ACIDENTE  = MAX(ACID_DT_MES_ACIDENTE) , count(funcionarios))

Not applicable
Author

Olá Rodrigo, bom dia!
Obrigada por responder viu?

Fiz os testes, funcionou em parte, acho que estou fazendo alguma coisa errada.


Tirando a minha fórmula anterior

sum ({$< ACID_DT_ANO_ACIDENTE = ,
               ACID_NR_MES_ACIDENTE = {$(=MAX(ACID_DT_MES_ACIDENTE))

             >}

       )

e colocando a que você me sugeriu

if(ACID_NR_MES_ACIDENTE  = MAX(ACID_DT_MES_ACIDENTE) , count(funcionarios)).

Funciona para o ano de 2012 daí, mas para os demais anos fica em branco.
Creio que eu deva fazer algum tratamento para o ano como fiz anterioremente né? Não levando em consideração a seleção do ano. É isso?

Eu faria mais um IF neste caso? Ou utilizaria a minha fórmula e incluiria o IF?

Te mando um print para você ver.


Desde já agradeço sua ajuda,

Abs,

Juliana.exemplo.jpg

Not applicable
Author

Olá Rodrigo, bom dia!
Obrigada por responder viu?

Fiz os testes, funcionou em parte, acho que estou fazendo alguma coisa errada.


Tirando a minha fórmula anterior

sum ({$< ACID_DT_ANO_ACIDENTE = ,
               ACID_NR_MES_ACIDENTE = {$(=MAX(ACID_DT_MES_ACIDENTE))

             >}

       )

e colocando a que você me sugeriu

if(ACID_NR_MES_ACIDENTE  = MAX(ACID_DT_MES_ACIDENTE) , count(funcionarios)).

Funciona para o ano de 2012 daí, mas para os demais anos fica em branco.
Creio que eu deva fazer algum tratamento para o ano como fiz anterioremente né? Não levando em consideração a seleção do ano. É isso?

Eu faria mais um IF neste caso? Ou utilizaria a minha fórmula e incluiria o IF?

Te mando um print para você ver.


Desde já agradeço sua ajuda,

Abs,

Juliana.

Anonymous
Not applicable
Author

Juliana... vamos fazer um teste... inclui um campo só

max(mes)

e veja se acontece a mesma coisa.. só aparece 2012..

Not applicable
Author

Olá Rodrigo, ele trouxe o último mês de cada ano, veja o print.

exemplo 1.jpg

Obrigada pela ajuda até agora..


Abs,

Juliana

Anonymous
Not applicable
Author

Então juliana,

parece algo simples, porém não é tao simples assim,

achei uma maneira de resolver isso , segue um exemplo:

if ( Max(Mês) = 12 ,

sum( {<Mês = {$(=MaxString(Mês))}>} [Valor de Venda])  ,

sum({<Mês = {$(=MaxString( {<Ano = {$(=max(Ano))}>}  Mês))}>} [Valor de Venda])

)

a idéia dessa expressão é o seguinte... se o mês for dezembro, usa aquela sua primeira expressão, do contrário

usa aquela sua expressão com um set analysis dentro do max(mês) para pegar do ultimo ano ...

-----------

Essa não é a melhor maneira, parece até algo meio POG (programação orientada a gambiarra) rsrs. Mas acredito que resolve.

Já tive essa mesma dúvida e lembro que me bati bastante ... lembro também que com a ajuda aqui da comunidade consegui resolver com uma agregação e dentro uma condicional, porém não estou lembrando e nem achando aqui na comunidade.

OBS: Isso é algo que eu não consigo entender no QlikView... o max() dentro de um set analisys nao considera a dimensão da tabela... por isso pedi pra você fazer aquele teste de criar um campo max... observe que o campo max traz perfeitamente os ultimos meses dos anos... e quando esse mesmo max é colocado dentro do set analysis ele ultiliza o mes 12 para todos os anos.

Espero que tenha ajudado.

Abraço.

Not applicable
Author

Pessoal, boa tarde.

Passei por problemas parecidos, e resolvi transferindo a fórmula Max(MesAno) para uma variável, e no Set Analises referencio apenas a Variável, exemplo:

sum ({$< ACID_DT_ANO_ACIDENTE = ,
               ACID_NR_MES_ACIDENTE = {$(Variavel)}

             >}

       )

Espero ter ajudado.

Not applicable
Author

Olá Rodrigo,


Pois então isso é bem estranho né? No set Analysis não funcionar muito bem.
Fiz a fórmula conforme sua dica e funcionou certinho.
Só queria te incomodar mais um pouco, existe a possibilidade de nesta fórmula colocar para não levar em consideração o que eu seleciono nos filtros de Mes e Ano que tenho ?

Desde já agradeço sua ajuda!

Abraço,

Not applicable
Author

Olá Thiago,

Fiz um teste utilizando a váriavel, mas no meu caso permaneceu igual. Ele preencheu a quantidade nos anos 2009,2010, 2011, porém no ano de 2012 continuo zerado.

Obrigada pela dica.

Abs,

Juliana