如何使用talend在两个代码集(枚举)之间进行映射

时间:2010-07-22 11:29:50

标签: database etl 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)个替代方案

  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. 与Alternative 2类似,但使用用户Java例程。

  4. 还有其他选择吗?我希望我可以利用tMap的简易性在S_GenderValues和T_GenderValues之间进行映射,并从像tMap中的UI工具的可用性中受益

    任何提示?

2 个答案:

答案 0 :(得分:4)

对我来说,似乎选项#1不必要地复杂并且可能会减慢进程。当然,如果你有几十或几千个查找,那就是你想要的,但不是两个。

选项#3也太多了,因为你想要将值合并到流或迭代流中(像tJavaRow这样的组件可以进行更复杂的转换)。

tMap组件可以在流程中执行简单的单行Java,因此选项2听起来像是你最好的选择。

答案 1 :(得分:0)

我已经解决了与你类似的情况,我的主要问题是我有一个大的查找表,在同一个地方有各种类型的查找。

如果你的问题增长到更多的选项而不是只有两个,第三种方法很好,所以你可能想看看这个解决方案,它将查找表的内容映射到全局变量列表,然后查找它们。

Talend internal variables