【问题标题】:Talend ETL - Extract new records being inserted into the tableTalend ETL - 提取插入到表中的新记录
【发布时间】:2015-08-24 15:21:30
【问题描述】:

嗨,

我创建了一个 Talend ETL 作业,它使用对 tmap 的查询将记录插入到名为“loan_grouping”的表中。我正在使用 tmap 中对“loan_grouping”表的查找来提取已经存在的记录。

我需要一种只提取新创建和插入的记录的方法。我在网上找到了指南,其中显示了如何使用 tmap 中的 Catch 查找内部连接拒绝选项来提取拒绝的记录 - 但我需要相反 - 我需要显示成功的记录。

我在tmap中使用的表达式是:

!row1.GROUP_REFERENCE.equals(row3.GROUP_REFERENCE) 

但它仍然只给我拒绝的记录。我还附上了几张截图。如果有人能提供帮助,我将不胜感激!

【问题讨论】:

    标签: mysql etl talend


    【解决方案1】:

    您对tMap组件的内连接和过滤器感到困惑,据我了解,您不需要过滤器,只需内连接及其接受和拒绝的数据,因此您需要从过滤器框中删除条件!row1.GROUP_REFERENCE.equals(row3.GROUP_REFERENCE)在右上角。 由于在这个 tMap 中有一个内连接,你不能得到一个输出中的所有记录,我们可以有匹配内连接的记录和被拒绝的记录,所以我们可以在这个 tmap 之后使用 tUnite 来合并两个输出并取回所有数据或使用初始来源:

                           lookup
                              |
    tReplicate------(main)---tmap-------- (records that already have ref)
             \                  \
              \                  rejected (new records)
               \
                (all records)
    

    【讨论】:

    • 谢谢你——你说得对,我很困惑!因此,如果我正确理解了您的评论,那么通过删除过滤器,内部连接捕获拒绝将显示源表和查找表中都不存在键字段的任何结果?这会自动将“新”记录发送到第二个输出吗?
    • @monkeyb33f 我不确定您所说的“新”是什么意思,但正如您所做的那样,右侧有两个输出,一个激活了“catch lookup inner join”,第二个没有捕获,当主输入中的一行在查找输入中有一个匹配的GROUP_REFERENCE 时,它将在输出中显示而没有捕获,其余数据将被传递到捕获内部连接拒绝的输出。
    • 好的,我想我跟着。因此,从 tmap 中,我希望顶部输出没有捕获,因为我希望所有记录都进入表(在插入忽略的基础上),而不管 GROUP_REFERENCE 是否已经存在。在第二个输出中,我打开了 catch,这只会显示 GROUP_REFERENCE 不存在的记录(即该记录是表中的“新”记录)?
    • @monkeyb33f 更新答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多