top of page

Left Outer Join – Source Qualifier – User Defined Join – PowerCenter

  • 1 de ago. de 2018
  • 2 min de leitura

Como unir duas tabelas – Source Qualifier – User Defined Join – Left Outer Join

** A transformação Source Qualifier é a maneira mais eficiente de unir duas tabelas no mesmo Banco de Dados **

Há duas opções disponíveis no SQ para múltiplas tabelas, uma usando a propriedade "User Defined Join" e a outra usando "SQL Query". Podemos criar um join override para fazer uma associação Normal join, Left join e Outer join usingUser Defined join’ , mas obteremos um erro de banco de dados se você tentar fazer 'Full outer join'. O serviço de integração não suporta Full outer join. Para isso, podemos usar SQL override e concluí-la.


User-Defined Join

Crie um join override. O Serviço de Integração anexa o join override à cláusula WHERE ou FROM da query padrão.


SQL Query

Substitua a query padrão por Join SQL query


Left Outer Join

O Serviço de Integração retorna todas as linhas da tabela à esquerda da sintaxe do join e as linhas de ambas as tabelas que atendem à condição do join. Em outras palavras, ele retorna todas as linhas da tabela da esquerda (FUNCI_MAX), com as linhas correspondentes na tabela da direita (FUNCI_MIN). O resultado é NULL no lado direito quando não há semelhança.


















FUNCI_MIN - Esta é a segunda tabela (esquerda). Vamos unir essas duas tabelas e carregar para o target usando o SQ.

Criei um mapa com Transformação Source Qualifier. Precisamos de apenas 1 instância de SQ aqui com as portas de ambas as tabelas, pois estamos gravando uma única query para ler a partir da source.


Edite a propriedade SQ e entre com a expressão SQL no editor "User Defined Join". Apenas observe a sintaxe do join, insira a instrução de join entre chaves ou então obterá um erro de banco de dados.


Join Syntax

{FUNCI_MAX LEFT OUTER join FUNCI_MIN

on FUNCI_MAX.ID=FUNCI_MIN.ID}


Criei um Workflow e uma session para o mapa e executaremos o job. Vamos analisar o log da sessão. Apenas 6 linhas foram lidas do source e carregadas no target, Todas as linhas da tabela esquerda, com as linhas correspondentes na tabela à esquerda.

Veja o Source Qualifier usado no mapa, usamos a propriedade "User Defined Join", o Serviço de Integração substitui a SQL Query padrão e foi alterado para uma Join Query.

Target output - Todos os registros da tabela Right (4 Matched + 2 Unmatched) foram carregados no target. Como não há correspondência, 7 e 8 mostrando como NULL.


Left Outer Join Query

SELECT FUNCI_MAX.ID, FUNCI_MAX.CARGO, FUNCI_MAX.BONUS_MAXIMO, FUNCI_MIN.BONUS_MINIMO

FROM

FUNCI_MAX, FUNCI_MIN

WHERE

{FUNCI_MAX LEFT OUTER join FUNCI_MIN

on FUNCI_MAX.ID=FUNCI_MIN.ID}



Nós terminamos com o Left Outer Join - Vamos ver Full Outer Join na próxima sessão.

 

Se você gostou, inscreva se, mande sua opinião!

ETL PowerCenter - by Diogo Vidal

 
 
 

Commentaires


bottom of page