Informatica带N/U标识的profile数据插入更新Mapping实现方法
Informatica Mapping 逻辑实现方案
前置逻辑梳理
所有场景的处理优先级如下:
仅当同时满足标识为'N'、请求本身非更新需求、profile_id表无该profile历史数据三个条件时,执行插入profile_id操作,其余所有场景(含标识'U'、两类特殊'N'场景)均执行更新profile_temp操作。
具体组件配置步骤
- 第一步:源数据接入与存在性校验
用Source Qualifier拉取传入的profile源数据,新增Lookup组件关联profile_id目标表,匹配键为profile唯一主键,配置为左连接,新增表达式字段is_profile_exist:IIF(ISNULL(lkp_returned_primary_key), 0, 1),其中lkp_returned_primary_key是Lookup组件返回的profile_id表主键。 - 第二步:业务场景打标
用Expression转换组件,新增输出字段op_type,判断表达式如下:
若业务侧没有单独的「本身为更新需求标识」字段,可替换为约定的业务规则判断逻辑,比如特定字段非空、字段值符合指定规则等。IIF( 传入标识 = 'N' AND 本身为更新需求标识 = 0 AND is_profile_exist = 0, 'INSERT_PROFILE_ID', 'UPDATE_PROFILE_TEMP' ) - 第三步:路由分发执行对应操作
新增Router转换组件,配置两个输出分组:- 分组1:
op_type = 'INSERT_PROFILE_ID',链路连接到profile_id目标表实例,目标操作配置为INSERT - 分组2:
op_type = 'UPDATE_PROFILE_TEMP',链路连接到profile_temp目标表实例,目标操作配置为UPDATE,匹配键选profile唯一主键
可额外配置默认分组输出到坏日志表,用于排查不符合规则的脏数据。
- 分组1:
- 第四步:目标端属性配置
打开profile_temp目标表实例的属性,勾选Update as Update,确保更新操作正常生效;Lookup组件可根据数据量配置缓存,避免全表扫描降低性能。
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

