Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
willianvbuss
Contributor II
Contributor II

Cálculo Taxa Rolagem (divisão na diagonal) - Gráfico de linha (Qlik Sense)

Olá pessoal.

Preciso de uma ajuda em um cálculo de percentual na diagonal. Se trata da taxa de rolagem de dívida, onde se divide o saldo do mês atual de uma determinada faixa de atraso, pelo saldo do mês anterior da faixa de atraso acima. Para tentar exemplificar, envio uma imagem de como seria o cálculo.

Taxa rolagemTaxa rolagem

Na tabela dinâmica do qlik sense consegui fazer esse cálculo (Exemplo: 900 de 03/2020 faixa 1-30 dividido por 5000 de 02/2020 faixa anterior (faixa 0)) usando above e before.

=sum(SomaSaldo)/above(Before(Sum(SomaSaldo),1,ColumnNo()))

O problema realmente está sendo fazer isso em um gráfico de linhas, já que o before não pode ser usado em nada diferente de tabela dinâmica.

Na comunidade Qlik achei um post que montou uma expressão usando duas vezes o above com Aggr, mas os números não batem com a tabela...

=Sum(SomaSaldo)/sum(Aggr(Above(Aggr(Above(Sum(SomaSaldo)), FaixadeAtraso_0a180, AnoMes)), AnoMes, FaixadeAtraso_0a180))

Conhecem alguma possível solução?

Obrigado!

 

OBS: exemplo anexado.

1 Solution

Accepted Solutions
willianvbuss
Contributor II
Contributor II
Author

Apenas para informar que consegui fazer funcionar:

Sum(SomaSaldo)
/
Above(total Sum(SomaSaldo),8)

 

O que precisava fazer de fato era entender como os dados da tabela estavam dispostos (Função "Show Data" no botão direito sobre o gráfico), eles estavam uma abaixo do outro. Dessa forma, fazendo dessa forma como fiz a expressão funcionou certinho.

Obrigado pela ajuda.

 

View solution in original post

8 Replies
Clever_Anjos
Employee
Employee

Você tem um app com uma amostra dos dados e modelo que possa compartilhar?

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

opa Willian, tudo bom.

 

Segue um exemplo

 

2020-04-01 15_59_57-Qlik Sense Desktop.png

furtado@farolbi.com.br
willianvbuss
Contributor II
Contributor II
Author

Afurtado, eu usei sua aplicação e adicionei mais valores... Coloquei mais meses e criei abaixo um gráfico de linha, que era meu problema em criar...

Eu não sei dizer como, mas usando a expressão com above e agg simplesmente funcionou. E essa mesma fórmula não está funcionando na aplicação que estou trabalhando em minha empresa...

Encaminho no anexo ela funcionando...

rolagem imagem.JPG

 

Vou tentar amanhã subir a aplicação do trabalho pra que possam avaliar, mas com o exemplo funcionou no gráfico de linha:

Sum(Valor)
/
Sum(Aggr(Above(Aggr(Above(Sum(Valor)), Faixa, Mes)), Mes, Faixa))

willianvbuss
Contributor II
Contributor II
Author

Clever, anexei o exemplo na postagem inicial e na resposta acima.

Amanhã tento subir a aplicação do trabalho pra que possa avaliar.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

cuidado com dados sensíveis quando colocar o modelo

furtado@farolbi.com.br
willianvbuss
Contributor II
Contributor II
Author

Furtado e Clever, não teve como eu disponibilizar o qvf com os dados para que pudessem avaliar...

Eu extraí os dados analíticos em uma tabela de excel e subi no meu qlik sense pessoal e fiz os cálculos... Dessa forma funcionaram normal, como no outro exemplo feito, tanto tabela como gráfico de linhas. Falei com um colega que tb trabalha na área e ele está desconfiado que pode ter alguma coisa a ver com o script pra criar as informações, relacionado ao dois campos que usamos para tentar criar o gráfico de linhas: Faixa de atraso e período (Ano Mês). Mas o estranho é que em uma tabela dinâmica, os cálculos funcionam bem... diferente do gráfico de linhas.

 

A faixa de atraso basicamente é criada dessa forma:

if(MaxFaixadeAtraso=0 , Dual('0',1),
if(MaxFaixadeAtraso>0 and MaxFaixadeAtraso<=30, Dual('1-30',2),
if(MaxFaixadeAtraso>30 and MaxFaixadeAtraso<=60, Dual('31-60',3),
if(MaxFaixadeAtraso>60 and MaxFaixadeAtraso<=90, Dual('61-90',4),
if(MaxFaixadeAtraso>90 and MaxFaixadeAtraso<=120, Dual('91-120',5),
if(MaxFaixadeAtraso>120 and MaxFaixadeAtraso<=150, Dual('121-150',6),
if(MaxFaixadeAtraso>150 and MaxFaixadeAtraso<=180, Dual('151-180',7)))))))) as FaixadeAtraso_0a180

 

E o campo de data é feito apenas um date:

date(InfCarteiraMensal_DataMovimento,'YYYYMM') as InfCarteiraMensal_AnoMes

 

 

 

Clever_Anjos
Employee
Employee

Tente trocar o 

date(InfCarteiraMensal_DataMovimento,'YYYYMM') as InfCarteiraMensal_AnoMes

por

date(monthstart(InfCarteiraMensal_DataMovimento),'YYYYMM') as InfCarteiraMensal_AnoMes

 

O date apenas aplica uma mascara, entao a data 07/Abril/2020 vai mostrar 202004 mas internamente ainda o dia 07 esta la

willianvbuss
Contributor II
Contributor II
Author

Apenas para informar que consegui fazer funcionar:

Sum(SomaSaldo)
/
Above(total Sum(SomaSaldo),8)

 

O que precisava fazer de fato era entender como os dados da tabela estavam dispostos (Função "Show Data" no botão direito sobre o gráfico), eles estavam uma abaixo do outro. Dessa forma, fazendo dessa forma como fiz a expressão funcionou certinho.

Obrigado pela ajuda.