我正在使用Kettle阅读excel表,这张表有三个字段:代码,描述和日期。
示例:
1 - description A - 01/JAN/2013
2 - description A - 15/JAN/2013
3 - description A - 04/JAN/2013
4 - description B - 02/JAN/2013
5 - description B - 16/JAN/2013
6 - description B - 11/JAN/2013
我想要的是为每一行添加一个额外的字段最大日期,其中最大日期是基于描述的组的最新日期,如下所示:
示例2
1 - description A - 01/JAN/2013 - 15/JAN/2013
2 - description A - 15/JAN/2013 - 15/JAN/2013
3 - description A - 04/JAN/2013 - 15/JAN/2013
4 - description B - 02/JAN/2013 - 16/JAN/2013
5 - description B - 16/JAN/2013 - 16/JAN/2013
6 - description B - 11/JAN/2013 - 16/JAN/2013
描述A 的行组最新日期为15 / JAN / 2013(因为第2行)。 描述B 的行组最新日期为16 / JAN / 2013(因为第5行)。
答案 0 :(得分:1)
这是行反规范化步骤的完美工作:
答案 1 :(得分:1)
将数据拆分为两个流(复制到连续步骤)实际上更容易使用Group Step使用流1并将该组基于描述并设置为聚合最大值以查找每个组的最大日期(应该根据您的示例生成两个输出行。
description A - 15/JAN/2013
description B - 16/JAN/2013
接下来,您将使用流2查找流查找步骤以从组步骤 - 流1中查找max_date聚合,将描述字段用作关键字段,并使用max_date聚合作为要检索的值。
请记住,当您使用组步骤时,必须相应地对数据进行排序。
答案 2 :(得分:0)
您可以使用Max
作为数组公式来完成此操作。
因此,假设您的工作表中的原始数据位于工作表中的A列到C中,请在单元格D1
中输入:
=MAX(--($B$1:$B$4=B1)*($C$1:$C$4))
然后,为了使它成为一个数组公式,你点击 CTRL + SHIFT + ENTER
当然,改变B列和B列的范围。 C以匹配您的数据集。
希望这有帮助并且有意义。