5 Replies Latest reply: May 29, 2017 10:18 AM by MARIO SOARES RSS

    Carga incremental ( Limpando e carregando )...

    Douglas Pedroni

      Boa tarde Pessoal!

       

      Estou montando um processo de carga incremental e gostaria da ajuda de vocês...

       

      Criei um GeraQVD com informações desde 2007, porém, preciso de ajuda para fazer a carga apenas dos últimos sete dias.

       

      Exemplo: Quero fazer a limpeza dos últimos seis dias do QVD e carregar as informações dos últimos sete dias do banco nesse mesmo QVD.

       

      Por favor, podem me ajudar?

       

      Obrigado.

       

      Douglas.

        • Re: Carga incremental ( Limpando e carregando )...
          Márcio Rodrigo Campestrini

          Bom dia Douglas

           

          Você pode fazer algo do tipo:

           

          1) Selecionar na tabela inicial somente os registros dos últimos 7 dias (data >= dia atual - 7)

          2) Carregar o QVD lendo todos os registros MENOS os últimos 6 dias (data >= dia atual - 6)

          3) Concatenar os dois resultados e salvar o novo QVD

          • Re: Carga incremental ( Limpando e carregando )...
            Alessandro Furtado

            Douglas,

             

            segue uma rotina que podes adaptar....

             

             

            //=======================================================================================================

            // Verifica se tem arquivo QVD

            LET v_Tem_QVD       = if(QvdNoOfRecords('$(vStagePath)Nome_Arquivo.QVD')>0,1,0);

            // Caso nao tenha, define a data de leitura inicial

            LET v_QVD_Data      = '20140101';

            // Define os dias para tras a ler

            LET vDiasAMenos   = 7;

            //

            // Se tem o arquivo QVD pega a data. Aqui pegamos a data do arquivo, mas poderia dar um MAX do campo data para saber a ultima data......

            if $(v_Tem_QVD) = 1 then

               LET v_Tem_QVD    = QvdNoOfRecords('$(vStagePath)Nome_Arquivo.QVD');

               LET v_QVD_Data   = date((floor(QvdCreateTime('$(vStagePath)Nome_Arquivo.QVD')) - $(vDiasAMenos) ),'YYYYMMDD');

            ELSE

               TRACE *********************** Nao Achou o QVD **********************************;  

            ENDIF

            //

            //

            [XXXXXXX]:

            SQL Select CAMPO1, CAMPO2  from Tabela  Where CAMPODATA >= '$(v_VBUK_Data)' ;

            //

            // Se tem arquivo QVD vai concatenar

            if $(v_Tem_QVD) = 1 then

                TRACE ** Unindo os dados do QVD com a tabela XXXXXXXX **;

              Concatenate (XXXXXXX)

              LOAD * FROM [$(XXXXXXX)VBUK.QVD] (qvd) Where not Exists(CAMPO1);  // O not exists serve para nao concatenar registros ja lidos do banco. Aqui tem que cuidar da chave.....Se composta, por exemplo....

            ENDIF

            //

            STORE XXXXXXX Into  $(vStagePath)Nome_Arquivo.QVD (qvd);

            //

            //=======================================================================================================

            • Re: Carga incremental ( Limpando e carregando )...
              Wellington Regis Silva

              Bom dia Douglas,

               

              Veja se um Script parecido com esse lhe ajuda:


              LET V_DATA_INI = Today() -7;

              TABELA:   
              //AQUI VOCE FAZ A CARGA DOS DIAS DESEJADOS
              LOAD *;
              SQL
              SELECT *
              FROM TABELA_BANCO
              WHERE CAMPO_DATA >= '$(V_DATA_INI)';

              Concatenate     //QUANDO AS TABELA TÊM OS MESMO CAMPOS O QlikView CONCATENA AUTOMATICAMENTE

              LOAD * FROM TABELA.QVD (qvd)    //CARREGA, DO QVD, APENAS OS REGISTROS COM AS DATAS ANTERIORES ÀS CARGA RECENTE
              Where CAMPO_DATA < '$(V_DATA_INI)';

              STORE TABELA into TABELA.QVD (qvd);

              DROP Table TABELA;

               

               

                  Um Script como esse só funciona corretamente quando os dados do seu banco não sofrem alterações depois de gravados. Tipo se dados com mais de sete dias podem sofrer alterações o Script precisa ser revisto.

                  Cálculos com datas podem nos confundir às vezes e um script com Carga Incremental e Limpeza pode ser bem mais complexo que esse. Tudo vai depender de como os dados são armazenados no Banco de Dados, e a liberdade que tem para alterá-los.

               

              Espero ter podido ajudar.

               

              Felicidades...

              • Re: Carga incremental ( Limpando e carregando )...
                Márcio Rodrigo Campestrini

                Conseguiu resolver seu problema? Marque as respostas como úteis/correta para mantermos a comunidade organizada.