Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Rank com Soma Acumulada até Rank X

Salve, Boa tarde!

Minha dúvida é parecida com a dúvida postada no seguinte link:
https://community.qlik.com/t5/Qlik-Brasil/Express%C3%A3o-Rank-com-Soma-Acumulada-at%C3%A9-Rank-X/gpm...

A diferença é que em meu cenário preciso demonstrar hora o Rank específico (da seleção) e hora o geral e seu respectivo valor acumulado. Não vejo como fazer via script, pois nele terei o Rank por Empresa, Grupo e Período.

O cenário seria mais ou menos assim:

EmpresaGrupoSubGrupoItemValor
Emp1G1CItem 110
Emp1G1BItem 220
Emp1G1CItem 330
Emp1G1BItem 440
Emp1G1AItem 550
Emp1G1CItem 660


Faço o Rank e tenho:

EmpresaGrupoSubGrupoItemValorRank Geral
Emp1G1CItem 1106
Emp1G1BItem 2205
Emp1G1CItem 3304
Emp1G1BItem 4403
Emp1G1AItem 5502
Emp1G1CItem 660

1


O ponto é que quando faço uma seleção no SubGrupo (B por exemplo), onde teria o cenário abaixo:

EmpresaGrupoSubGrupoItemValorRank Geral
Emp1G1BItem 4403
Emp1G1BItem 2205


Vou precisar ver também de forma específica, ou seja, o Rank de acordo com a seleção:

EmpresaGrupoSubGrupoItemValorRank Específico
Emp1G1BItem 4401
Emp1G1BItem 2202


Precisava ter a coluna "Acumulado" com a soma acumulada do campo "Valor". Tanto para a visão Geral como para a visão Específica:

EmpresaGrupoSubGrupoItemValorRank GeralValor Acumulado Geral
Emp1G1BItem 4403150
Emp1G1BItem 2205200

Sendo:
Linha "Rank 3" a soma das linhas "Rank 1", "Rank 2" e "Rank 3", ou seja, 60 + 50 + 40 = 150
Linha "Rank 5" a soma das linhas "Rank 1", "Rank 2", "Rank 3", "Rank 4" e "Rank 5", ou seja, 60 + 50 + 40 + 30 + 20 = 200

Ou na forma específica:

EmpresaGrupoSubGrupoItemValorRank EspecíficoValor Acumulado Específico
Emp1G1BItem 440140
Emp1G1BItem 220260

Sendo:
Linha "Rank 1" a soma das linhas "Rank 1", ou seja, 40
Linha "Rank 2" a soma das linhas "Rank 1" e "Rank 2", ou seja, 40 + 20 = 60

Conseguem me ajudar?

Abraços,
William Rodrigues

4 Replies
Thiago_Justen_

Rode o script abaixo num app novo, apenas para que você teste o resultado antes de aplicar em seu modelo.

No script

Tabela_Temp:
Load * Inline [
Empresa Grupo SubGrupo Item Valor
Emp1 G1 C Item1 10
Emp1 G1 B Item2 20
Emp1 G1 C Item3 30
Emp1 G1 B Item4 40
Emp1 G1 A Item5 50
Emp1 G1 C Item6 60
] (delimiter is spaces);

Tabela:
LOAD

*,
AutoNumber(Valor)                                               as [Rank Geral],
RangeSum(Valor,Peek('AcumuladoGeral')) as AcumuladoGeral

Resident Tabela_Temp Order By Valor desc;

Drop Table Tabela_Temp;

 

PS.: Eu sei que fazer o ranking via script é meio estranho mas pode ser aplicado em alguns casos específicos (como o seu).

 

Na tela (UI) crie uma tabela simples com o seguinte:

 

Dimensões: Empresa, Grupo, SubGrupo, Item, Rank Geral, Acumulado Geral (esses dois últimos criados no script)

Expressões:

Rank Específico = Rank(total Sum(Valor))

Acumulado Específico = RangeSum(Above(Sum(Valor),0,RowNo()))

 

Abs e Sucesso!!

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

Thiago,

Obrigado pela sua resposta. Mas o resultado não foi o esperado.

Na visão Específico, o Rank deve ser feito com base no SubGrupo:
Forum1.pngO correto seria (para o item destacado):

ItemRankValor Acumulado
Item 6160
Item 3290
Item 13100


Para esse exemplo, fazer o acumulado via script daria certo. Porém, terei outras Empresas e outros Grupos, aumento assim o dinamismo do Rank

A ideia é ter as duas visualizações (Geral e Específico).

Abraços,
William Rodrigues

 

 

 

Thiago_Justen_

Para o rank específico agrupado sugiro então usar: Aggr(Rank(total Sum(Valor)),Empresa,SubGrupo)

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

Thiago,

Valeu pelo retorno.

Alguma ideia de como obter o valor acumulado (dinamicamente) via expressão?

Abraços,
William Rodrigues.