【问题标题】:How to do it in Informatica如何在 Informatica 中进行操作
【发布时间】:2021-04-23 09:19:12
【问题描述】:
Informatica 新手。
例如:这是一个平面文件到平面文件加载。
我有一个表达式计算了下面给出的样本的数据:
有些 CUST 有一个带有 N 标志的条目,有些有两个带有 N 和 Y 的条目。
我只需要将 1 和 N 或 2 和 Y 出现在目标表上,如下所述,请告诉我如何在 Informatica 中执行此操作。
来源
CUST-111|N|1
CUST-222|N|1
CUST-222|Y|2
CUST-333|N|1
CUST-444|N|1
CUST-555|N|1
CUST-555|Y|2
CUST-666|N|1
CUST-666|Y|2
目标:
CUST-111|N|1
CUST-222|Y|2
CUST-333|N|1
CUST-444|N|1
CUST-555|Y|2
CUST-666|Y|2
非常感谢大家
【问题讨论】:
标签:
informatica
informatica-powercenter
【解决方案1】:
您可以先计算客户数量。然后,如果 count = 1 且 flag = N,则将其传递给目标,否则如果 count > 1,则仅将 flag = Y 的记录传递给目标。
以下步骤-
- 按客户 ID (CID) 对数据进行排序
- 使用聚合器计算计数。
使用
CUST_ID 作为分组依据。创建一个新的输出端口
out_FLAG_CNT = COUNT(*)。
- 使用 joiner 连接第 2 步和第 1 步。加入条件是客户 ID。
- 然后使用具有以下条件的过滤器-
IIF (out_FLAG_CNT>1 AND FLAG='Y',TRUE, IIF( out_FLAG_CNT=1 AND FLAG='N', TRUE, FALSE))
- 最后将此数据链接到目标。
|-->Agg( count by CID)-|
SQ --> SRT (Sort by CID) -->|---------------------->|JNR (on CID) -->FIL (Cond above) --> Target
请注意,如果您有超过 1 个 N 或超过 1 个 Y 数据,则上述方法将不起作用,您需要在最后附加另一个聚合器。