【问题标题】:Insert Update and delete source flag records in target using informatica使用 informatica 在目标中插入更新和删除源标志记录
【发布时间】:2018-11-24 10:53:54
【问题描述】:

我实现了与下面相同的映射。有人可以建议这是不是好方法。

从生产中复制的旧记录,因此它们没有为这些记录提供标记。只有新记录我们才会得到标记。

来源数据:

col1   col2 col3  DML_FLAG
1      a    123   NULL(old record)
2      b    456   I
3      c    678   U

映射:

Source...>SQ...>exp...>lkp(on target to identify new or update)
       ..>exp..>...>RTR(for insert and update)-->upd(for update)...>target

第一次加载我必须加载所有记录,即完全加载(旧记录(DML_flag 为空)和新记录

从第 2 次运行开始,我必须只从源中捕获更改的记录。为此,我使用映射变量

在这里我有一个问题,我们已经在源代码中再次提供了 I 和 U 标志我正在使用 LKP,无需查找,我可以在 RTR 中将 DML_FLAG 与两个组 I 和 U 一起使用。

但我需要每 30 分钟刷新一次数据,在 30 分钟内插入一条记录(I)并更新同一记录,然后源中的标志更改为“U”,同一记录在目标中不可用,因为在没有 lkp 的情况下,我如何才能捕获带有标志 'U' 的新记录。

有人可以建议我如何在不查找的情况下做到这一点吗?

【问题讨论】:

    标签: etl data-warehouse informatica informatica-powercenter snowflake-cloud-data-platform


    【解决方案1】:

    根据我对您的问题的理解,您希望确保在将更新应用于同一条记录之前将插入应用到目标中 - 这是正确的吗?如果是这样,只需使用目标加载计划,其中插入路由到同一目标的单独别名,并且在加载顺序中高于更新

    作为设计选择是否正确的答案取决于目标数据库是什么......对于数据仓库事实表,您通常会插入所有记录,无论它们是插入还是更新,因为您将报告事件而不是记录状态。对于维度表,这将取决于您缓慢变化的维度策略

    【讨论】:

    • 谢谢丹尼尔,是的,我需要插入标记为“U”的记录,我需要每 30 分钟刷新一次数据,在 30 分钟内插入一条记录(I)并获得相同的记录更新然后标志在源中更改为“U”,相同的记录在目标中不可用。
    • 我不明白为什么你需要记录已经在目标中,除非你正在进行更新。如果是这种情况,则使用上述目标加载计划,该计划将首先处理所有插入,然后在进行更新时记录将在那里。
    • 谢谢丹尼尔,目标中没有记录。我的源流是 Source ETL Target Run 3(8:00) EMP No Name Location Flag Timestamp EMP No Name Location 5 John CA I 6/11/2018 7:30 INSERT(I) 4 John NJ 5 John NJ U 6/11 /2018 7:31 UPDATE(U)如果一条记录被插入并且相同的记录在下次刷新时被更新,那么 ETL 只捕获更新的记录并插入到目标中
    • 好的...如果您只想插入更新记录,您可以通过使用基于两条记录中的共享键和标志升序的排序器来实现这一点。随后是仅在共享键上的聚合器,瞧,在聚合器过滤插入时,带有更新标记的记录通过。让我知道这是否符合您的要求
    猜你喜欢
    • 2012-08-08
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2011-11-27
    相关资源
    最近更新 更多