3 Replies Latest reply: Sep 25, 2013 7:33 AM by Rodrigo Luis Mattjie RSS

    Link Table

      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.

        • Re: Link Table
          Fernando Suzuki

          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.

          • Re: Link Table
            Fernando Tonial

            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.