Как сопоставить два набора кодов (перечисления) с помощью talend

StackOverflow https://stackoverflow.com/questions/3308321

  •  26-09-2020
  •  | 
  •  

Вопрос

предположим, у меня есть следующая исходная таблица (называемая 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) альтернативы:

  1. создайте таблицу сопоставления (назовем ее S_T_Gender_Code_Mapping), которая будет выглядеть следующим образом:

    S_Gender_Code     T_Gender_code     
    
    0                   M               
    1                   F    
    

    а затем выполните простое объединение / поиск с помощью tMap.

  2. используйте tMap и добавьте выражение, которое будет реализовывать сопоставление, что-то вроде:

    (S.Gender_Code==0)?"F":"M"
    
  3. аналогично альтернативе 2, но для использования пользовательских Java-подпрограмм.

Есть ли другая альтернатива?Я надеялся, что смогу использовать простоту tMap для сопоставления между S_GenderValues и T_GenderValues и извлечь выгоду из удобства использования инструмента пользовательского интерфейса, подобного тому, что мы имеем в tMap

Есть какой-нибудь намек?

Это было полезно?

Решение

Мне кажется, вариант № 1 излишне сложен и может замедлить процесс.Конечно, если бы у вас были десятки или тысячи поисковых запросов, это то, что вы бы хотели, но не для двоих.

И вариант # 3 также слишком сложен, так как вам все равно захочется объединить значение в поток или выполнить итерацию stream (такие компоненты, как tJavaRow, существуют для выполнения более сложных преобразований).

Компонент tMap может выполнять простую однострочную Java прямо в потоке, поэтому вариант 2 кажется мне вашим лучшим выбором.

Другие советы

Я решил ситуацию, аналогичную вашей, моя главная проблема заключалась в том, что у меня была одна большая таблица поиска со всеми типами поиска в одном и том же месте.

Если ваша проблема разрастается до большего количества вариантов вместо только двух, полезно иметь в виду третий подход, поэтому вы можете захотеть взглянуть на это решение, оно сопоставляет содержимое таблицы подстановки со списками глобальных переменных a, а затем выполняет их поиск.

Внутренние переменные таланта

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top