Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

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.

Labels (1)
1 Solution

Accepted Solutions
fernando_tonial
Employee
Employee

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.

Don't Worry, be Qlik.

View solution in original post

3 Replies
fosuzuki
Luminary
Luminary

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.

fernando_tonial
Employee
Employee

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.

Don't Worry, be Qlik.
Not applicable
Author

Muito Obrigado, ficou perfeito.. agora vou replicar para minhas outras aplicações, melhorou consideravelmente a carga e o desempenho utilizando o Link Table..

Valeu