Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Duvida em calculo de Straight Table

Ola,

estou com uma duvida que deve ser bem iniciante, eu gostaria de ter uma coluna que retorna o AnoMes mês máximo para cada cliente, isso eu resolvi Usando um Max(AnoMes), em outra coluna eu gostaria que aparecesse a soma dos valores que pertencem a esse AnoMes máximo, estou usando o calculo da imagem abaixo porem somente o primeiro valor esta retornando a soma do AnoMes para o valor máximo, como faço para que todos os cliente/produto tenha os valores preenchidos corretamente?

Obrigado

Sem título.png

Labels (1)
1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

no set analysis pelo que eu sei você não vai conseguir dessa maneira, o porque disso é o seguinte: a expressão dentro do set analysis ela não considera as dimensões do gráfico ou tabela, ela é calculada fora do objeto e apenas replicado o valor, é a mesma coisa que vc jogar essa expressão max(AnoMes) em um objeto de texto e apenas copiar o valor desse objeto para todas as linhas de sua tabela.

o FirstSortedValue( Valor ,- AnoMes) , como eu havia mencionado antes atende sua necessidade, funcionou no seu exemplo pelo menos... Outra solução seria vc colocar essa condição em um if() dentro do sum(), seria algo tipo:

sum(if(AnoMes = aggr(max(AnoMes),Cliente,Produto) , valor) )


View solution in original post

12 Replies
Anonymous
Not applicable
Author

Pessoal postei por engano o arquivo errado, gerei outro aqui.

mauroponte
Creator II
Creator II

Flavio,

Veja se a expressão abaixo tem o resultado que voce deseje:

aggr(sum({<AnoMes={"$(=Max(AnoMes))"}>} total  Valor),Cliente,Produto)

Anexo vai o QVW alterado.

Espero ter ajudado.

Anonymous
Not applicable
Author

FirstSortedValue( Valor ,- AnoMes)

flaviosouza37
Contributor II
Contributor II

Obrigado pela resposta Mauro, tem um probleminha nessa expressão, o que eu precisa era que acontecesse a seguinte situação:

Cliente = 1 e Produto = 1 teve a ultima venda em 201607 e o total de vendas é 50, até aqui o resultado esta correto.

Cliente = 1 e Produto = 2 teve a ultima venda em 201501 e o total de vendas é 30.

Cliente = 3 e Produto = 1 teve a ultima venda em 201601 e o total de vendas é 60.

Ou seja eu precisava que fosse retornado em cada linha a soma do maior ano e mes de venda para cada cliente/produto.

Sem título.png

flaviosouza37
Contributor II
Contributor II

Andei fazendo alguns testes aqui e consegui chegar no resultado que eu preciso mas fazendo manualmente:

Sem título.png

A expressão acima esta na coluna valor, como eu coloquei um array com os maiores AnoMes o QlikView conseguiu fazer o calculo corretamente então pelo que eu entendi eu preciso de algo que retorne um vetor de AnoMes Maximos ali dentro das chaves. Não conheço muito do QlikView mas pelo que eu entendi se eu fizer

Aggr(Max(AnoMes), Cliente, Produto) isso me retornaria um agrupamento de Cliente/Produto com os maximos AnoMes de cada um, com base nisso tentei a expressão Sum({<AnoMes = {$(=Aggr(Max(AnoMes), Cliente, Produto))}>} Valor). Assim o AnoMes estaria apontando pra esse array com os máximos AnoMes de cada cliente e produto porem isso não funcionou.

Outro teste que fiz foi usando a propria coluna que tem o Valor máximo, se já existe uma coluna com essa informação acho que seria uma boa usa-la novamente assim evita mais cálculos, tentei de varias formas fazer isso, uma dessas tentativas é como na imagem abaixo onde eu referencio o AnoMes a coluna Max que já tem a informação que eu preciso por isso não funciona, como eu posso reutilizar uma coluna no set analysis?

Sem título.png

Eu ainda estou tendo dificuldade pra entender o que esta acontecendo internamente no qlikview, não consigo ver onde esta o problema, alguém saberia me dizer?

mauroponte
Creator II
Creator II

Flavio,

Fiz um teste com a solução que o Rodrigo passou e acho que atende a sua necessidade.

Veja o QVW ajustado que estou anexando.

Anonymous
Not applicable
Author

no set analysis pelo que eu sei você não vai conseguir dessa maneira, o porque disso é o seguinte: a expressão dentro do set analysis ela não considera as dimensões do gráfico ou tabela, ela é calculada fora do objeto e apenas replicado o valor, é a mesma coisa que vc jogar essa expressão max(AnoMes) em um objeto de texto e apenas copiar o valor desse objeto para todas as linhas de sua tabela.

o FirstSortedValue( Valor ,- AnoMes) , como eu havia mencionado antes atende sua necessidade, funcionou no seu exemplo pelo menos... Outra solução seria vc colocar essa condição em um if() dentro do sum(), seria algo tipo:

sum(if(AnoMes = aggr(max(AnoMes),Cliente,Produto) , valor) )


Anonymous
Not applicable
Author

Rodrigo,

Essas expressões que você fez realmente atendem esse exemplo que eu tinha passado mas acho que eu fiz um exemplo que não reflete a realidade da situação aqui do trabalho, fiz a alteração e a imagem abaixo representa melhor o que estou passando, vão ocorrer varias vendas por mês então eu precisava retornar a soma das vendas desses AnoMes máximos, usei a formula abaixo e o resultado não fica correto, coloquei mais uma venda em 201607 então o resultado desde período deveria ser 90, por algum motivo esse 90 esta aparecendo no total das colunas.

Em 201501 o total deveria ser 40 porem ele retorna 30.

Tentei arrumar de diversas formas aqui mas não consegui entender qual a logica que o qlikview usa pra fazer esse calculo, eu não consigo ver problema na formula da imagem abaixo.

Sem título.png

Anonymous
Not applicable
Author

Essa formula atende pro exemplo que eu tinha passado mas eu fiz um exemplo errado, em um mês poderiam ocorrer varias vendas e eu precisaria retornar a soma das vendas com o maior anomes de cada produto e cliente.