9 Replies Latest reply: Oct 18, 2012 2:37 PM by Joao Silva RSS

    Incrementar dados em um QVD.

      Pessoal, boa tarde!

       

       

      Estou trabalhando com as bases de compras, vendas e estoque na empresa em que trabalho. Já criei varias visoes, extratores, etc. No entanto, os dados vao continuar chegando, e como a quantidade de dados ja esta ultrapassando os 80 milhoes de registros, gostaria de saber como posso acrescentar apenas um mês nos arquivos QVD's que possuo. Uma vez que recebo todos os meses as bases tanto em excel como em .txt.

       

      Resumindo, como acrescentar os meses (informaçoes) em arquivos QVDs que já existem, sem ter que recarregar desde o primeiro mês?

       

       

      Abraço.

        • Re: Incrementar dados em um QVD.
          Cesar Accardi

          Olá João,

           

          Este controle é bem simples, você pode simplesmente carregar o arquivo QVD salvo anteriormente filtrando na cláusula WHERE somente os períodos anteriores (Ex: WHERE Mês <> $(vMês), supondo a variável vMês sendo 10 -> período em aberto) e concatenar com a carga atual que é exclusiva do período em aberto, aí você armazena novamente no mesmo QVD. Segue um código de exemplo:

           

                 DESPESA:
                 SQL SELECT * FROM ORC_DESPESA WHERE ANO = $(vCtrCarga_Incremental_Ano);
          
                  CONCATENATE(DESPESA)
                    LOAD DESPESA_ANO, 
                         UNIDADE_PK, 
                         CRESPONS_PK, 
                         GRPCONTA_PK, 
                         PERIODO_COD, 
                         VLR_DESP_REAL, 
                         VLR_DESP_META,
                         VLR_DESP_PROJ
                    FROM $(QVDPath)\ORC_DESPESA.qvd(qvd)
                    WHERE DESPESA_ANO <> $(vCtrCarga_Incremental_Ano) ;
          
                      STORE DESPESA INTO $(QVDPath)\ORC_DESPESA.qvd;
          
          
            • Re: Incrementar dados em um QVD.

              Cesar,

               

               

              Tenho uma estrutura que importa o arquivo em excel, concatena todos os arquivos e depois eu gero um QVD. Seguindo o modelo/exemplo que voce criou. Eu teria que carregar esse qvd e concatenar com os meses que forem entrando. E isso?

               

              Segue codigo:

               

              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD JANEIRO]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD FEVEREIRO]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD MARÇO]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD ABRIL]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD MAIO]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD JUNHO]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD JULHO]);



              LOAD PLATAFORMA,

                  
              PERÍODO,

                  
              TIPO_FILIAL,

                  
              FILIAL,

                  
              LINHA,

                  
              MIX,

                  
              FABRICANTE,

                  
              COD_PRODUTO,

                  
              PRODUTO,

                  
              QTD_ESTOQUE,

                  
              VALOR_ESTOQUE_UNITARIO,

                  
              VALOR_ESTOQUE

              FROM

              [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

              (
              ooxml, embedded labels, table is [BD EST GRD AGOSTO]);



              STORE [BD EST GRD JANEIRO] INTO C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD_ESTOQUE.qvd;

               

                • Re: Incrementar dados em um QVD.
                  Aderlan Rodrigues

                  Olá João,

                   

                  Complementando a dica do Pablo e a do Cesar, pelo que vi no seu código, sugiro que faça uso do FOR EACH.

                   

                  FOR Each Planilha in '[BD EST GRD JANEIRO]','[BD EST GRD FEVEREIRO]','[BD ES...

                   

                      Planilhas:

                      LOAD PLATAFORMA,

                           PERÍODO,

                           TIPO_FILIAL,

                           FILIAL,

                           LINHA,

                           MIX,

                           FABRICANTE,

                           COD_PRODUTO,

                           PRODUTO,

                           QTD_ESTOQUE,

                           VALOR_ESTOQUE_UNITARIO,

                           VALOR_ESTOQUE

                      FROM [C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD - BD ESTOQUE JANEIRO A AGOSTO LOJAS E CD OFICIAL.xlsx]

                      (ooxml, embedded labels, table is $(Planilha));

                   

                  NEXT;

                • Re: Incrementar dados em um QVD.

                  Cesar, funcionou legal.

                   

                  Muito obrigado mesmo.

                • Re: Incrementar dados em um QVD.
                  Pablo Labbe

                  João,

                   

                     Creio que é mais simples gerar um QVD para cada pasta da planilha, já que cada uma delas representa a posição do estoque no fim do mês e que não vai mudar mais. Desta forma terás no diretório varios QVDs como o exemplo a seguir:

                   

                    GRD_ESTOQUE_2012_01.QVD

                    GRD_ESTOQUE_2012_02.QVD

                    GRD_ESTOQUE_2012_03.QVD

                    GRD_ESTOQUE_2012_04.QVD

                    GRD_ESTOQUE_2012_05.QVD

                    GRD_ESTOQUE_2012_06.QVD

                    GRD_ESTOQUE_2012_07.QVD

                    GRD_ESTOQUE_2012_08.QVD

                   

                   

                   

                     Na hora de de ler os QVDS, use o comando Load * from GRD_ESTOQUE_*.QVD para ler todos os QVDs gerados de uma unica vez.

                   

                  Abraço,

                   

                  Pablo Labbe

                  Consultor Qlikview

                  www.visiongi.com.br

                  • Re: Incrementar dados em um QVD.
                    Aderlan Rodrigues

                    João,

                     

                    Após ler a sua primeira pergunta, achei melhor escrever mais um post, talvez lhe ajude.

                     

                    Vejamos, você recebe arquivos com frequencia, os quais são Excel e TXT, no exemplo que você postou, existe um arquivo com várias planilhas, que até já postei o uso do FOR EACH para lhe auxiliar, porém, se houver a posibilidade de fazer o que vou descrever abaixo, vai facilitar muito a chegada desses arquivos.

                     

                    Crie uma pasta onde você colocará os arquivos que chegam no seguinte padrão: (caso seja possível já gere ou peças os arquivos sempre no mesmo padrão, com apenas uma planilha interna com nome de Plan1 mesmo, ou outro, desde que seja sempre o mesmo nome da planilha)

                    GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012JANEIRO.xlsx

                    GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012FEVEREIRO.xlsx

                    GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012MARÇO.xlsx

                    GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012ABRIL.xlsx

                    ...

                     

                    GRD - BD VENDA - 2012JANEIRO.txt

                    GRD - BD VENDA - 2012FEVEREIRO.txt

                     

                    Com isso feito, no QlikView, seu scritp vai ficar:

                    Estoque:

                    LOAD ... FROM [(caminho dos arquivos)\GRD - DB ESTOQUE LOJAS E CD OFICIAL - *.xlsx]

                     

                    Vendas:

                    LOAD ... FROM [(caminho dos arquivos)\GRD - DB VENDAS - *.txt]

                     

                    STORE Estoque INTO (caminho de destino)\Estoque.qvd (qvd);

                    STORE Vendas INTO (caminho de destino)\Vendas.qvd (qvd);

                     

                    Com isso, basta colocar o novo arquivo na mesma pasta, com o mesmo padrão e o QV vai fazer o LOAD de tudo e gerar o QVD.

                     

                    Como o volume de dados pode ser gigantesco, entra então os passos para carga incremental, onde você deve primeiro carregar o QVD, caregar os arquivos onde um campo chave não esteja do QVD ainda e só então fazer o STORE dos dados outra vez.

                     

                    Assim o processo fica bem automático.

                     

                    Grande abraço, espero que eu tenha conseguido esclarecer bem a sua dúvida.

                     

                    *** Se foi útil, não esqueça de marcar como resposta/ajudou para também colaborar com toda a comunidade a esclarecer as dúvidas. ***

                    • Re: Incrementar dados em um QVD.

                      Pessoal,

                       

                      Consegui fazer rodar com as dicas dadas por todos. Cesar, Aderlan e Pablo.

                       

                      Agora e so escolher a melhor estrutura que se enquadra para aquilo que preciso.

                       

                      Muito obrigado a todos.