【发布时间】:2020-09-19 14:22:02
【问题描述】:
当目标表(oracle)上没有定义PK时,我们如何在informatica中实现SCD 2?
使用动态 lkp 概念实现 SCD 类型 2,它将传入行标记为 0、1、2。 我已将 SRC 端口与查找端口相关联,并通过指定“更新动态缓存条件”即 MD5(SRC 列)MD5(LKP 列)并使用“插入其他更新”启用“更新时输出旧值”来进行调节" 设置属性并覆盖 LKP sql。
然后在 EXP 中标记传入记录是否插入/更新,在路由器中使用哪个我们将定义 grps。
从路由器 INSERT GRP(FLAG = 'INSERT' or FLAG = 'UPDATE') ,新插入的 1 个目标实例。 UPDATE GRP(FLAG = 'UPDATE') 连接到 EXP,我将旧记录状态标记为 'N' 并在第二个 Target 实例上执行更新覆盖,因为没有 PK 定义正在执行此操作。
当我在调试器模式下检查流程时,一切工作正常,但是当有更新的记录时,旧记录被标记为状态“N”并且新记录被插入到第一个管道(第一个目标实例)中,而当它从路由器的 UPDATE grp 流出时的旧记录,它的状态更新为 N 和结束日期使 SYSDATE-1 它在表达式中工作,但它再次在第二个目标实例中插入,该实例应该更新状态为 N 和结束日期(sysdate-1)。但它被插入状态 Y 和结束日期与默认日期 谁能帮我弄清楚这里出了什么问题?
注意:在会话级别,对于 TARGET 实例 1,它的 INSERT 和对于第二个应该发生更新的实例,它的“UPDATE as UPDATE”
还尝试通过在第二个管道中保留更新策略来保持 DD_UPDATE 并通过在目标设计器处指定 PK(Infa 级别而不是 db 级别)在会话中将源视为 DATA DRIVEN 但没有运气
【问题讨论】:
-
贴出映射结构
标签: sql oracle informatica informatica-powercenter scd