如何将含EXISTS子查询的SQL转换为Informatica Cloud实现逻辑?
Informatica Cloud 对应SQL逻辑实现方案
你提供的SQL核心逻辑为筛选TestData表中来源为NC、且同ClusterID下存在ACB系统SourceString为50012559的记录,按以下步骤实现即可:
- 配置源读取:创建源连接读取
TestData表全量数据 - 拆分两路数据流:
- 数据流A(对应SQL中别名A的表):新增过滤器组件,设置过滤条件为
SourceSystem = 'NC',保留所有字段输出 - 数据流B(对应SQL中别名B的表):新增过滤器组件,设置过滤条件为
SourceSystem = 'ACB' AND SourceString = '50012559',仅保留ClusterID字段输出即可;如果同一个ClusterID存在多条符合条件的记录,可以在过滤器后新增去重组件,按ClusterID字段去重,避免最终输出重复数据
- 数据流A(对应SQL中别名A的表):新增过滤器组件,设置过滤条件为
- 配置Joiner转换:选择内连接类型,关联条件设置为
A.ClusterID = B.ClusterID - 字段映射:Joiner输出仅保留数据流A的全部字段,舍弃数据流B的字段
- 目标写入:将Joiner输出结果直接映射到目标表对应字段完成加载
性能优化提示
如果TestData数据量较大,可以将两个分支的过滤逻辑下推到源查询侧执行,减少数据读取和后续转换的计算量:
- 数据流A的源查询改为
SELECT * FROM TestData WHERE SourceSystem = 'NC' - 数据流B的源查询改为
SELECT ClusterID FROM TestData WHERE SourceSystem = 'ACB' AND SourceString = '50012559'
内容的提问来源于stack exchange,提问作者Jyo
相关产品推荐
相关产品推荐

