2017-03-17 49 views
3

我有一組4列的csv數據,其中第一列的記錄具有相同的5行值。然後,對於接下來的5行的第一列,值再次保持相同,依此類推。使用NiFi處理器對csv數據進行分組

的樣本數據:

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

你想要組的行如果行的第一列這是你的用例吧? –

+0

是的這是我的用例 –

回答

3

你應該能夠使用分組正則表達式RouteText處理器,它說,要做到這一點:

「正則表達式,以評估對每一行 確定哪個組該行應該被放入。常規 表達式必須至少有一個捕獲組,用於定義 行的組。如果常規 表達式中存在多個捕獲組,則所有捕獲組中的組不會有兩行放置在相同的FlowFile中,除非它們都具有相同的值 (或兩行都不匹配正則表達式)。例如,要將第一個 列中的CSV文件中的所有行組合到一起,我們可以將此值設置爲「(。?),。」。這有 同一集團,但不同的關係兩條線將永遠不會被放置到 相同FlowFile。」

我想你可以使用結合的匹配正則表達式,只需使用一個匹配策略。*爲該表達式以便每行匹配。

然後,對於分組表達式由所述第一列中使用上面的例子中,以組(?),.

+0

我使用了上述解決方案,但幾乎沒有變化。對於我使用的分組表達式:(。*?),。* –

+0

非常感謝您的及時幫助。 –