Как изменить порядок столбцов CSV в Apache NiFi - PullRequest
0 голосов
/ 01 октября 2019

Изменение порядка столбцов в формате CSV в Apache NIFI.

Входные данные - У меня есть несколько файлов, которые имеют одинаковые столбцы, но в другом порядке.

Выходные данные - Очистить несколько столбцов и хранить в том же порядке.

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

В моем случае, поскольку я уверен, что эти столбцы будут включены во все файлы CSV, мне просто нужно изменить их порядок. Поэтому я использую QueryRecord, чтобы изменить порядок файлов CSV.

Например, вот мои csv-файлы:

\\file1
name, age, location, gender
Jack, 40, TW, M
Lisa, 30, CA, F 

\\file2
name, location, gender, age
Mary, JP, F, 25
Kate, DE, F, 23

Я хотел бы изменить порядок столбцов на location,name,gender,age, я установил новое свойство в QueryRecord с именем reorder_dataсо значением типа:

SELECT location,name,gender,age FROM FLOWFILE

Тогда данные в поточном файле станут такими:

\\file1 - reordered
location, name, gender, age
TW, Jack, M, 40
CA, Lisa, F, 30

\\file2 - reordered
location, name, gender, age
JP, Mary, F, 25
DE, Kate, F, 23

Таким образом, я могу получить переупорядоченный вывод данных из QueryRecordкак и исходные данные, это очень удобно.

Кстати, вы также можете использовать групповую переменную или атрибут, чтобы установить порядок столбцов для лучшего обслуживания:

//Group variable or attribute
column_order   location,name,gender,age

//Property in QueryRecord
reorder_data   SELECT ${column_order} FROM FLOWFILE
0 голосов
/ 03 октября 2019

Вы должны быть в состоянии сделать это с ConvertRecord, у вас будет схема для CSVRecordReader, совпадающая со столбцами (по порядку) ввода, а схема вывода для CSVRecordSetWriter будет иметь схему с выбранными столбцами вжелаемый порядок вывода. Я не пробовал это, но я верю, что так оно и есть.

...