3

我正在使用 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

我想要的是为每一行添加一个额外的字段Max date,其中 max date 是基于描述的组的最新日期,如下所示:

示例 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 行)。

4

3 回答 3

1

这是行非规范化步骤的完美工作:

http://wiki.pentaho.com/display/EAI/Row+denormaliser

于 2013-05-20T19:39:16.860 回答
1

实际上更容易将数据拆分为两个流(复制到连续步骤)使用流 1 使用 Group Step 并将组基于描述并设置为聚合最大值以查找每个组的最大日期(应该导致两个根据您的示例输出行)。

description A - 15/JAN/2013
description B - 16/JAN/2013

接下来,您为流 2 使用流查找步骤从组步骤中查找 max_date 聚合 - 流 1 使用描述字段作为关键字段,并使用 max_date 聚合作为要检索的值。

请记住,当您使用分组步骤时,有必要对您的数据进行相应的排序。

于 2013-07-16T12:17:34.717 回答
0

您可以使用Max数组公式来完成此操作。

因此,假设您在工作表的 A 到 C 列中有原始数据,在 cell 中D1,您将键入:

=MAX(--($B$1:$B$4=B1)*($C$1:$C$4))

然后,要使其成为数组公式,请按CTRL + SHIFT + ENTER

当然,更改列 B 和 C 的范围以匹配您的数据集。

希望这会有所帮助并且有意义。

于 2013-05-20T19:39:23.393 回答