【问题标题】:previous record end date update in informatica using next record start date使用下一个记录开始日期在 informatica 中更新上一个记录结束日期
【发布时间】:2023-04-07 05:07:01
【问题描述】:

我有一个关于使用下一个记录开始日期更新上一个记录的结束日期的问题。问题是在同一个表加载中的两个记录。除了所有列的组合之外,也没有唯一的行标识符。 示例:源表

HICN FIRST_NAME LAST_NAME M_NAME DOB(string) START_DATE X123 ABC DEF M ' 19600101 1/1/2013 Y456 ABC DEF M 19600101 2/2/2014 现在,(这是我的业务需求,我无能为力)在目标中,我有一个额外的列 END DATE。这是第一次加载,我必须使用名字、姓氏等的串联组合来动态识别 第一条和第二条记录相同,并且如果(且仅当)成员的 HICN 编号发生更改,我必须使用第二条记录的 Start_Date 更新第一条记录(即使用 HICN X123 的记录)的 end_date(即用 HICN Y456 记录)所以我的目标应该是这样的: HICN FIRST_NAME LAST_NAME M_NAME DOB(string) START_DATE END DATE X123 ABC DEF M ' 19600101 1/1/2013 2/2/2014 Y456 ABC DEF M 19600101 2/2/2014 12/31/1990

我已经想出如何更新日期列和标志(我没有在上面提到成员的活动和非活动 hicn)以进行第二次运行,但不知道如果两个记录在同一个批次中如何执行此操作.任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: logic informatica-powercenter


    【解决方案1】:

    试试这些选项:

    1. 在目标表中创建一个列,例如使用 VARCHAR2(100) 的 ROW_ID

    2. 使用以下表达式在表达式转换中创建表达式 -

      MD5(Col1||''||col2||''||...等)

      '*' - 是获得精确输出的分隔符​​

      这个 MD5 函数将生成一个 32 位掩码,我们将在接下来的步骤中使用它

    3. 对目标表进行动态查找

    现在,每当您收到新行时,它都会被添加到目标以及动态查找。因此,如果您尝试将 ROW_ID 字段与计算的第二行 ROW_ID 匹配,您可以轻松找出重复记录。

    MD5 是使用整列列表查找副本的最佳和最快方法之一。不要忘记创建动态查找,否则您将无法找到副本。

    如果您需要更多信息,请告诉我。

    【讨论】:

    • 是的,我得到了您的解决方案。我已经应用了前两个步骤。但是,在我使用动态查找之前: 1. 如果新传入的行与第一行匹配,我能否更新第一行 end_date ,比如说 ROW_ID = 1 的行? 2. 如果是,如何使用第二行的开始日期更新第一行的 End_Date?谢谢
    • 在这种情况下,您可能必须以相反的顺序对记录进行排序,然后获取第一条记录的开始日期并将其更新为第二条匹配记录的结束日期。对以下记录重复相同的操作,直到结束。希望对你有帮助
    • 由于使用排序器会减慢我的映射性能,我可以改为使用目标更新来识别计数器(ROW_ID)是否 > 1,然后使用覆盖 sql 更新并使用计数器值更新记录 - 1 更新日期。可以使用更新覆盖吗? @Aswin_Infa_Developer
    • 您是否将目标覆盖称为更新覆盖?我没有收到你的 qn
    • 是的,在目标中有一个选项可以编写覆盖 sql 语句。在那我们可以以某种方式引用以前的记录并将当前记录日期插入到以前的记录中。有道理?否则我想我将不得不走你建议的路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2020-05-07
    • 2020-01-05
    相关资源
    最近更新 更多