如何提取所有行,满足特定条件的行?详细说明

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

我正在尝试使用Informatica PowerCenter根据以下标准在Target中加载一组策略编号。

我想选择所有那些政策编号的行,Rider = 0的策略

这是我的来源: -

Policy  Rider   Plan
1234    0   1000
1234    1   1010
1234    2   3000
9090    0   2000
9090    2   2545
4321    3   2000
4321    1   2000

目标应如下所示: -

Policy  Rider   Plan
1234    0   1000
1234    1   1010
1234    2   3000
9090    0   2000
9090    2   2545

不会加载政策号码4321。

如果我使用filter作为Rider = 0,那么我会错过以下行: -

1234    1   1010
1234    2   3000
9090    0   2000
9090    2   2545

使用PowerCenter Designer加载此类数据的理想方法是什么?

etl lookup informatica informatica-powercenter
2个回答
1
投票

在相同映射中的另一个限定符中使用相同的源,使用过滤器作为Rider = 0以获取具有Rider = 0的唯一策略编号的列表,然后在策略编号上使用具有常规源的加入者。这应该工作。

另一种方法是根据策略和Rider对数据进行排序,并使用条件类似于下面的变量端口。

v_validflag=IIF(v_policy_prev!=policy, IIF(Rider=0, 'valid','invalid'), v_validflag)
v_policy_prev=policy

然后过滤有效记录。


0
投票

有很多选择。这是两个...... 第一: 它看起来像:

                                      // AGGREGATOR \\ 
SOURCE >> SOURCE QUALIFIER >> SORTER <<              >> JOINER >> TARGET
                                      \\============//

将源限定符(SQ)中的所有端口连接到SORTER转换(或在SQ本身中排序),并为“策略”和“骑行者”定义排序键。之后将拆分流分成两个管道:

  1. - 将'Policy'和'Rider'连接到FILTER转换并按'Rider'= 0过滤记录。 - 将“政策”(仅)链接到AGGREGATOR并将“组合”设置为“政策”的“是”。 - 为“策略”端口添加具有FIRST或MAX功能的新端口。这是为了删除重复的“政策”。 - 在AGGREGATOR属性中指示“排序输入”。 - 将“AGR”中的“策略”链接到“端口”选项卡中的“主”之后。 2。 - 来自SORTER的第二个流,直接链接到上面的JOINER(带有聚合的'Policy')作为Detail。 - 在JOINER属性中指示“排序输入”。 - 在JOINER属性中将Join Type设置为'Normal Join'并将Join Condition设置为POLICY(master)= POLICY(detail)。

......目标

第二种选择: 只需覆盖源限定符中的SQL ...

WITH PLC as (        
select POLICY
from SRC_TBL
where RIDER=0)
select s.POLICY, s.RIDER, s.PLAN
from PLC p left JOIN SRC_TBL s on s.POLICY = p.POLICY;

可能会有所不同取决于您的源表结构...

© www.soinside.com 2019 - 2024. All rights reserved.