3 Replies Latest reply: Dec 1, 2016 1:00 PM by Joao Eduardo Vasconcelos RSS

    Usar concatenate

    Joao Eduardo Vasconcelos

      Pessoal, estou com uma difuculdade de usar um comando simples o "Concatenate" sempre me retorna erro.

      Penso que essa concatenação deveria ser automatica por conta das colunas e quantidade serem iguais, mas como não foi automática resolvi forçar com o comando, mas sempre me retorna erro na hora de carregar a segunda consulta.

       

      No meu script de gerar o QVD tenho essa consulta:

       

      SLO_UNION_A:
      LOAD
      "AGREEMENT_ID",
      "SLO_ID",
      "NAME",
      "DESCRICAO";
      SQL select AGREEMENT_ID, SLO_ID, NAME, CI as  DESCRICAO
      FROM SMhom.dbo.SLOAVAIL1M1;
      STORE SLO_UNION_A into ..\QVD\SLO_UNION_A.qvd(qvd);
      DROP Table SLO_UNION_A;

       

      CONCATENATE

       

      SLO_UNION_B:
      LOAD
      "AGREEMENT_ID",
      "SLO_ID",
      "NAME",
      "DESCRICAO";
      SQL select AGREEMENT_ID, SLO_ID, NAME, SERVICE_AREA as DESCRICAO
      FROM SMhom.dbo.SLOM1;
      STORE SLO_UNION_B into ..\QVD\SLO_UNION_B.qvd(qvd);
      DROP Table SLO_UNION_B;

       

      Obrigado.

        • Re: Usar concatenate
          Jonas Melo

          Boa tarde, Joao Eduardo Vasconcelos.

           

          Qual é a mensagem de erro?

           

          De qualquer forma, observar que antes do comando CONCATENATE, a tabela tem um comando Drop.

           

          []s,

           

          Jonas Melo.

          • Re: Usar concatenate
            Tiago Fernando Cardoso

            Boa tarde Joao Eduardo, tudo bem?

             

            De acordo com o Jonas e reforçando também:

             

            1 - Particularmente eu prefiro usar o CONCATENATE passando o parâmetro nome da tabela para reforçar;

            CONCATENATE (SLO_UNION_A)

            LOAD  stmt [...]

             

            2 - Se você vai concatenar a tabela SLO_UNION_B com a tabela SLO_UNION_A, seria o mesmo de concatenar a tabela de baixo com a de cima, não sendo necessária a adição de nome, como representado no seu script, devendo ficar apenas o comando CONCATENATE (SLO_UNION_A) e o LOAD statement logo appós;

             

            3 - Favor verificar também os DROP statements, se possível colocá-los no fim do script ou onde tenha certeza de que não afetarão na construção das tabelas.

            • Re: Usar concatenate
              Joao Eduardo Vasconcelos

              RESOLVIDO!

               

              Galera eu retirei os DROPs e não resolveu, ficou dando mensagem não encontrada. "porque não sei ainda"

               

              Resolvi da seguinte forma, carreguei as tabelas normalmente através dos scritps e ao carregar os QVD deveria gerar a concatenação automática, mas não gerava porque eu estava colocando uma função QUALIFY *; dessa forma o nome da tabela estava na frente do nome da coluna (tabela.coluna) e não identificava como sendo nomes iguais.

               

              Resolvi colocando antes da carga do QVD a função UNQUALIFY assim gerando a concatenação automática.

               

              UNQUALIFY *;

              Directory;
              LOAD AGREEMENT_ID ,
                   AGREEMENT_ID as %AGREEMENT_ID,
                   AGREEMENT_ID & SLO_ID as SLO_ID_COMPOSTA,
                   SLO_ID ,
                   NAME,
                   DESCRICAO
              FROM
              [..\qvd\SLO_UNION_B.qvd]
              (qvd);


              LOAD AGREEMENT_ID,
                   AGREEMENT_ID as %AGREEMENT_ID,
                   AGREEMENT_ID & SLO_ID as SLO_ID_COMPOSTA,
                   SLO_ID ,
                   NAME ,
                   DESCRICAO
              FROM
              [..\qvd\SLO_UNION_A.qvd]
              (qvd);