Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
jessica_espfar
Contributor
Contributor

Posição de ranking em KPI com variável

Olá, sou iniciante no Qlik Sense, fiz uma tabela com ranking, porém gostaria de apresentar no KPI a Empresa e o Saldo (pode ser negativo ou positivo) conforme a posição escolhida. Fiz uma variável para os saldos negativos e uma para os saldos positivos, dividindo entre credores e devedores, no KPI eu seguinte expressão:

Concat(aggr(IF(Rank(sum({1}[SALDO]))=PosiçãoCredor,[FEDERAÇÃO]),[FEDERAÇÃO]))

Então quando eu digito a posição escolhida do ranking (1,2,3) ele me apresenta o nome da empresa, porém como segundo KPI gostaria de apresentar o saldo, mas o valor trazido sempre vem incorreto ou nulo. A variável utilizada foi:

Rank(sum( {1}[SALDO]))

 

Se alguém puder me ajudar, agradeço 🙂

 

KPI.jpg

 

 

 

1 Solution

Accepted Solutions
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Veja se resolve assim  (sem testar fica ruim.....o bom seria ter uma pequena base)

 

=max(Aggr(  sum( {1} [SALDO] ),FEDERAÇÃO ), $(PosiçãoCredor)  )

 

Se não der, quem sabe outra forma seria usar firstsortedvalue , mas ai o campo SALDO teria que ser um campo com um unico valor para a federação. Se tiver mais valores, (que teria que usar o sum por exemplo, vai retornar nulo).


FirstSortedValue(SALDO, -Aggr(sum(SALDO),FEDERAÇÃO ),$(PosiçãoCredor))

// Uso um - na frente do aggr para ficar negativo e assim ser em ordem decrescente.

 

 

furtado@farolbi.com.br

View solution in original post

4 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Veja se resolve assim  (sem testar fica ruim.....o bom seria ter uma pequena base)

 

=max(Aggr(  sum( {1} [SALDO] ),FEDERAÇÃO ), $(PosiçãoCredor)  )

 

Se não der, quem sabe outra forma seria usar firstsortedvalue , mas ai o campo SALDO teria que ser um campo com um unico valor para a federação. Se tiver mais valores, (que teria que usar o sum por exemplo, vai retornar nulo).


FirstSortedValue(SALDO, -Aggr(sum(SALDO),FEDERAÇÃO ),$(PosiçãoCredor))

// Uso um - na frente do aggr para ficar negativo e assim ser em ordem decrescente.

 

 

furtado@farolbi.com.br
jessica_espfar
Contributor
Contributor
Author

Furtado, obrigada funcionou perfeitamente!

 

Você se importaria em me explicar a expressão utilizada, para que eu possa aprender?

 

 

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

max(

           Aggr(  sum( {1} [SALDO] ),FEDERAÇÃO )

         , $(PosiçãoCredor)  )

 

O max() tem um parametro que é a ordem. O maior, o segundo e assim por diante. Usamos a sua variavel para definir qual "dos maiores" mostrar (ex:   max(Valor, 2)   vai retornar o segundo maior valor )

 

O aggr() seria como um group by do SQL.    O aggr tem uma expressão e um ou mais campos que serão usados. No final é como se tivesse uma nova tabela. Segue uma imagem para ajudar

clipboard_image_0.png

Então será criado uma tabela somente para efetuar o calculo (internamente pelo produto e depois descartada - on fly) para fazer o calculo e depois retorna no nosso caso um max() mas poderia ser um sum(), avg() atc...

 

furtado@farolbi.com.br
jessica_espfar
Contributor
Contributor
Author

Entendi, muito obrigada pela explicação e ajuda!

🙂