Apache NiFi: отображение внешнего файла для получения нового столбца - PullRequest
0 голосов
/ 28 октября 2019

Я следовал за ответом в этом вопросе переполнения стека . Но я не смог получить результат, который ожидаю получить. У меня есть пример CSV, который выглядит следующим образом:

id,name,city
12,Jimmy,Ontario
33,Kimmel,York

Каждый город имеет уникальный код, который я сохранил в другом CSV. Так выглядит мой CSV для отображения. (Я разделил два значения в строке, используя вкладку в реальном текстовом файле)

California   5435
Ontario   2342
York   3456

Окончательный вывод должен выглядеть примерно так:

id,name,city,code
12,Jimmy,Ontario,2342
33,Kimmel,York,3456

Этот CSV имеет многопоэтому больше данных нельзя заменить, используя ReplaceText Процессор. Так что это можно сделать только с помощью процессора * 1013.

Я выполнил точные шаги, использованные в качестве ответа в этом вопросе. Но похоже,Заменить TextwithMapping не работает должным образом. Так как новый столбец сделан успешно. Но он просто содержит то же содержание столбца города, а не кодов, которые я хочу.

Буду очень признателен, если вы сможете отправить ответ, которым я могу следовать, чтобы наконец добиться желаемого результата, используя ReplaceTextwithMapping Процессор

1 Ответ

2 голосов
/ 28 октября 2019

Я мог бы заставить его работать, используя LookupRecord . Общий поток выглядит следующим образом:

enter image description here

GenerateFlowFile:

enter image description here

LookupRecord:

enter image description here

Настройте CSVReader и CSVRecordSetWriter для обработки первой строки как строки заголовка. Для других свойств оставьте значения по умолчанию. Настроить CSVRecordLookupService:

enter image description here

Файл отображения имеет следующее содержимое:

city,code
Ontario,2342
California,5435

Процессор LookupRecord примет значение городаи найдите правильную запись из файла сопоставления. Он извлечет код и добавит поле к текущей записи. Результат:

enter image description here

Как видите, код был добавлен в файл CSV. Однако он заключен в объект, хотя я выбрал настройку Insert Record Fields. Я не мог решить эту проблему. Это может быть еще один вопрос, который нужно задать явно.

...