我有一组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处理器对这些数据进行分组?
任何答案都会有所帮助。
由于
答案 0 :(得分:3)
您应该可以使用Grouping正则表达式对RouteText处理器执行此操作,该表达式表示:
“指定要对每行进行评估的正则表达式 确定该行应放入哪个组。常规 表达式必须至少有一个捕获组来定义 line的集团。如果常规中存在多个捕获组 表达,来自所有捕获组的小组。两条线不会 放入相同的FlowFile,除非它们都具有相同的值 对于组(或两个行都不匹配正则表达式)。对于 例如,将CSV文件中的所有行组合在一起 我们可以将此值设置为“(。?),. ”。两条线都有 同一组但不同的关系永远不会被放入 相同的FlowFile。“
我认为你可以将它与匹配正则表达式匹配策略结合使用,只需使用。*表示每个行匹配。
然后对于分组表达式,使用上面的示例按第一列分组(。?),.