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 using ‘User 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!
Nosso e-mail: etlpowercenter@outlook.com
ETL PowerCenter - by Diogo Vidal
Commentaires