Informatica PowerCenter中如何按规则筛选特定学生数据行?
Informatica PowerCenter 平面文件数据过滤逻辑实现方案
直接按下面的步骤配置转换逻辑即可:
1. 添加 Aggregator 转换做聚合统计
把源数据接入 Aggregator 转换,设置分组键为 Student,然后新建两个计算端口:
Count_Rows:用表达式COUNT(Student),统计每个学生的总行数Has_Pass:用表达式MAX(DECODE(PF, 'Pass', 1, 0)),如果该学生有至少一行PF为Pass,这个端口返回1,否则返回0
2. 用 Joiner 转换关联源数据与聚合结果
把原始源数据和 Aggregator 输出的聚合结果接入 Joiner 转换,关联键设为 Student,选择Inner Join(确保每个学生的源数据都能匹配到对应的聚合统计值)。
3. 添加 Filter 转换实现过滤逻辑
在 Joiner 的输出后接入 Filter 转换,设置过滤条件为:
(Count_Rows > 1 AND Has_Pass = 1) OR (Count_Rows = 1 AND PF = 'Pass')
这个条件的逻辑是:
- 保留多行数据且至少有一行Pass的学生的所有记录
- 保留单行数据且PF为Pass的记录(自动过滤掉单行且PF为Fail的记录)
额外注意事项
- Aggregator 转换要确保分组键
Student的类型和源数据一致,避免关联失败 - 如果源数据里Student存在重复脏数据,可提前用Sorter+Rank或Aggregator做去重处理,保证聚合统计结果准确
内容的提问来源于stack exchange,提问作者User24146692918
相关产品推荐
相关产品推荐

