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: 
leonardo_alexsa
Contributor II
Contributor II

Expressão Rank com Soma Acumulada até Rank X

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.

1 Solution

Accepted Solutions
Thiago_Justen_

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

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago

View solution in original post

6 Replies
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

Thiago_Justen_

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

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
pablolabbe
Luminary Alumni
Luminary Alumni

Olá Leonardo.

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

leonardo_alexsa
Contributor II
Contributor II
Author

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

Thiago_Justen_

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

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
leonardo_alexsa
Contributor II
Contributor II
Author

Vou explorar esta opção. Acho que poderá me atender.

Obrigado pela ajuda.