4 Replies Latest reply: Nov 25, 2016 7:59 AM by Luciano Vasconcelos RSS

    Diferença entra mapping load e Join ?

    daniel veloso

      Boa tarde Pessoal,

       

      Qual a diferença entre mapping load e Join ? Me parece a mesma coisa.

      A unica diferença que notei é que o mapping load vc pode 'herdar' apenas uma coluna, e o join para 1 ou mais.

      O mapping load nao tem nenhum diferencial pra sua existencia.

        • Re: Diferença entra mapping load e Join ?
          Maicon Mello

          Bom dia,

           

          Bom Mapping Load é uma tabela de carga temporária.

           

          Mapping Load
               
          DeptID,
               Concat(Location,'|') as List
          Inline [
          DeptID, Location
          10,     200
          10,     100
          ]
          Group by DeptID ;

          Emps:
          Load
               EmployeeID,
               subfield(ApplyMap('Dept',DeptID),'|') as Location
          Inline [
          EmployeeID, DeptID
          1213, 10
          ]
          ;


          Ou seja a tabela Mapping só existe no momento da leitura e da aplicação, após isso ela deixa de existir.

          Com isso você pode trabalhar com tabelas internas, ou seja InLine para atender alguma situação que seu banco não atenda.


          Join


          Ja faz uma ligação até mesmo com mais tabelas , porém tabelas existentes que se você não dropar ou coisa no gênero elas vão permanecer na sua nuvem.

          • Re: Diferença entra mapping load e Join ?
            Márcio Rodrigo Campestrini

            Bom dia Daniel

             

            O Map tem função de agilizar a carga de dados de uma segunda tabela sem a necessidade de ler a segunda tabela diversas vezes. Pense no mapping como uma função que irá retornar um valor específico para uma chave.

            O join também vai funcionar, mas como já mencionado por muitos autores, no caso do join deve ser tomado cuidado para não haver duplicação de informações (por exemplo o posto do nicolett.yuri aqui).

            Sobre o mapping, você pode ler o que a jmc comente aqui e aqui

            • Re: Diferença entra mapping load e Join ?
              Yuri Nicolett

              Pode até parecer igual, mas na verdade são funções completamente diferentes.

               

              • O Mapping é uma tabela temporária (dropada automaticamente após o final da carga) utilizada para de/para de informações. Se é um de/para, logo sabemos que só se aceita duas colunas: De e Para.
              • O Mapping pode lembrar a mesma funcionalidade de um LEFT JOIN, porém o mapping não causa duplicidade em sua tabela final (diferentemente do LEFT JOIN que pode causar).

               

              Exemplo de tabela

               

              MappingMes:

              Mapping LOAD * INLINE [

              DE,PARA

              Jan, Janeiro

              Jan, January

              Fev, Fevereiro

              Fev,February

              ];

               

              • Se essa tabela (acima) for utilizado com LEFT JOIN, você duplicará todas as linhas que contém Jan ou Fev, diferentemente do mapping que retornará somente a primeira opção de cada valor: Janeiro ou Fevereiro.
              • O Mapping pode tratar registros não encontrados, no de/para, na mesma leitura. Vamos utilizar a mesma tabela anterior para outro exemplo:

               

              Se a tabela que vai receber o mapping, conter o valor "Mar" para a COLUNA1, você pode trata-lo no mesmo momento:

               

                    Applymap('MappingMes', COLUNA_MES_ABREVIADO, 'Não encontrei') as CampoDepara

               

              Se fizer com Left join, você terá que realizar um RESIDENT da própria tabela para conseguir tratar os valores não encontrados.

               

              • O mapping possui muito mais performance que o JOIN

               

               

              Bom, mas o JOIN é tão ruim assim? Não! O Join é tão poderoso quanto e tem os seus momentos para ser utilizado, por exemplo:

              • Adicionar colunas criando a restrição de registros que existem na segunda tabela (INNER JOIN).
              • Criar um produto cartesiano de informações
              • Criar um relacionamento tudo para tudo (Outer join)
              • E muito mais...

               

              A sacada é identificar o momento de utilizar cada um dos recursos