Как сопоставить два набора кодов (перечисления) с помощью talend
Вопрос
предположим, у меня есть следующая исходная таблица (называемая S):
name gender code
Bob 0
Nancy 1
Ruth 1
David 0
И давайте предположим, что у меня также есть таблица подстановки (называется S_gender_values):
Gender_Code Gender_value
0 Male
1 Female
Моя цель - создать целевую таблицу (назовем ее T), которая будет выглядеть следующим образом:
name Gender_Code
Bob M
Nancy F
Ruth F
David M
Я также предполагаю, что у меня есть таблица подстановки для таблицы T, называемая T_GenderValues, которую я могу использовать для создания таблицы T (и проверки ее результатов)
Gender_Code Gender_value
M Male
F Female
Я думал о 2 (или 3) альтернативы:
создайте таблицу сопоставления (назовем ее S_T_Gender_Code_Mapping), которая будет выглядеть следующим образом:
S_Gender_Code T_Gender_code 0 M 1 F
а затем выполните простое объединение / поиск с помощью tMap.
используйте tMap и добавьте выражение, которое будет реализовывать сопоставление, что-то вроде:
(S.Gender_Code==0)?"F":"M"
аналогично альтернативе 2, но для использования пользовательских Java-подпрограмм.
Есть ли другая альтернатива?Я надеялся, что смогу использовать простоту tMap для сопоставления между S_GenderValues и T_GenderValues и извлечь выгоду из удобства использования инструмента пользовательского интерфейса, подобного тому, что мы имеем в tMap
Есть какой-нибудь намек?
Решение
Мне кажется, вариант № 1 излишне сложен и может замедлить процесс.Конечно, если бы у вас были десятки или тысячи поисковых запросов, это то, что вы бы хотели, но не для двоих.
И вариант # 3 также слишком сложен, так как вам все равно захочется объединить значение в поток или выполнить итерацию stream (такие компоненты, как tJavaRow, существуют для выполнения более сложных преобразований).
Компонент tMap может выполнять простую однострочную Java прямо в потоке, поэтому вариант 2 кажется мне вашим лучшим выбором.
Другие советы
Я решил ситуацию, аналогичную вашей, моя главная проблема заключалась в том, что у меня была одна большая таблица поиска со всеми типами поиска в одном и том же месте.
Если ваша проблема разрастается до большего количества вариантов вместо только двух, полезно иметь в виду третий подход, поэтому вы можете захотеть взглянуть на это решение, оно сопоставляет содержимое таблицы подстановки со списками глобальных переменных a, а затем выполняет их поиск.