3 Replies Latest reply: Jul 23, 2018 9:21 AM by Thiago Custodio RSS

    Função Before retornando acumulado errado

    Thiago Custodio

      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