Обновите значения в поле внутри CSV с помощью NiFi - PullRequest
0 голосов
/ 12 января 2019

Я хочу добиться простого варианта использования для обновления нескольких строковых / текстовых значений до целочисленного значения в поле внутри CSV с использованием NiFi. Например, мой CSV-файл выглядит так:

Входной файл CSV:

Поле_1, Поле_2

Америка, яблоко

Америка, яблоко

Индия, виноград

Китай-город, Оранжевый

Австралийская нация, Персик

Индия, виноград

China Town, Orange

Итак, я хочу, чтобы выходной CSV был таким:

Входной файл CSV:

Поле_1, Поле_2

1, яблоко

1, яблоко

4, виноград

3, оранжевый

2, персик

4, виноград

3, оранжевый

Я хочу, чтобы вся Америка в Field_1 была обновлена ​​до 1, а Австралийская нация - до 2, а Китай - до 3 и т. Д. Я смог обновить только одно значение, используя Процессор UpdateRecord , используя Стратегия замены значения как " Literal replace ". Пожалуйста, смотрите прикрепленную картинку ниже:

UpdateRecord Processor

Но я не могу обновить оставшиеся значения, такие как Китай, Индия и т. Д. В Field_1. Я знаю, что могу добиться репликации нескольких процессоров UpdateRecord для достижения этой цели, но я хочу добиться этого варианта использования только с одним процессором. Как я могу сделать это, используя один процессор? Если да, то какую настройку установить в NiFi для достижения этой цели? Заранее спасибо. Буду признателен за любую оказанную помощь.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Использовать QueryRecord процессор (используя Sql, как в случае оператора)

(или)

LookupRecord процессор путем определения SimpleKeyValueLookupService

См. это и это ссылки для похожих вопросов.

0 голосов
/ 12 января 2019

Процессор ReplaceTextWithMapping может выполнить эту операцию. Он читает файл «поиска», который содержит сопоставления значений и выполняет построчную замену. Вот связанный ответ , который имеет примерные значения конфигурации. Он не «ориентирован на запись», но должен работать для сценария, который вы описываете.

...