Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Problema com Link Table

Boa noite pessoal.

Estou com um problema na geração de link table e não estou conseguindo resolver.

Possuo na minha carga dois fatos, onde cada um possui datas.

Ao criar a link table, realizar a criação das tabelas temporárias,  estou fazendo os left joins entre elas e depois as concatenando.

O problema que em um fato eu tenho registros desde 1995 e outro fato desde 2009 e por algum motivo o Qlikview está apenas enxergando a data a partir de 2009.

Poderiam me ajudar?

Obrigado,

Fábio.

1 Solution

Accepted Solutions
Not applicable

Re: Problema com Link Table

Galera..

Resolvido.. Criei um Link via SQL.. fazendo os lefts joins entre as tabelas.. tirando as colunas de data das duas e as demais chaves para as dimensões deixando todas na link...

Valeu!

4 Replies
Not applicable

Re: Problema com Link Table

Bom dia!

Você faz o Left Join com a tabela que tem datas de 1995? Chegou a verificar se ele já não exlcui algum registro no join? Poderia postar o script ou um exemplo da aplicação?

Rebeca

Not applicable

Re: Problema com Link Table

Bom oq eu faria no caso de ter datas nas tabelas, seria a criação de uma tabela calendario a partir desse campo data, concatenando com as tabelas fatos por exemplo

[TABELA_FATO_1]:

NOME,

CODIGO,

DATA AS DATA_CHAVE_FATO_1

FROM FATO_1

[TABELA_FATO_2]:

NOME_CLIENTE,

CODIGO_CLIENTE,

DATA AS DATA_CHAVE_FATO_2

FROM FATO_2

[CALENDARIO]:

LOAD

DATA_FATO_1 AS DATA_CHAVE_FATO_1,

MONTH(DATA_FATO_1 ) AS MES_CALENDARIO,

YEAR(DATA_FATO_1 ) AS ANO_CALENDARIO,

DAY(DATA_FATO_1 ) AS DIA_CALENDARIO,

Resident TABELA_FATO_1

Concatenate(CALENDARIO)

LOAD

DATA_FATO_2 AS DATA_CHAVE_FATO_2,

MONTH(DATA_FATO_2 ) AS MES_CALENDARIO,

YEAR(DATA_FATO_2 ) AS ANO_CALENDARIO,

DAY(DATA_FATO_2 ) AS DIA_CALENDARIO,

Resident TABELA_FATO_2;

Not applicable

Re: Problema com Link Table

Pessoal

Segue código:

Tabelas Fato:

Fato_Finan_CRE:

LOAD

   
"CD_CLIENTE" & "NR_MATRICULA" & "CD_CONTA_RECEBER" AS LNK_CRE_FINAN,

   
"CD_CLIENTE" as "NR_MATRICULA_CRE",

   
"CD_CONTA_RECEBER" as CD_CONTA_RECEBER_CRE,

   
"CD_ESTRUTURA",

   
"CD_FUNCAO",

   
"CD_MODALIDADE_FINAN",

   
"CD_SAFRA",

   
"CD_TIPO_DOCUMENTO" as "CD_LINHA_FINANCIAMENTO",

   
"CD_TIPO_FINANCIAMENTO",

   
"DT_REFERENCIA" AS DT_REFERENCIA_CRE,

   
"VL_CONTA_RECEBER",

   
"NR_DIAS_ATRASO",

   
"DS_CARTEIRA",

   
"DS_CRE",

   
"IE_PARC_ATRAS";

SQL SELECT "CD_CLIENTE",

    "CD_CONTA_RECEBER",

    "CD_ESTRUTURA",

    "CD_FUNCAO",

    "CD_MODALIDADE_FINAN",

    "CD_SAFRA",

    "CD_TIPO_DOCUMENTO",

    "CD_TIPO_FINANCIAMENTO",

    "DT_REFERENCIA",

    "NR_MATRICULA",

    "NR_DIAS_ATRASO",

    "DS_CARTEIRA",

    case

       when

         ds_carteira is null then

         'CRE'

         else

           null

         end as DS_CRE,

     case

       when

         ds_carteira is not null then

         1

         else

           null

         end as IE_PARC_ATRAS,

     case

        when

          vl_conta_receber < 0 and cd_tipo_financiamento in (86, 3725) then

            vl_conta_receber

         when

          vl_conta_receber < 0 and cd_tipo_financiamento not in (86, 3725) then

            0

         when

          vl_conta_receber > 0 then

           vl_conta_receber

          end VL_CONTA_RECEBER

       

FROM "BIC_COOP"."F_CONTAREC"

WHERE

    DT_REFERENCIA <= '31/05/2013'

    ORDER BY DT_REFERENCIA;

   





Fato_Reciprocidade:

//-------- Start Multiple Select Statements ------

LOAD "CD_RECIPROCIDADE",

   
"CD_RECIPROCIDADE" AS CD_RECIPROCIDADE_REC,

   
"CD_PESSOA" & DT_REFERENCIA & CD_RECIPROCIDADE as LNK_FATO_REC,

   
"CD_PESSOA" as NR_MATRICULA_REC,

   
"CD_AREA_APURACAO",

   
"CD_CULTURA",

   
"DT_REFERENCIA" as DT_REFERENCIA_REC,

   
"CD_ITEM_APURACAO",

   
"CD_FORMA_CALCULO",

   
"CD_PORTE_COOPERADO",

   
"QT_PONDERACAO",

   
"DS_CLASS_ATRIBUIDA",

   
"DS_CLASS_CALC_GERAL",

   
"DS_CLASS_CALC_AREA",

   
"QT_BASE",

   
"VL_MARGEM_CONTRIBUICAO",

   
"VL_BASE",

   
"QT_OPERACOES_REALIZADAS";

SQL SELECT *

FROM "BIC_COOP"."F_RECIPROCIDADE_COM"

ORDER BY DT_REFERENCIA ASC;

---- Tabelas Link

TMP_Link_Finan:

LOAD

LNK_CRE_FINAN,

NR_MATRICULA_CRE     AS NR_MATRICULA,

DT_REFERENCIA_CRE AS DT_REFERENCIA,

CD_CONTA_RECEBER_CRE    AS CD_CONTA_RECEBER

RESIDENT

Fato_Finan_CRE;



TMP_Link_Reciproc:

LOAD

LNK_FATO_REC,

NR_MATRICULA_REC as NR_MATRICULA,

DT_REFERENCIA_REC as DT_REFERENCIA,

CD_RECIPROCIDADE_REC as CD_RECIPROCIDADE

RESIDENT

Fato_Reciprocidade;







TMP_Link_Finan2:

NoConcatenate

LOAD

LNK_CRE_FINAN,

NR_MATRICULA,

DT_REFERENCIA,

CD_CONTA_RECEBER

RESIDENT

TMP_Link_Finan;

LEFT JOIN

LOAD

LNK_FATO_REC,

NR_MATRICULA,

DT_REFERENCIA,

CD_RECIPROCIDADE

RESIDENT

TMP_Link_Reciproc;





TMP_Link_Reciproc2:

NoConcatenate

LOAD

LNK_FATO_REC,

NR_MATRICULA,

DT_REFERENCIA,

CD_RECIPROCIDADE

RESIDENT

TMP_Link_Reciproc;

LEFT JOIN

LOAD

LNK_CRE_FINAN,

NR_MATRICULA,

DT_REFERENCIA,

CD_CONTA_RECEBER

RESIDENT

TMP_Link_Finan;



 







// Elimina as tabelas temporárias do Link da primeira etapa.

DROP TABLE TMP_Link_Finan;

DROP TABLE TMP_Link_Reciproc;



CONCATENATE('TMP_Link_Reciproc2')

LOAD

LNK_CRE_FINAN,

NR_MATRICULA,

DT_REFERENCIA,

LNK_FATO_REC

RESIDENT

TMP_Link_Finan2;



DROP TABLE

TMP_Link_Finan2;





// Elimina campos temporários usados para criar a tabela link.

DROP FIELDS



NR_MATRICULA_CRE, DT_REFERENCIA_CRE, CD_CONTA_RECEBER_CRE;     



DROP FIELDS

NR_MATRICULA_REC, DT_REFERENCIA_REC, CD_RECIPROCIDADE_REC;



RENAME TABLE TMP_Link_Reciproc2 TO Link_Fatos;

Not applicable

Re: Problema com Link Table

Galera..

Resolvido.. Criei um Link via SQL.. fazendo os lefts joins entre as tabelas.. tirando as colunas de data das duas e as demais chaves para as dimensões deixando todas na link...

Valeu!