Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
Empresa | Grupo | SubGrupo | Item | Valor |
Emp1 | G1 | C | Item 1 | 10 |
Emp1 | G1 | B | Item 2 | 20 |
Emp1 | G1 | C | Item 3 | 30 |
Emp1 | G1 | B | Item 4 | 40 |
Emp1 | G1 | A | Item 5 | 50 |
Emp1 | G1 | C | Item 6 | 60 |
Faço o Rank e tenho:
Empresa | Grupo | SubGrupo | Item | Valor | Rank Geral |
Emp1 | G1 | C | Item 1 | 10 | 6 |
Emp1 | G1 | B | Item 2 | 20 | 5 |
Emp1 | G1 | C | Item 3 | 30 | 4 |
Emp1 | G1 | B | Item 4 | 40 | 3 |
Emp1 | G1 | A | Item 5 | 50 | 2 |
Emp1 | G1 | C | Item 6 | 60 | 1 |
O ponto é que quando faço uma seleção no SubGrupo (B por exemplo), onde teria o cenário abaixo:
Empresa | Grupo | SubGrupo | Item | Valor | Rank Geral |
Emp1 | G1 | B | Item 4 | 40 | 3 |
Emp1 | G1 | B | Item 2 | 20 | 5 |
Vou precisar ver também de forma específica, ou seja, o Rank de acordo com a seleção:
Empresa | Grupo | SubGrupo | Item | Valor | Rank Específico |
Emp1 | G1 | B | Item 4 | 40 | 1 |
Emp1 | G1 | B | Item 2 | 20 | 2 |
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:
Empresa | Grupo | SubGrupo | Item | Valor | Rank Geral | Valor Acumulado Geral |
Emp1 | G1 | B | Item 4 | 40 | 3 | 150 |
Emp1 | G1 | B | Item 2 | 20 | 5 | 200 |
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:
Empresa | Grupo | SubGrupo | Item | Valor | Rank Específico | Valor Acumulado Específico |
Emp1 | G1 | B | Item 4 | 40 | 1 | 40 |
Emp1 | G1 | B | Item 2 | 20 | 2 | 60 |
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
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,
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:
O correto seria (para o item destacado):
Item | Rank | Valor Acumulado |
Item 6 | 1 | 60 |
Item 3 | 2 | 90 |
Item 1 | 3 | 100 |
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
Para o rank específico agrupado sugiro então usar: Aggr(Rank(total Sum(Valor)),Empresa,SubGrupo)
Thiago,
Valeu pelo retorno.
Alguma ideia de como obter o valor acumulado (dinamicamente) via expressão?
Abraços,
William Rodrigues.