Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde Pessoal.
Estou com dificuldade na seguinte situação..
Possuo dois Fatos: Fato Orçado e Fato Realizado.
O fato realizado possui mais dimensões que o fato orçado, e ao utilizar o LEFT JOIN e o CONCATENATE os valores se perdiam.. Porem ao utilizar o LINK TABLE, ficou muito bom além de rápido e leve, porem estou tendo problema com as datas.
No Fato Orçado, ficou perfeito, porém no realizado, ele trás antes do primeiro mês a maior parte dos valores como período 0.
Se alguém puder me ajudar, fico agradecido.
Segue o arquivo em anexo.
Olá Rodrigo, você pode fazer a seguinte alteração em seu script.
Aonde vc tem:
Date(MakeDate(Right(DT_CONTABIL,4),Left(DT_CONTABIL,2),1),'DD/MM/YYYY') as DATA
Troque por:
DT_CONTABIL | as DATA |
Isso deve resolver.
Caso ainda o problema continue, faça assim, depois da criação da link table:
TMP_Calendario:
LOAD
Max(DATA) AS MaxData,
Min(DATA) AS MinData
Resident LINKTABLE;
LET vMaxData = Peek('MaxData');
LET vMinData = Peek('MinData');
DROP Table TMP_Calendario;
//_______________________________________________________________________________
Calendario:
LOAD
DATA as DATA,
Day(DATA) as DIA,
Month(DATA) as MES,
Year(DATA) as ANO,
ceil(Month([DATA])/6)&'º' as SEMESTRE,
ceil(Month([DATA])/3)&'º' as TRIMESTRE,
ceil(Month([DATA])/2)&'º' as BIMESTRE,
DayNumberOfQuarter(DATA) as DIA_TRIMESTRE,
DayNumberOfYear(DATA) as DIA_ANO,
MonthName(DATA) as PERIODO,
QuarterName(DATA) as QUARTER,
Week(DATA) as SEMANA,
WeekDay(DATA) as DIA_SEMANA,
If(DATA<='$(vHoje)',1,0) as FlgRealizado,
If(DATA>'$(vHoje)',1,0) as FlgOrçado;
Load
Date('$(vMinData)' + Recno() - 1) as DATA
AutoGenerate (YearEnd(vMaxData) - vMinData + 1);
Abraços.
Tonial.
Rodrigo,
quando vc gera a chave da fato realizado vc usa a data real, mas no calendário vc só cria as datas do primeiro dia do mes. Então o realizado que acontece no dia 5/jan por exemplo fica sem amarração com o calendario, porque no calendário só existe o dia 1/jan.
duas alternativas:
1. vc precisa gerar a chave do realizado sempre usando como data o primeiro dia do mes. vc pode usar a função monthstart()
2. incluir no calendario as outras datas que não são o primeiro dia do mes.
Olá Rodrigo, você pode fazer a seguinte alteração em seu script.
Aonde vc tem:
Date(MakeDate(Right(DT_CONTABIL,4),Left(DT_CONTABIL,2),1),'DD/MM/YYYY') as DATA
Troque por:
DT_CONTABIL | as DATA |
Isso deve resolver.
Caso ainda o problema continue, faça assim, depois da criação da link table:
TMP_Calendario:
LOAD
Max(DATA) AS MaxData,
Min(DATA) AS MinData
Resident LINKTABLE;
LET vMaxData = Peek('MaxData');
LET vMinData = Peek('MinData');
DROP Table TMP_Calendario;
//_______________________________________________________________________________
Calendario:
LOAD
DATA as DATA,
Day(DATA) as DIA,
Month(DATA) as MES,
Year(DATA) as ANO,
ceil(Month([DATA])/6)&'º' as SEMESTRE,
ceil(Month([DATA])/3)&'º' as TRIMESTRE,
ceil(Month([DATA])/2)&'º' as BIMESTRE,
DayNumberOfQuarter(DATA) as DIA_TRIMESTRE,
DayNumberOfYear(DATA) as DIA_ANO,
MonthName(DATA) as PERIODO,
QuarterName(DATA) as QUARTER,
Week(DATA) as SEMANA,
WeekDay(DATA) as DIA_SEMANA,
If(DATA<='$(vHoje)',1,0) as FlgRealizado,
If(DATA>'$(vHoje)',1,0) as FlgOrçado;
Load
Date('$(vMinData)' + Recno() - 1) as DATA
AutoGenerate (YearEnd(vMaxData) - vMinData + 1);
Abraços.
Tonial.
Muito Obrigado, ficou perfeito.. agora vou replicar para minhas outras aplicações, melhorou consideravelmente a carga e o desempenho utilizando o Link Table..
Valeu