Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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
Rodrigo,
assim?
Se for assim, segue modelo exemplo !
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"?
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?