Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
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
Partner - Specialist III
Partner - Specialist III

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