Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Função Before retornando acumulado errado

Bom dia à todos,

Estou com uma dinâmica no qlikview a qual preciso calcular o valor acumulado de alguns indicadores em meses pivoteados.

Tenho utilizado a função Before, porém o resultado tem apresentado desvio para algumas linhas.

Ate o momento tenho utilizado a expressão abaixo:

Num(
If(Indicator='AARP',
rangesum(Before(sum({<Indicator={'TARP'}>}Plan),0,ColumnNo()))/rangesum(Before(sum({<Indicator={'Sales'}>}Plan),0,ColumnNo())),
if(Indicator='T/MC',
rangesum(Before(sum({<Indicator={'TARP'}>}Plan),0,ColumnNo()))/rangesum(Before(sum({<Indicator={'Solicitation Cost'}>}Plan),0,ColumnNo())),
if(Indicator='Response Rate',
rangesum(Before(sum({<Indicator={'Sales'}>}Plan),0,ColumnNo()))/rangesum(Before(sum({<Indicator={'Leads'}>}Plan),0,ColumnNo())),
rangesum(Before(Total sum(Plan),0,ColumnNo()))))),
if(Indicator='AARP','#.##0,00',if(Indicator='T/MC', '#.##0,00', if(Indicator='Response Rate', '#.##0,00','#.##0'))))

Também tentei considerando a função AGGR, porém o resultado é o mesmo.

Num(
If(Indicator='AARP',
rangesum(Before(sum(aggr(sum({<Indicator={'TARP'}>}Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo()))/
rangesum(Before(sum(Aggr(sum({<Indicator={'Sales'}>}Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo())),
if(Indicator='T/MC',
rangesum(Before(sum(Aggr(sum({<Indicator={'TARP'}>}Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo()))/
rangesum(Before(sum(Aggr(sum({<Indicator={'Solicitation Cost'}>}Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo())),
if(Indicator='Response Rate',
rangesum(Before(sum(Aggr(sum({<Indicator={'Sales'}>}Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo()))/
rangesum(Before(sum(Aggr(sum({<Indicator={'Leads'}>}Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo())),
rangesum(Before(sum(Aggr(sum(Plan),S6_Campaign_Country_ID,S6_Sponsor_DESC,Planned_Launch_Month)),0,ColumnNo()))))),
if(Indicator='AARP','#.##0,00',if(Indicator='T/MC', '#.##0,00', if(Indicator='Response Rate', '#.##0,00','#.##0'))))

Abaixo evidencia sobre os desvios nos cálculos acumulados:

O engraçado é que na linha total ele faz o calculo da forma correta.

Before_Acumulado.jpg

Desde já Agradeço sugestões e suporte.

Obrigado

Labels (1)
1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Bom dia,

Descobri o que causava o problema do acumulo incorreto quando utilizada a função "Before"!

O desvio ocorria por conta de uma simples configuração na aba Apresentação onde a flag "Ocultar Zeros" não pode estar marcada assim os cálculos pivoteados serão realizados perfeitamente para todas as linhas.

De fato a expressão estava correta.

View solution in original post

3 Replies
felipedl
Partner - Specialist III
Partner - Specialist III

Olá Thiago,

Não entendi o porque de você utilizar o set analysis ali na expressão.

Fiz algo parecido aqui: urgent help - is this possible ?? how to achive this in pivot table..??

Como estão seus dados?

Você consegue disponibilizar o app?

Felipe.

Anonymous
Not applicable
Author

Olá Felipe,

De antemão lhe agradeço a atenção sobre este problema.

Estou usando Set analise por que precisei criar uma especie de item calculado para resolver 3 indicadores na Pivot.

Quanto ao problema com a função Before, ! o que tem me confundido é que na linha do sub total por exemplo ele faz o acumulo perfeitamente o que da a entender que não há erro na expressão.

estou anexando o app aqui para sua analise.

Obrigado novamente !

Anonymous
Not applicable
Author

Bom dia,

Descobri o que causava o problema do acumulo incorreto quando utilizada a função "Before"!

O desvio ocorria por conta de uma simples configuração na aba Apresentação onde a flag "Ocultar Zeros" não pode estar marcada assim os cálculos pivoteados serão realizados perfeitamente para todas as linhas.

De fato a expressão estava correta.