4 Replies Latest reply: Feb 6, 2017 4:18 PM by Rodrigo Sato RSS

    Gráfico acumulado com comparativo entre períodos

    Rodrigo Sato

      Pesquisei bastante no forum tanto em português como em ingles, também fiz uma pesquisa longa no Google/YT para encontrar a solução mas nada me ajudou a construir o que preciso.

       

      Hoje tenho um gráfico de linhas que compara uma produção acumulada MTD vs. período anterior. Por exemplo, compara uma produção acumulada no mês de janeiro/2017 contra a produção acumulada em janeiro/2016.

       

      Capturar.PNG

       

      O exemplo acima foi retirado de uma outra ferramenta que eu utilizo aqui.

       

      Já tentei usar RANGESUM() e AsOf mas o acumulado não muda (ou simplesmente não gera).

       

      Com o RangeSum(Above(Sum([Sales]),0,RowNo())) eu consegui gerar um gráfico acumulado, porém ao tentar comparar com o período anterior, nenhuma tentativa deu certo.

       

      Com o AsOf, utilizei a sugestão do HIC. Ele gera uma tabela com os períodos mas quando eu tento chamar: Sum({<PeriodType{='YTD'} Sales) ele não traz o acumulado. E ao tentar mudar o PeriodType para outras categorias, também não reflete no gráfico.

      CONCATENATE (MASTER)

      LOAD

           MonthStart(date([Sales],'YYYYMM')) as Period1,

           MonthName([Sales]) as Month

      RESIDENT MASTER;

       

       

       

       

       

       

      // Temporary table with list of Period values

      PeriodTbl:

      LOAD date(fieldvalue('Period1',recno()),'YYYYMM') as Period

      AUTOGENERATE fieldvaluecount('Period1');

       

       

      AsOfPeriodTable:

       

       

      //Load every month as current month into AsOf table

      LOAD

      Period as AsOfPeriod

      ,'Current' as PeriodType

      ,Period as Period1

      ,Year(Period) as Year

      RESIDENT PeriodTbl;

       

       

       

       

      CONCATENATE (AsOfPeriodTable)

      //Load Rolling 3 into AsOf table

      LOAD

      Period as AsOfPeriod

      ,'Rolling 3' as PeriodType

      ,date(addmonths(Period,1-iterno()),'YYYYMM') as Period1

      ,Year(Period) as Year

      RESIDENT PeriodTbl

      WHILE iterno() <= 3;

       

       

      CONCATENATE (AsOfPeriodTable)

      //Load Rolling 6 into AsOf table

      LOAD

      Period as AsOfPeriod

      ,'Rolling 6' as PeriodType

      ,date(addmonths(Period,1-iterno()),'YYYYMM') as Period1

      ,Year(Period) as Year

      RESIDENT PeriodTbl

      WHILE iterno() <= 6;

       

       

      CONCATENATE (AsOfPeriodTable)

      //Load Rolling 12 into AsOf table

      LOAD

      Period as AsOfPeriod

      ,'Rolling 12' as PeriodType

      ,date(addmonths(Period,1-iterno()),'YYYYMM') as Period1

      ,Year(Period) as Year

      RESIDENT PeriodTbl

      WHILE iterno() <= 12;

       

       

      CONCATENATE (AsOfPeriodTable)

      //Load YTD into AsOf table

      LOAD

      Period as AsOfPeriod

      ,'YTD' as PeriodType

      ,date(addmonths(Period,1-iterno()),'YYYYMM') as Period1

      ,Year(Period) as Year

      RESIDENT PeriodTbl

      WHILE iterno() <= num(month(Period));

       

       

      LET vStartDate = date(Date#('20080101','YYYYMMDD'));

       

       

      CONCATENATE (AsOfPeriodTable)

      //Load RollingToDate into AsOf table

      LOAD

      Period as AsOfPeriod

      ,'RollingToDate' as PeriodType

      ,date(addmonths(Period,1-iterno()),'YYYYMM') as Period1

      ,Year(Period) as Year

      RESIDENT PeriodTbl

      WHILE $(vStartDate) <= date(addmonths(Period,1-iterno()),'YYYYMM') ;

       

       

       

       

      INNER JOIN (AsOfPeriodTable)

      LOAD Period as Period1

      RESIDENT PeriodTbl;

       

       

      DROP TABLE PeriodTbl;

       

      Alguém tem uma sugestão ou sabe o caminho da pedras?

       

      Mensagem editada por: Rodrigo Sato