【问题标题】:Informatica issue - transformationInformatica 问题 - 转换
【发布时间】:2012-02-20 12:51:27
【问题描述】:

我想知道如何通过 Informatica 获取最新更新的记录。假设我在一个临时表中有 10 条记录。 Account1 有 3 条记录,Account2 有 3 条记录,Account3 有 4 条记录。现在在这 3 个帐户中,我只需要获取那些具有最大日期值(最新日期)的记录并插入另一个临时表中。那么我可以使用哪些转换来获得这个或我应该使用的 informatica 逻辑?请帮忙。

【问题讨论】:

    标签: informatica-powercenter informatica


    【解决方案1】:
    1. 如果 Date 列来自具有唯一日期的输入,则基于此使用聚合器转换并获取最大日期。
    2. 如果不存在日期列,请分配系统时间戳,但不能从中获取最大日期。您必须使用其他一些逻辑,例如 rowid 和 rownum 功能。

    【讨论】:

    • 是 AruM,日期列来自具有唯一值的输入。所以我通过使用排序器和聚合器来做到这一点。使用 Sorter,我正在使用 Account 和 Date 字段对数据进行排序。我正在将其输出到 Aggregator 中,在其中我在 Account 字段中使用它并使用数据字段的 Max 函数。我希望我的方法是正确的。不过我真的很感谢你的回答:)
    【解决方案2】:

    如果源是DB,我们可以在SQ本身做——通过pk字段分组写一个临时表,选择这个pk字段和max(date)。然后根据 pk 和日期将此输出与原始源连接。 例如:

    select * from src_table
    join ( select pk,max(date) as maxdate from src_table ) aggr_table
    on src_table.pk=aggr_table.pk
    and src_table.date=aggr_table.maxdate
    

    同样可以使用聚合器和连接器在 informatica 内部实现。但是由于聚合器源是 sq 并且它的输出再次与 sq 连接,所以在聚合器和连接器之间需要一个排序器。

    【讨论】:

      【解决方案3】:

      您可以使用聚合器转换。您可以先使用排序器转换,然后根据帐户和日期 asc 进行排序。之后您可以使用聚合器转换(基于帐户的分组)。您不需要添加任何条件或分组功能,因为聚合器会给出每个组的最后记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多