Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
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
Author

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!

View solution in original post

4 Replies
Not applicable
Author

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
Author

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
Author

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
Author

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!