5 Replies Latest reply: Dec 14, 2014 2:50 PM by Alessandro Furtado RSS

    Qvd Incremental

    Paulo Vanzela

      Prezado(a)s Boa tarde.

       

      Tenho um projeto de que apura as metas X realizado dos analistas de negocios de minha empresa.

       

      Hoje meu aplicativo ele faz a projecao do mes anterior e o mes corrente.

       

      Primeiramente devido ao tempo de carga que deve ser o mais rapido possivel.

       

      Porem gostaria de ir acumulando em um qvd "extra" digamos as cargas anteriores e subir no Qvw estas informacoes.

       

      Imagino da seguinte maneira, durante a carga diaria, eu so processe o realizado do mes corrente.

       

      Ai no ultimo dia do mes, ele pegue os dados deste qvd principal e jogue para outro qvd.

       

      Dessa forma sempre acumulando..

       

      Alguem ja precisou trabalhar desta maneira ?

        • Re: Qvd Incremental
          Leonardo Osorio

          Pq vc não gera um QVD por mês ??? Se vc gerar 1 QVD por mês vc teria esse as informações acumuladas e a informação do mês atual.

          • Re: Qvd Incremental
            Leonardo Osorio

            Eu faço assim

            Gerar QVD Mensal

            Declaro essa variavel

             

            Let sAnoMesProc = mid(AddMonths(today(),-1),7,4)&mid(AddMonths(today(),-1),4,2);

             

            E na Query e para gerar o qvd

            WHERE date_format(DT_HOR_INI, '%Y%m') = '$(sAnoMesProc)';

            STORE FATO_APONTAMENTO INTO [..\QVD\FATO_APONTAMENTO_$(sAnoMesProc).QVD];

             

            Após isso para carregar o arquivo eu faço um loop

            SUB DoDir (Root)

             

             

                      [Diretorios]:

                      Load

                      '$(Root)' as path autogenerate 1;

                           [FATO]:

                            LOAD

                           CAMPOS

                                          FROM

                                          [..\QVD\FATO_*.QVD]

                                          (qvd);

            END SUB

            FOR each Dir in dirlist ('..\QVD')

                                  CALL DoDir(Dir)

            NEXT Dir

             

            Gerando as tabelas fatos atráves de Sub

            Comando Root é utilizado para criar o caminho de origem do arquivo. Após isso ele irá verificar se a Variavel Dir está no caminho C:\ETL\QVD

            Se estiver ele irá chamar a função Sub DoDir que irá carregar todos os arquivos  que estão nesse caminho

            [..\..\..\..\ETL\QVD\FATO_*.QVD]

            (OBS: o sinal de '*' é usado para representar qualquer coisa que estiver escrito depois da palavra FATO_)

              • Re: Qvd Incremental

                Bom dia!

                 

                Eu tive que trabalhar com um cenário parecido com este onde eu teria que armazenar a classificação do Cliente em um determinado período. As informações eram extraídas do banco e armazenavam a informação semanal do cliente, para ter um curva de classificação de acordo com o cenário dos últimos 6 meses. Eu geralmente utilizo isso quando preciso armazenar uma informação onde o cenário pode modificar constantemente. Por exemplo: um cliente B na semana passada, pode ser, nesta semana, um cliente A.

                 

                Att.

                Rebeca Gums

              • Re: Qvd Incremental
                Antonio Caria

                QVDs incrementais devem ser utilizados só em ultimo caso.

                 

                Raramente os utilizo e acho-os pesados.

                 

                Como exemplo direi que 12 QVD individuais de 100 Mb não correspondem a

                um com 12x100mb.

                 

                Simplemente porque a geração de QVD's regista os dados por coluna e não grava os dados

                em duplicado.

                 

                Estou a fazer um documento sobre esta matéria - Geração Dinamica de QVD's fora do Qlik.

                 

                Abr

                • Re: Qvd Incremental
                  Alessandro Furtado

                  Boa tarde.

                   

                  Eu por exemplo uso a rotina abaixo em uma tabela que tem uma chave sequencial (CHANGENR).

                  Assim, eu verifico se existe um .qvd.  Se existir, eu busco o ultimo numero (CHANGENR) e crio uma variável com o where maior que este numero.  Caso contrario, a variável fica branca.

                   

                  Depois de ler, verifico se existir o .qvd eu concateno nela e depois dou um store, criando um .qvd com os dados anteriores (congelados ) mais os novos.

                  2014-12-14 17_42_04-.png

                   

                  Se você mudar esta rotina, podes fazer por data e neste caso verificando o ultimo dia do mês para dar o concatenate no congelado.

                   

                  Para efeito de informação, esta tabela CDPOS do SAP, registra as alterações (LOG itens) e contem milhões de linhas. Sem o incremental levava 30 minutos lendo esta tabela.  Com a rotina acima, este tempo caiu para 15 segundos, pois somente lé os registros de um numero para frente e neste caso o banco de dados (DB2) resolve de forma rápida e entrega somente os últimos registros.

                   

                  Att,

                   

                  Alessandro Furtado