6 Replies Latest reply: Mar 12, 2018 2:09 PM by Leonardo Alexsander RSS

    Expressão Rank com Soma Acumulada até Rank X

    Leonardo Alexsander

      Boa tarde,
      Eu gostaria de saber se é possível utilizar a expressão Rank de uma forma mais dinamica. Aonde ela irá ajudar fazendo o calculo das Vendas Acumuladas até o Rank da linha.

       

      Exemplo:

       

      RankVendasVendas Acumulada
      15050
      860440
      780380
      490195
      320105
      23585
      545240
      660300
      990530

       

      Então se olharmos o Rank 7 por exemplo, ele somaria todas as linhas até o rank 7.

       

      Agradeço desde já pela atenção.

        • Re: Expressão Rank com Soma Acumulada até Rank X
          Digvijay Singh

          How the Rank column used here, if its a measure, not sure what expression is used, it doesn't look to be ranking sales data so you may need to share some more info. If rank is a dimension here then may be like this -

          Capture.PNG

          • Re: Expressão Rank com Soma Acumulada até Rank X
            THIAGO TEIXEIRA

            Leonardo,

             

            Se quiser uma solução via script:

             

            VENDAS_TEMP:

            LOAD * INLINE [

            Rank,Vendas

            1, 50

            8, 60

            7, 80

            4, 90

            3, 20

            2, 35

            5, 45

            6, 60

            9, 90

            ];

             

            VENDAS:

            LOAD

            *,

                NumSum(Vendas,Peek('Acumulado')) as Acumulado

            RESIDENT  VENDAS_TEMP Order By Rank;

            DROP TABLE VENDAS_TEMP;

             

            Resultado:

            Capturar.PNG

            • Re: Expressão Rank com Soma Acumulada até Rank X
              Pablo Labbe

              Olá Leonardo.

               

                Resolvida sua dúvida ? se sim marque como "Correta" a resposta..

                • Re: Expressão Rank com Soma Acumulada até Rank X
                  Leonardo Alexsander

                  Boa tarde,
                  Obrigado pelo retorno pessoal. Mas o problema é um pouquinho mais complicado.
                  Vou tentar explicar melhor:

                   

                  Tenho essa tabela abaixo que possui uma Expressão de Rank na terceira coluna;

                  A 4ª Coluna é exatamente o que eu gostaria de fazer:

                  Case #1.png

                   

                  Só que ela da certo por que a ordem está crescente na coluna do Rank, aí ela só acumula e fica tudo OK. Mas eu gostaria que independente da ordem que o Rank estivesse, a expressão da 4ª Coluna só calcula-se as vendas até o Rank do produto. Se eu embaralhar a ordem, veja o que acontece:

                  Case #2.png

                   

                  Ela não calcula do jeito que eu gostaria respeitando a venda acumulada até o RANK do PRODUTO. É claro que no exemplo acima, a 4ª Coluna soma linha a linha e vai acumulando o que tem em cima sem se preocupar com o Rank.

                   

                  É como se fosse uma função do excel:
                  Somases(Coluna VENDAS, Coluna RANK, "<=Rank do Produto")

                   

                  Acho que agora consegui melhorar minha explicação rs.

                   

                  Agradeço desde já a atenção

                    • Re: Expressão Rank com Soma Acumulada até Rank X
                      THIAGO TEIXEIRA

                      Sei que os mais experientes não recomendariam isso, mas te proponho algo direto no script (o que não sofrerá impacto com a interação do usuário com o painel);

                       

                      Fazer o ranking na carga:

                       

                      VENDAS_TEMP:

                      LOAD * INLINE [

                       

                          VENDEDOR_ID,TOTAL_VENDA

                          1,2000

                          2,2100

                          3,1800

                          4,2150

                          5,3000

                      ];

                       

                      LEFT JOIN (VENDAS_TEMP)

                      LOAD * INLINE [

                          VENDEDOR_ID,VENDEDOR

                          1,VANDERLEI SILVA

                          2,CASTRO ALVES

                          3,JULIO KOELLER

                          4,ERIC CLAPTON

                          5,JOHN ABE

                      ];

                       

                      VENDAS:

                      LOAD

                           *,

                             AutoNumber(TOTAL_VENDA) as RANK,

                              NumSum(TOTAL_VENDA,Peek('ACUMULADO')) as ACUMULADO

                      Resident VENDAS_TEMP

                      Order By TOTAL_VENDA desc;

                      DROP TABLE VENDAS_TEMP;

                       

                      Olha o resultado:

                      Teste.gif