Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 🙂
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.
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, obrigada funcionou perfeitamente!
Você se importaria em me explicar a expressão utilizada, para que eu possa aprender?
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
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...
Entendi, muito obrigada pela explicação e ajuda!
🙂