Informatica问题 - 转型

时间:2012-02-20 12:51:27

标签: informatica-powercenter informatica

我想知道如何通过Informatica获取最新的更新记录。假设我在临时表中有10条记录。 Account1的3条记录,Account2的3条记录和Account3的4条记录。现在,在这3个帐户中,我只需要获取具有最大日期值(最新日期)的记录并插入另一个临时表中。那么我可以使用哪些转换来获得这个或信息逻辑我应该使用?请帮忙。

3 个答案:

答案 0 :(得分:1)

  1. 如果Date列来自具有唯一日期的输入,则基于该列使用聚合器转换并获取最大日期。
  2. 如果没有日期列,请分配系统时间戳,但不能从此获取最大日期。你必须采用其他逻辑,如rowid和rownum功能。

答案 1 :(得分:0)

如果源是DB,我们可以在SQ本身中执行 - 通过按pk字段分组来编写临时表,并选择此pk字段和max(日期)。然后根据pk和date将此输出与原始源连接。 例如:

select * from src_table
join ( select pk,max(date) as maxdate from src_table ) aggr_table
on src_table.pk=aggr_table.pk
and src_table.date=aggr_table.maxdate

同样可以使用聚合器和连接器在informatica内部实现。但由于聚合器源是sq并且它的输出再次与sq连接,因此聚合器和连接器之间将需要一个分类器。

答案 2 :(得分:0)

您可以使用聚合器转换。您可以先使用排序器转换,然后根据帐户和日期asc进行排序。之后,您可以进行聚合器转换(基于帐户进行分组)。您不需要添加任何条件或分组功能,因为聚合器将给出每个组的最后记录。