Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Diferença entra mapping load e Join ?

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.

Tags (1)
1 Solution

Accepted Solutions

Re: Diferença entra mapping load e Join ?

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

4 Replies
maiconmello
Contributor III

Re: Diferença entra mapping load e Join ?

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.

MCampestrini
Valued Contributor

Re: Diferença entra mapping load e Join ?

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.yuriaqui).

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

Márcio Rodrigo Campestrini

Re: Diferença entra mapping load e Join ?

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

lucianosv
Valued Contributor

Re: Diferença entra mapping load e Join ?

Grande aula mestre Yuri.