4 Replies Latest reply: Jun 19, 2013 3:54 PM by Fábio Calarga RSS

    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.

        • 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

          • Re: Problema com Link Table
            Leonardo Osorio

            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;

            • 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;