7 Replies Latest reply: Jun 20, 2014 4:08 PM by Hamilton Junior RSS

    Estruturar Carga diária - Opiião

    Hamilton Junior

      Boa tarde, quero uma sugestão de vocês para a criação e atualização dos arquivos QVDs.

      Hoje eu faço select de 14 tabelas onde no projeto de carga eu separo elas por mês e salvo separadamente, exemplo:

      select * from tabela1(...) mes='04' salvo como tabela1_04.qvd

      select * from tabela1(...) mes='05' salvo como tabela1_05.qvd

      e assim com todas elas, entao no projeto eu concateno todos os qvds. até aqui ta funcionando ok.

      Porém dessa forma apenas é viável como teste, acredito que a carga esteja muito demorada para eu colocar como homologação,

      pensei em criar uma variavel do mes atual exemplo

      select * from tabela1 (...) mes= $var_mes e salvar como tabela1_$var_mes.qvd

       

      Minha duvida é que se algum dado anterior for modificado no sistema eu vou perder e no fim do mes, será que dessa forma vou perder o ultimo dia?

       

      Como voces fazem o script de carga?

        • Re: Estruturar Carga diária - Opiião
          Rogerio Ferreira

          Hamilton,

           

          Em alguns clientes onde é possível eu utilizo a carga incremental de QVD's... em um cliente aqui, acabei gerando um QVD maior com os dados anteriores ao ano em questão, ou seja, de 2013 para baixo... como sei que as informações não serão mudadas nesse período, gerei o QVD uma única vez e o carrego a cada carga no QVW.

           

          Já o do ano atual, faço incremental (atualização e inserção). Dá uma olhadinha na documentação sobre carga incremental, lembrando que o banco de dados tem que ter estrutura para suportar isto (datas que possam ser utilizadas como filtro para o incremental).

           

          Abraços.

          • Re: Estruturar Carga diária - Opiião
            Hamilton Junior

            Vi que o Fernando Tonial em um outro questionamento colocou o seguinte codigo:

             

            Exemplo de Script:

            Tabela_QV:

            SQL SELECT ChavePrimária, X, Y FROM DB_TABLE

            WHERE HoraModificação >= #$(HoraÚltExec)#;

             

            Concatenate LOAD ChavePrimária, X, Y FROM Arquivo.QVD

            WHERE NOT Exists(ChavePrimária);

             

            STORE Tabela_QV INTO Arquivo.QVD;

             

            Porém não sei como eu crio esse campo de HoraModificação, e a chave primaria pensei em usar o OID do banco, o que acham?

              • Re: Estruturar Carga diária - Opiião
                Clever Anjos

                Esse exemplo foi retirado do manual e assume que você possua um campo "HoraModificação" em sua tabela.

                Qualquer campo que seja garantidamente sequencial serve.

                • Re: Estruturar Carga diária - Opiião
                  Aderlan Rodrigues

                  Olá Hamilton, tudo bem?

                   

                  Então, a data da modificação é como o Clever falou, já existe no banco, em muitos casos é a data de cadastro do registo, ou data de atualização, ultima alteração, são vários os nomes que são usados, quando são.

                   

                  Há casos onde existe um campo de autoincremento no banco, ID alguma coisa... Esse também pode ser usado, pegando só os registros com número maior que os que já foram carregados antes.

                   

                  A chave pode ser do banco ou pode ser gerada no QlikView, algo assim:

                  LOAD AutoNumberHash128(A,B) as Chave, X, Y;

                  SQL Select A, B, X, Y from Tabela where DataCadastro >= '$(vUltCarga)';

                   

                  Concatenate LOAD Chave, X, Y From ...

                   

                  Abraço.

                • Re: Estruturar Carga diária - Opiião
                  Hamilton Junior

                  Obrigado pela ajuda pessoal, consegui entender esse codigo hehe,

                  a principio vou usar o ID do prório banco pois pelos testes que fiz, caso duas ou mais linhas sejam identicas o sistema ignora todas e considera apenas uma, acredito que neste caso o ID do seja o mais confiável. Não testei com a AutoNumberHash128 mas é outra solução.