如何在informatica中获取列的最大值?

如何在informatica中获取列的最大值?,informatica,Informatica,我是信息世界的新手 我的消息来源是这样的 emp_id|emp_name|emp_sal 1 | A | 2500 2 | C | 2800 3 | M | 2100 我希望目标是这样的 emp_id|emp_name|emp_sal|maximum_salary 1 | A | 2500 | 2800 2 | C | 2800 | 2800 3 | M | 210

我是信息世界的新手

我的消息来源是这样的

emp_id|emp_name|emp_sal
1     |  A     |   2500
2     |  C     |   2800
3     |  M     |   2100
我希望目标是这样的

emp_id|emp_name|emp_sal|maximum_salary
1     |    A   |  2500 |  2800
2     |    C   |  2800 |  2800
3     |    M   |  2100 |  2800
请帮帮我:)
谢谢

您可以使用聚合器转换。使用表达式MAX(emp_sal)在聚合器转换中创建输出端口。不要按端口选择任何组

现在,使用Joiner转换将聚合器的输出和原始源数据连接起来

此外,您还必须在聚合器之前使用分类器(键:emp_id),并在聚合器和Joiner中选择排序输入选项

SQ --> Sorter --> Aggregator -- Joiner --> Target
         |_________________________^

从性能的角度来看,我们需要使用最少数量的转换,并尽量减少阻塞转换,如Joiner、Aggregator

在这里,我们可以通过两种转换实现这一点

 SQ --> Sorter --> Expression --> Output
在分拣机中,分拣键为
emp\u sal
as
descending

表达式转换中的
Max Salary
表达式

Variable_Input1 - Variable_Input2
Input - emp_sal
Variable_Input2 - (IIF(Input > Variable_Input1, Input, Variable_Input1))
Output - Variable_Input2
注意:变量\u Input1和变量\u Input2的数据类型为整数


希望这会有所帮助。

请完成以下步骤

SQ-->分类器-->表达式-->Tgt

在分拣机t/r中,分拣键为emp_sal,如下行

表达式转换中的最大薪资表达式

Variable_Input1 - Variable_Input2
Input - emp_sal
Variable_Input2 - (IIF(Input > Variable_Input1, Input, Variable_Input1))
Output - Variable_Input2
v_端口1(整数)-v_端口2 v_端口2(整数)-IIF(emp_sal>v_端口1,emp_sal,v_端口1) o_端口-v_端口2

输出是这样来的

emp|u id | emp|u name | emp|u sal |最高工资 1 | A | 2500 | 2800 2 | C | 2800 | 2800 3米2100米2800米

这对我有用


请检查并让我知道。

欢迎来到Stack Overflow!你没有告诉我们你到目前为止做了什么,如果它不起作用。我们是志愿者。我们将帮助您修复代码,但没有人会为您编写整个程序。如果我不使用组,它将以3 | M | 2100 | 2800(仅最后一行)的形式出现。。如果我不使用组作为1 | A | 2500 | 2500 | 2 | C | 2800 | 2800 3 | M | 2100 | 2100 | 2100,这就是为什么你需要细木工!您不能仅通过使用聚合器来实现这一点。