获取Informatica中源表中列的最大值

时间:2014-11-14 21:00:52

标签: etl informatica informatica-powercenter

我的下表中包含所显示的数据:

send_date  |  household_ID
-------------------------
11-20-2014 | 123
11-20-2014 | 456
11-15-2014 | 789 

我需要做两件事:

1)计算send_date的最大值

2)过滤掉send_date与该值不匹配的任何行

换句话说,我希望输出为:

send_date  |  household_ID
-------------------------
11-20-2014 | 123
11-20-2014 | 456

第3行应该被过滤掉,因为它的send_date不是最大值

我尝试创建聚合,按所有列分组,并创建一个名为MAX_DATE的新输出端口,其表达式为MAX(SEND_DATE),然后进行条件为MAX_DATE = SEND_DATE <的过滤器转换/ p>

但是,这可以让所有行都通过。我能做些什么才能做到这一点......

3 个答案:

答案 0 :(得分:1)

  • 对同一源表使用两个源限定符,或者 - 更好的是 - 保留单个SQ但将数据拆分为两个管道(有关详细信息,请参阅下面的注释)。
  • 使用第一个值和聚合器计算MAX_DATE值。
  • 然后从SEND_DATE列的第二个源限定符中加入数据。

答案 1 :(得分:1)

我认为,解决问题的最简单方法是使用RANK转换。 优点:   - SQ没有分裂   - 聚合后没有连接   - 简单:) 转型排名上/下(根据您的配置;您需要选择&#34; Top&#34;) 因此,它将通过整行,然后最大的send_date值将被排名为1。 下一步是过滤排名大于1的所有行。

答案 2 :(得分:-1)

你确定这不是你想要的吗?

SELECT * FROM `table` WHERE `send_date` <> (SELECT MAX(`send_date`) FROM `table`)

或者,如果我误解了你,那么:

SELECT * FROM `table` WHERE `send_date` = (SELECT MAX(`send_date`) FROM `table`)