使用NiFi处理器对csv数据进行分组

时间:2017-03-17 10:32:14

标签: csv apache-nifi

我有一组4个圆柱形csv数据,其中记录对于5行的第一列具有相同的值。然后,对于接下来的5行的第一列,值再次保持相同,依此类推。

示例数据:

a,21,51,xxx
a,22,52,xxx
a,23,53,xxx
a,24,54,xxx
a,25,55,xxx
b,21,61,yyy
b,22,62,yyy
b,23,63,yyy
b,24,64,yyy
b,25,65,yyy
...........

但有时候这些记录是随意的:

a,21,51,xxx
a,22,52,xxx
a,23,53,xxx
b,21,61,yyy
b,22,62,yyy
a,24,54,xxx
a,25,55,xxx
b,23,63,yyy
b,24,64,yyy
b,25,65,yyy
...........

有没有办法根据第一列使用NiFi处理器对这些数据进行分组?

任何答案都会有所帮助。

由于

1 个答案:

答案 0 :(得分:3)

您应该可以使用Grouping正则表达式对RouteText处理器执行此操作,该表达式表示:

  

“指定要对每行进行评估的正则表达式   确定该行应放入哪个组。常规   表达式必须至少有一个捕获组来定义   line的集团。如果常规中存在多个捕获组   表达,来自所有捕获组的小组。两条线不会   放入相同的FlowFile,除非它们都具有相同的值   对于组(或两个行都不匹配正则表达式)。对于   例如,将CSV文件中的所有行组合在一起   我们可以将此值设置为“(。?),. ”。两条线都有   同一组但不同的关系永远不会被放入   相同的FlowFile。“

我认为你可以将它与匹配正则表达式匹配策略结合使用,只需使用。*表示每个行匹配。

然后对于分组表达式,使用上面的示例按第一列分组(。?),.