【问题标题】:Loading data based on condition of target table in talend根据talend中目标表的条件加载数据
【发布时间】:2018-01-12 22:03:21
【问题描述】:

我有一个表(目标),它有 5 行,其中一列名称:slno 有值(12,13,14,34,56),我需要根据目标的最大值从我的源表加载数据到目标。

例子:

如果在 slno 列值的源表中是 (12,13,14,34,56,88,89,90,99) 则只有 (88,89,90,99) 值应该转到目标(连同所有行值),基本上我需要从目标中找到最大值并基于此我需要加载该值之后的行。

我尝试使用tJavaRowtSetGlobalVartAggregateRow,但不知道如何映射。

【问题讨论】:

    标签: talend talend-mdm


    【解决方案1】:

    有很多方法可以做到这一点。

    如果您的源表和目标表在同一个数据库上,您可以像这样过滤源查询:

    select *
    from source
    where slno > (select max(slno) from target)
    

    然后加载目标表中的行。

    但如果不是,您可以在 Talend 中完成:

    在目标上查找得到 slno 的最大值:

    SELECT max(slno)
    FROM target
    

    其架构仅包含一列 (max_slno):

    并且在tMap内,只发送源的slno大于目标的slno最大值的行:

    【讨论】:

    • 非常感谢@iMezouar,您能否分享一下用于 SELECT max(slno) FROM target 的 jdbcinput_2_target 的“组件”..
    • 这很简单:i.imgur.com/zAlUL0W.png 只有一列。另外,请注意在 tMap 内部,输入之间没有连接,因为查找只返回一个值。如果这回答了您的问题,请考虑接受我的回答。
    • 抱歉,无法打开 png。我使用 tmysqlrow(在我的情况下)作为查找组件,就像你做的那样“jdbcinput_2_target”并在查询选项卡中提供了 SELECT max(slno) MAXID FROM target(只有一列)。但是那没有出现在 row2 tmap 上(就像你有max_slno 以上)
    • 我已经用截图更新了我的答案。我的猜测是你没有为你的组件设置架构?请参阅我更新的答案。您需要为查找组件设置一列。
    • 是的。仅正确,但仍然在组件 tMap_1 (actor) java.lang.NullPointerException 中出现异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2017-06-25
    • 2013-03-24
    相关资源
    最近更新 更多