Informatica 插入带有标志"N"、"U"的更新代码,如何更新



如果配置文件带有N标志需要插入到profile_id,如果带有U标志则更新到profile_temp。有时用户也带有N标志,用于更新,只需要更新到profile_temp。当它已经加载到我的配置文件之后,后来一些配置文件被分配了N标志,但这次它来更新。如何在infa中进行映射?

请先使用表达式转换,然后再使用更新策略。

  1. 首先使用一个表达式来创建一个标志。
flag_insert_update = 
IIF ( user_flag = 'N', 'INS_PROFILE',
IIF ( user_flag = 'UPDATE', 'UPD_PROFILE_TEMP',
IIF (user_flag = 'n','UPD_PROFILE_TEMP'
))) -- You can calculate as per your logic.
  1. 使用路由器在profile和profile_temp之间分割数据
group 1 = flag_insert_update = 'INS_PROFILE'
group 2 = flag_insert_update <> 'INS_PROFILE'
  1. 然后使用多种更新策略。一个链接到PROFILE表,一个链接到PROFILE_TEMP表。

更新PROFILE表的策略逻辑-

IIF(flag_insert_update ='INS_PROFILE', 'DD_INSERT' ) -- pls note else condition is null.

更新PROFILE_TEMP表的策略逻辑

IIF(flag_insert_update ='UPD_PROFILE_TEMP', 'DD_UPDATE' ) -- pls note else condition is null.
  1. 然后将更新策略链接到相应的目标。

整个映射应该是这样的。

|-UPD_PROFILE --> TGT_PROFILE
EXP_FLAG_INS_UPD -RTR_SPLIT ->|-UPD_PROFILE_TEMP --> TGT_PROFILE_TEMP

最新更新