Kettle - 按字段值过滤重复的行

时间:2014-12-19 08:47:24

标签: pentaho kettle

我有来自csv文件的单个输入流。该流来自用户表,其中用户可以用不同的ID复制。

我需要清理这个流。 [Name + Surname]的组合始终是唯一的,但我需要在选择之前进行比较,因为我想保留最新的信息并根据其他值的比较创建一个新字段。

我有一个用于选择行的时间戳。

这是输入流的示例: enter image description here

这是我想要的输出的一个例子: enter image description here 什么工具最适合这项任务?

提前致谢。

2 个答案:

答案 0 :(得分:2)

这应该可以在pentaho水壶中进行一些排序和分组。

  1. CSV-File输入您的表(确保TimeUpdated是日期格式)
  2. 排序步骤:按名称排序,姓氏,姓氏2,时间更新(作为:否)
  3. 按步骤分组:按名称分组,姓氏,姓氏2;聚合:id(第一个值),TimeUpdated(第一个值),Status(连接字符串分隔(值:+)

答案 1 :(得分:2)

您可以执行以下操作:

  1. 使用名为排序行的步骤按名称,Surename1,Surename2和TimeUpdate对行进行排序;
  2. 执行以下任一操作:
    • 一个名为唯一行的步骤,其中要在上进行比较的字段将说明您愿意使其唯一的字段;
    • 一个名为分组依据的步骤,其中组成该组的字段将说明您想要使这些字段唯一的字段,以及聚合会陈述所有其他领域。每个聚合旁边的类型下拉列表应根据您在步骤1中对数据进行排序的方式进行设置:
      • 如果您确定要保留的最重要的行(没有重复项)是具有最新数据的行,并且您按顺序对TimeUpdate进行了排序,请选择 Type =" Last value& #34;或"最后一个非空值"对于所有聚合物;
  3. 你应该注意的另一件事,但更通用的是 - 那里有一个名为 Memory Group by 的步骤,它可以节省分组前分拣的昂贵计算时间,但是只有当你能确保通过它的数据不会溢出内存,即小数据集时,步骤才是好的。