12 Replies Latest reply: Sep 15, 2016 8:15 AM by Flavio Eduardo RSS

    Duvida em calculo de Straight Table

    Flavio Eduardo

      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

        • Re: Duvida em calculo de Straight Table
          Flavio Eduardo

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

            • Re: Duvida em calculo de Straight Table
              mauro ponte

              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.

                • Re: Duvida em calculo de Straight Table
                  flavio eduardo

                  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

              • Re: Duvida em calculo de Straight Table
                rodrigo silvestre

                FirstSortedValue( Valor ,- AnoMes)

                • Re: Duvida em calculo de Straight Table
                  flavio eduardo

                  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?

                    • Re: Duvida em calculo de Straight Table
                      mauro ponte

                      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.

                      • Re: Duvida em calculo de Straight Table
                        rodrigo silvestre

                        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) )

                         

                         

                         

                         


                          • Re: Duvida em calculo de Straight Table
                            Flavio Eduardo

                            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

                        • Re: Duvida em calculo de Straight Table
                          flavio eduardo

                          Pessoal cheguei em uma formula aqui com base no que vocês me disseram que resolveu o problema. a formula é

                           

                          Sum(if(AnoMes = Aggr(NODISTINCT Max(TOTAL<Cliente,Produto> AnoMes),Cliente,Produto, AnoMes), Valor))

                           

                          Confesso que ainda não esta tão claro o funcionamento dessa formula na minha cabeça, se eu tirar o total de dentro da função max o qlikview soma tudo com base no cliente e produto e desconsidera o anomes, não entendi pq tenho que colocar o total nessa formula.