6 Replies Latest reply: Mar 14, 2013 3:35 PM by Pablo Labbe RSS

    Novo Campo na Select

    Thiago das Chagas cunha

      Pessoal bom Dia

       

       


      Fui Obrigado a adicionar um novo campo em todos os meus documentos, só que tem um problema a trabalho com Gama de dados de 2011, 2012 e 2013, se eu tenta carregar esse novo campo agora os documentos antigos vão dar erro por que ele nao existia, existe alguma forma de resolver isso sem carregar tudo de novo ?

        • Re: Novo Campo na Select

          Você pode ler estes dados antes da alteração em um script (acredito da forma que já carrega hoje) e salve em um arquivo QVD.

           

          Na nova consulta, leia este arquivo qvd, inserindo um campo nulo em seguida concatene com a tabela com os dados atuais inserindo o novo campo:

           

           

          LOAD  SEUS_CAMPOS....

                      '' AS NOVO_CAMPO

          FROM ARQUIVO.QVD(qvd);

           

          CONCATENATE

           

          LOAD  SEUS_CAMPOS....

                     NOVO_CAMPO

          FROM SUA_TABELA;

           

          Abraços

            • Re: Novo Campo na Select
              Thiago das Chagas cunha

              Bom Dia Eduardo,

               

               

              No caso isso funciona se eu usar Qvd ? por que a select do extrator foi alterada...o nome do Arquivo é o mesmo, terei que alterar o nome do arquivo ?

                • Re: Novo Campo na Select

                  Thiago,

                   

                  Tem como postar o seu código para entender melhor?

                   

                  A lógica seria retornar os campos até antes da alteração (ARQUIVO QVD_1 por exemplo) e depois concatenar com os novos valores. Sendo que para os dados antigos os valores desta coluna seria retornado nulo.

                   

                  Abraços

                    • Re: Novo Campo na Select
                      Thiago das Chagas cunha

                      Boa Tarde Eduardo,

                       

                      Seria assim: tinha um Query no Meu extrator lá norma

                       


                      SELECT v.valor_fracionado , v.valor_unidade v.valor_total FROM vendas v  WHERE v.id IS NOT NULL

                       

                      Carregava essa informação em um QVD de Mês a Mês  devido a quantidade d einformações ser muito grande.

                       

                      o problema que tenho é que pediram para que no Document tivesse mais um campo chamado: valor por Metragem Cubica.

                       

                      Esse valor está na base de dados na mesma tabela se chama: "valor_m3"

                       

                      então o que fiz foi inserir na query  SELECT v.valor_fracionado , v.valor_unidade v.valor_total, valor_m3 FROM vendas v  WHERE v.id IS NOT NULL

                       

                      fiz a recarga do dados , porem se eu tentar recarregar o Document pedindo esse novo campo o valor_m3, tenho problema que por exemplo meu arquivo qvd do mês 2/2013 nao tinha esse campo lá então ele da erro dizendo que não localizou o campo, queria uma forma de ler os antigos e os novos ( Pq o campo foi recem criado mesmo)

                       

                      Em tese é isso

                        • Re: Novo Campo na Select

                          Thiago,

                           

                          Pelo o que entendi é muita informação para ser lido direto do SQL o que acaba causando uma lentidão na extração dos dados correto?

                           

                          Então você possui um arquivo QVD dos meses anteriores pois a leitura através do QVD é muito mais rápida.

                           

                          Você primeiro precisa realizar um tratamento no seu arquivo QVD, incluindo uma coluna vazia:

                           

                          // Pode criar um arquivo de teste somente para gerar o QVD

                          LOAD

                               VALOR_FRACIONADO,

                               VALOR_UNIDADE,

                               VALOR_TOTAL,

                               '' AS VALOR_M3

                          FROM SEU_ARQUIVO_QVD.qvd(qvd);

                          STORE * FROM TABELA INTO TABELA.QVD;

                           

                          Após gerado o arquivo QVD com a coluna, você não vai mais utilizar o documento criado, precisa somente do arquivo QVD gerado.

                           

                          No script atual do seu documento Qlikview faça a carga a seguir.

                           

                          TABELA:

                          LOAD

                               VALOR_FRACIONADO,

                               VALOR_UNIDADE,

                               VALOR_TOTAL,

                               VALOR_M3

                          FROM SEU_ARQUIVO_QVD.qvd(qvd);

                           

                          // Depois você apenas realiza a leitura desta nova carga

                          CONCATENATE

                          LOAD

                               VALOR_FRACIONADO,

                               VALOR_UNIDADE,

                               VALOR_TOTAL,

                               VALOR_M3

                          SQL

                          SELECT

                               v.valor_fracionado,

                               v.valor_unidade,

                               v.valor_total,

                               valor_m3

                          FROM vendas v

                          WHERE v.id IS NOT NULL;

                           

                          STORE * FROM TABELA INTO TABELA.QVD;

                          • Re: Novo Campo na Select
                            Pablo Labbe

                            Thiago,

                             

                             

                              A solução mais simples para isso é ajustar os QVDS do historico, incluindo esta nova coluna em cada um destes arquivos.

                             

                             

                              sugiro copiar os QVDs para uma pasta especifica onde você vai executar a conversão, ex: C:\pastaconversao.

                             

                             

                              Use o script a seguir para ajustar os qvds:

                             

                             

                               For each vFile in FileList('C:\pastaconversao\TABELA_20*.QVD')

                                     TABELA_TEMP:

                                      LOAD  *, NULL() AS valor_m3 FROM  $(vFile) (qvd)  ;

                                      STORE TABELA_TEMP INTO $(vFile);

                                     DROP TABLE TABELA_TEMP;

                               Next vFile

                             

                             

                              a variavel vFile conterá o nome do arquivo com o caminho completo

                             

                              concluida a conversão , copie os QVDs para a pasta original. (lembre-se de fazer um backup dos QVDs originais).

                             

                             

                            Abraço,

                             

                             

                            Pablo Labbe

                            Consultor Qlikview

                            Vision/TSVC

                            www.visiongi.com.br