3 Replies Latest reply: Jun 22, 2015 1:57 PM by Caue Candeloro RSS

    Carga de Dados

    Caue Candeloro

      Pessoal, bom dia.

       

      Estou montando um projeto onde basicamente vou mostrar todos os indicadores relacionados a área de vendas da empresa.
      Hoje, toda vez que vou gerar algum qvd com as informações, faço a leitura de todo o banco (a base não é absurdamente grande, então não leva tanto tempo).
      O meu problema é que após virar um mês, as pessoas fazem alterações referentes ao mês anterior e quando atualizo os dados, o resultado de um mês já fechado é alterado.

      Li alguns artigos sobre carga incremental, mas ainda não consegui pensar em uma forma de carregar apenas as informações do mês corrente, sem que essas informações sejam atualizadas quando o mês virar.

       

      Alguém já passou por situação semelhante ?

       


      Abs
      Caue.

        • Re: Carga de Dados
          Lucas Lima

          Olha... eu fiz uma carga incremental da seguinte forma:

           

          LET V_DATA_INI = '23/03/2013';
          LET V_DATA_FIN = '23/04/2015'; //DayEnd( Today() );
          
          
          DO WHILE V_DATA_INI <= V_DATA_FIN
          LET V_ANO = Date( V_DATA_INI, 'YYYY' );
          LET V_MES = Date( V_DATA_INI, 'MM' );
          
          
          [TRANSACAO]:
          
          
          LOAD CANAL,
              "NR_TRANSACAO",
              "NR_TRANSACAO" AS ID_TIPO_TRANSACAO,
              "DT_TRANSACAO",
              Year( DT_TRANSACAO )&Num( Month( DT_TRANSACAO ),'00')&Num( Day( DT_TRANSACAO ), '00' ) as ID_CALENDARIO,
              "CE_NR_TERMINAL",
              "CP_CE_CD_POSTOORIGEM",
              "CP_CE_CD_POSTOORIGEM" AS ID_POSTO,
              "CP_CE_CD_AGENCIAORIGEM",
              "CP_CE_CD_AGENCIAORIGEM" AS ID_AGENCIA,
              "TOTAL_TRANSACOES",
              "VL_DINHEIRO",
              "VL_CHEQUEMAIOR",
              "VL_CHEQUEMENOR";
          SQL SELECT *
          FROM "OWN_BI_AUT_PD"."TB_CONSOLIDADO_TRANSACAO_BI"
          WHERE TO_CHAR(DT_TRANSACAO, 'YYYY') = $(V_ANO)
          AND TO_CHAR(DT_TRANSACAO, 'MM') = $(V_MES);
          
          
          LET V_ARQ = V_ANO&V_MES;
            STORE [TRANSACAO] into tabelas/TBE_TRANSACAO_$(V_ARQ).qvd;
            DROP Table [TRANSACAO];
          LET V_DATA_INI = AddMonths( V_DATA_INI, 1 );
          LOOP;
          
          

           

          Com esse script eu fiz a carga total.. depois é só alterar as variáveis de "início e fim" pra serem apenas do mês corrente.

          Na hora do LOAD você lê os arquivos da seguinte forma:

           

          
          LOAD TRANSACAO.CANAL,
               TRANSACAO.NR_TRANSACAO,
               ID_TIPO_TRANSACAO,
               TRANSACAO.DT_TRANSACAO,
               ID_CALENDARIO,
               TRANSACAO.CE_NR_TERMINAL,
               TRANSACAO.CP_CE_CD_POSTOORIGEM,
               ID_POSTO,
               TRANSACAO.CP_CE_CD_AGENCIAORIGEM,
               ID_AGENCIA,
               TRANSACAO.TOTAL_TRANSACOES,
               TRANSACAO.VL_DINHEIRO,
               TRANSACAO.VL_CHEQUEMAIOR,
               TRANSACAO.VL_CHEQUEMENOR,
               if(WildMatch5(TRANSACAO.NR_TRANSACAO, 1, 2, 3, 4, 6, 8, 10, 12, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39), 0, TRANSACAO.VL_DINHEIRO + TRANSACAO.VL_CHEQUEMAIOR + TRANSACAO.VL_CHEQUEMENOR) AS TRANSACAO.VALOR
          FROM
          [C:\Qlikview\automacao\extracao\tabelas\TBE_TRANSACAO*.qvd]
          (qvd);
          
          
          
          

           

          Como ele está armazenando quebrado por mês e com a data no nome do arquivo, o "TBE_TRANSACAO*.qvd" na hora do LOAD vai carregar todos os arquivos.

          • Re: Carga de Dados
            Yuri Nicolett

            Caue, é interessante você ler o capítulo que fala de carga incremental no manual do QlikView. Neste capítulo ele passa diversos exemplos de utilização.

             

            Procure no manual por: Carga Incremental