Como mapear entre dois conjuntos de códigos (enumerações) usando talend
Pergunta
suponha que eu tenha a seguinte tabela de origem (chamada S):
name gender code
Bob 0
Nancy 1
Ruth 1
David 0
E vamos supor que eu também tenha uma tabela de pesquisa (chamada S_gender_values):
Gender_Code Gender_value
0 Male
1 Female
Meu objetivo é criar uma tabela de destino (vamos chamá-la de T) que ficará assim:
name Gender_Code
Bob M
Nancy F
Ruth F
David M
Presumo também que tenho uma tabela de pesquisa para a tabela T, chamada T_GenderValues, que posso usar para criar a tabela T (e validar seus resultados)
Gender_Code Gender_value
M Male
F Female
Pensei em 2 (ou 3) alternativas:
crie uma tabela de mapeamento (vamos chamá-la de S_T_Gender_Code_Mapping) que ficará assim:
S_Gender_Code T_Gender_code 0 M 1 F
e, em seguida, faça uma junção/pesquisa simples usando o tMap.
use tMap e adicione uma expressão que implementará o mapeamento, algo como:
(S.Gender_Code==0)?"F":"M"
semelhante à Alternativa 2, mas para usar rotinas Java do usuário.
Existe outra alternativa?Eu esperava poder aproveitar a facilidade do tMap para mapear entre S_GenderValues e T_GenderValues e se beneficiar da usabilidade da ferramenta de UI como temos no tMap
Alguma dica?
Solução
Para mim, parece que a opção nº 1 é desnecessariamente complexa e pode retardar o processo.Claro, se você tivesse dezenas ou milhares de pesquisas, é isso que você desejaria, mas não para duas.
E a opção nº 3 também é demais, pois você vai querer mesclar o valor em um fluxo ou iterar o fluxo de qualquer maneira (componentes como tJavaRow existem para fazer transformações mais complexas).
O componente tMap pode fazer o Java simples de uma linha diretamente no fluxo, então a opção 2 me parece sua melhor escolha.
Outras dicas
Resolvi uma situação semelhante à sua, meu principal problema era que eu tinha uma grande tabela de pesquisa com todos os tipos de pesquisa no mesmo lugar.
Se o seu problema crescer para mais opções em vez de apenas duas, é bom ter em mente a terceira abordagem, então você pode querer dar uma olhada nesta solução, ela mapeia o conteúdo da tabela de pesquisa para variáveis globais e listas, e então os pesquisa.