NiFi Как получить обновленное значение JSON в процессоре UpdateAttribute? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть следующий рабочий процесс:

ConsumeKafkaData-> EvaluateJsonFlow-> UpdateRecord-> Putfile.

У меня следующее простое сообщение JSON: {"name": "Yeshwant", "active": false}

В EvaluateJsonPath я создал один атрибут" name "в конфигурации, который связан с атрибутом" name "из вышеуказанных данных json.

В процессоре UpdateAttribute я создал одно правило, котороекогда значение "name" равно "dummy", то изменяется на "funny"Я могу изменить значение атрибута «имя» на значение «смешно».Но входные и выходные данные JSON не изменились.Зачем?Как UpdateAttribute изменяет данные в JSON напрямую?есть какая-то конфигурация, которую я пропускаю?

Даже на процессоре PutFile я не вижу изменения данных json.

Спасибо, Йешвант

1 Ответ

0 голосов
/ 10 декабря 2018

В существующем потоке вы изменяете значение attribute associated to the flowfile, а не фактическое содержимое файла потока.

После UpdateAttribute использование процессора АтрибутыToJson обрабатывают и воссоздают ваш вывод JSON содержимое.

Поток:

1. ConsumeKafkaData
2. EvaluateJsonFlow //Extract all json data attributes as flowfile attributes
3. UpdateAttribute 
4. AttributeToJSON //AttributesList -> name,active; Destination -> flowfile Content
5. Putfile

Для получения более подробной информации/ использование процессора AttributesToJSON относится к этой ссылке.

Кроме того, для этого случая вы можете использовать процессоры, ориентированные на запись, то есть процессор UpdateRecord/QueryRecordзатем используйте стратегию LiteralValue и используйте Expression language if-else для значения атрибута name.

В случае, если выиспользуя QueryRecord processor, затем запишите оператор case в вашем sql-запросе.

Для получения дополнительной информации / использования процессора updateRecord см. эту ссылку.

См. this ссылка для более подробной информации / использования процессора QueryRecord.

...