Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Gráfico acumulado com comparativo entre períodos

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

4 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Rodrigo,

assim?

2017-02-03 23_00_37-QlikView x64 - [C__tmp_Acumulado linha.qvw].png

furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Se for assim, segue modelo exemplo !

furtado@farolbi.com.br
Not applicable
Author

Alessandro, obrigado pela ajuda, mas não consegui montar o gráfico conforme o pivot que você citou. Fiz o data load e até criei a tabela, porém como montar no gráfico? Lembrando que estou usando o Qlik Sense.

Esta mesma solução atenderia uma visão de "mês atual" vs. "média dos últimos 3 meses"?

Not applicable
Author

Mudei a abordagem de As-Of Calendar do HIC, gerei as tabelas AS-OF, criei um master calendar, porém ele não soma os valores conforme https://community.qlik.com/blogs/qlikviewdesignblog/2015/11/02/the-as-of-table

Tomei cuidado com relação à data e tratei com date(floor(),'DD/MM/YYYY') para tirar o formato datetime. Ao usar como dimensão qualquer data (seja na tabela transacional, seja na master calendar ou seja na as-of), a métrica não acumula (Sum({$<MonthDiff={"0"}>}^Valor). Por mais que eu mude o set para YearDiff e os parâmetros para ">" ou "<", o valor nunca acumula.

Também revisitei algumas abordagens de aggr(), rangesum() e sum() mas nada que entregasse o que eu preciso fazer.

Alguém com uma solução?