比较行以仅发送 Informatica 中的特定行

问题描述 投票:0回答:1

我需要有关如何在 informatica powercenter 中解决以下问题的指导。

我的源平面文件。

|学生|主题|PF|

|1|科学|失败|

|1|数学|及格|

|2|科学|失败|

我需要应用逻辑,如果某个特定学生在源中有两行(如表中的学生 1),并且在任一科目中“通过”,那么我需要将这两行向前发送,但如果某个特定学生只有 1 行,如对于表中的学生 2 并且行有“失败”,那么我不想将该行向前传递。

我不知道如何实现上述逻辑。

sql etl informatica informatica-powercenter
1个回答
0
投票

我们可以使用自连接来统计某个学生有多少条记录

Pass
。如果 count >0,则所有记录将传递到下一个转换。 您可以按照以下步骤执行此操作 -

  1. 首先使用排序器 - 按学生键排序。
  2. 使用聚合器,创建一个新列,如下所示。请按关键字将“学生”列指定为分组。
count_pass = COUNT(* , PF='Pass')
  1. 使用连接器连接聚合器数据和原始数据。加入将是正常加入并在学生栏上。从聚合器带来 count_pass。
  2. 然后添加具有以下条件的过滤器 -
count_pass >0

整个映射看起来像 -

SQ --> SRT --> AGG-->\
          \----------> JNR--> FIL-->TGT 
© www.soinside.com 2019 - 2024. All rights reserved.