【问题标题】:How to map between two code sets (enumerations) using talend如何使用 talend 在两个代码集(枚举)之间进行映射
【发布时间】:2010-07-22 11:29:49
【问题描述】:

假设我有以下源表(称为 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 中使用的 UI 工具的可用性

有什么提示吗?

【问题讨论】:

    标签: database etl talend


    【解决方案1】:

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

    而且选项 #3 也太多了,因为无论如何您都希望将值合并到流或迭代流中(tJavaRow 之类的组件可以进行更复杂的转换)。

    tMap 组件可以直接在流程中执行简单的单行 Java,因此选项 2 在我看来是您的最佳选择。

    【讨论】:

      【解决方案2】:

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

      如果您的问题发展到更多选项而不是只有两个选项,第三种方法最好记住,因此您可能想看看这个解决方案,它将查找表的内容映射到全局变量列表,然后查找它们。

      Talend internal variables

      【讨论】:

        猜你喜欢
        • 2012-07-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 2015-03-04
        相关资源
        最近更新 更多