top of page

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

  • Foto do escritor: ETL PowerCenter
    ETL PowerCenter
  • 31 de jul. de 2018
  • 2 min de leitura

Atualizado: 1 de ago. de 2018

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

** 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


Right Outer Join

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


















FUNCI_MAX - Esta é a segunda tabela (direita). 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 RIGHT 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 Direita, 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, 5 e 6 mostrando como NULL.


Right Outer Join Query

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

FROM

FUNCI_MAX RIGHT OUTER JOIN FUNCI_MIN

ON FUNCI_MAX.ID=FUNCI_MIN.ID


Nós terminamos com o Right 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

 
 
 

Comentários


bottom of page