【问题标题】:Two date columns in source to decide the latest updated record in informatica源中的两个日期列用于决定 informatica 中的最新更新记录
【发布时间】:2016-10-22 08:15:31
【问题描述】:

我有如下要求: 我有一个像

这样的源表
id | name | address | updt_date_1 | updt_date_2
1  | abc  | xyz     | 2000-01-01  | 1999-01-01
1  | abc  | pqr     | 2001-01-01  | 1999-01-01
2  | lmn  | ghi     | 1999-01-01  | 1999-01-01
2  | lmn  | stu     | 2000-01-01  | 2008-01-01

我想进入目标:

1 | abc | pqr 
2 | lmn | stu

即我希望在两个日期列 -updt_date_1 或 updt_date_2 中的任何一个中都有最新更新日期的记录

请建议如何在 informatica PC 中实现这一点

【问题讨论】:

    标签: informatica-powercenter


    【解决方案1】:

    只需使用 3 种转换(SourceQualifier、Expression 和 Filter)即可有效地实现此要求。请看下面的步骤

    1) 在源限定符转换中使用以下 SQL 覆盖将两个 last_updated_date 字段减少为一个

    SELECT
        id
        ,name
        ,address
        ,CASE WHEN updt_date_1 > updt_date_2 THEN updt_date_1 ELSE updt_date_2 AS updt_date 
    FROM souce_table 
    ORDER BY id, updt_date DESC
    

    现在每个 id 的第一行将是所需的记录。

    2) 使用表达式转换来标记每个 id 的第一行。在表达式转换中按顺序使用以下端口(前缀o_表示输出端口,v_表示变量端口,i_表示输入端口)

    PORT               EXPRESSION
    v_FIRST_ROW_FLAG - IIF(v_PREV_ID==i_id,'N','Y')
    v_PREV_ID        - i_id
    o_FIRST_ROW_FLAG - v_FIRST_ROW_FLAG
    

    3) 接下来添加一个过滤器转换来过滤不满足以下条件的记录

    IIF(o_FIRST_ROW_FLAG==Y,TRUE,FALSE)
    

    将此过滤器转换连接到目标定义。这将为您提供预期的输出。

    【讨论】:

      【解决方案2】:

      基本上我们必须确定最大更新日期 1 和更新日期 2。然后我们必须选择它们之间的最大值。

      1. 使用源限定符,然后根据 id、name 对数据进行排序。
      2. 之后添加一个聚合器。拉 id、name、updt_date_1、updt_date_2 列。创建两个 o/p 列 - max_upd_dt1、max_upd_dt2 并分别计算 MAX(updt_date_1)、MAX(updt_date_2)。按 id、name 设置组。
      3. 使用连接器根据 id、name 连接排序器输出和聚合器输出。所以现在你有两个额外的列 - max_upd_dt1 和 max_upd_dt2。
      4. 在连接符后使用表达式转换。拉入所有列。创建两个输出端口并设置如下逻辑 - out_upd_dt1 = iif(max_upd_dt1 > max_upd_dt2,max_upd_dt1,updt_date_1) out_upd_dt2 = iif(max_upd_dt1
      5. 使用另一个源限定符(按 id、name 排序)并将其与上述表达式 tx 连接起来。加入基于 - id=id, name=name, out_upd_dt1=updt_date_1, out_upd_dt2= updt_date_2
      6. 领取身份证、姓名、地址

      HTH

      考什克

      【讨论】:

        猜你喜欢
        • 2017-06-27
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2022-09-30
        • 1970-01-01
        • 2019-07-20
        • 2015-09-06
        • 2015-01-27
        相关资源
        最近更新 更多