我们需要在Informatica中的同一映射下实现Insert、Update和delete逻辑。源表结构和目标表结构相同,没有区别。目标中没有主键,我们在Informatica映射中将PERSON_KEY定义为更新记录的主键,我目前正在使用目标表上的查看和比较记录和路由器转换,下面的逻辑用于插入和更新。我亦提供了表格的结构,以供参考。
注:来源和目标来自不同的数据库
插入: ISNULL(LKP_PERSON_KEY)
更新: IIF(PERSON_KEY=LKP_PERSON_KEY,真,假)
PERSON_KEY NUMBER(7, 0) ,
SOURCE_CD VARCHAR2(16 CHAR) ,
SOURCE_INSTANCE NUMBER(2, 0) ,
TYPE_CD VARCHAR2(32 BYTE) ,
TYPE_INSTANCE NUMBER(2, 0) ,
VALUE VARCHAR2(255 CHAR) ,
VALUE_TEXT VARCHAR2(255 CHAR) ,
UPDATE_SOURCE VARCHAR2(32 CHAR) ,
UPDATE_ACCOUNT VARCHAR2(32 CHAR) ,
UPDATE_DATETIME DATE ,
UPDATE_SUNETID VARCHAR2(64 CHAR) ,
UPDATE_COMMENT VARCHAR2(255 CHAR)发布于 2022-03-24 09:11:06
使用update strategy。
确保PERSON_KEY在目标设计器中被定义为PK。
然后在映射中,在目标之前添加表达式转换。输入所有数据列和PERSON_KEY、LKP_PERSON_KEY列。创建一个具有以下逻辑的列。我假设,如果上述任何一个条件都不符合,删除数据。
out_insert_update_flag =
IIF(ISNULL(LKP_PERSON_KEY), 'INSERT',IIF(PERSON_KEY=LKP_PERSON_KEY,'UPDATE','DELETE')
)然后在表达式转换和目标之间添加更新策略。拉入所有必需的列和out_insert_update_flag。创造出这样的逻辑-
IIF(out_insert_update_flag ='INSERT', DD_INSERT, IIF(out_insert_update_flag='UPDATE', DD_UPDATE, DD_DELETE
)) 然后将所有必需的列添加到目标。
在会话中,请将加载策略设置为data driven。
映射应该像-
.... --> EXP-->UPD-->TGThttps://stackoverflow.com/questions/71597515
复制相似问题