标记插入使用informatica更新并删除目标中的源记录

时间:2017-08-01 18:14:53

标签: informatica informatica-powercenter

要求是将来自源的目标记录标记为I,U,D,I-insert,D-Delete,u-Update。源和目标是各种RDBMS系统。

来源 - 甲骨文 目标 - Greenplum

在scd type1上使用lookup我们能够实现I和U标志。由于查找基于主键的equi连接,因此标记已删除的记录是一项挑战。无法使用左外部或全外部连接

您的意见非常明显

4 个答案:

答案 0 :(得分:1)

除了已经提到的解决方案之外,为了提高性能,您可以在加载之前将所有内容标记为已删除,然后相应地标记插入/更新。这样你可以避免比较。

答案 1 :(得分:0)

我不确定我是否正确理解了该要求,但假设您根据非来源的数据删除了记录。

可能有一些方法。您应该在源和目标中有一个键来标识相同的记录。

如果以上假设是正确的,请遵循以下流程:

  1. 首先使用输入数据来更新/插入记录。
  2. 使用目标加载计划并运行另一个映射,将目标数据库作为源,并对传入数据执行减号操作。
  3. 删除其他已识别的记录。
  4. 如果我对上述问题的理解错误,请更正。

答案 2 :(得分:0)

正如Thilak所提到的,源和目标是两种不同的RDBMS,我们无法逆转减去。

你必须在两个步骤中处理,在oracle中的staging表中暂存从source接收的所有内容,然后在staging表中加载delta compare以根据完全外连接决定I / U / D.

假设您始终从源获得满负荷。如果来源未发送完整数据,您将无法跟踪删除。

希望它有所帮助!

答案 3 :(得分:0)

Powerexchange是另一种信息产品,它可以从oracle重做日志中读取,以实时确定源数据库记录的变化。这些记录可以在DTL__CAPXACTION字段中标记为I U或D.然后,Powerexchange通过应用程序多组源限定符连接到powercenter映射。

如果他们追求的解决方案更加内联其他人所做的假设我会选择Maciej - 很好,很简单