Разделите JSON на два отдельных объекта JSON, используя Nifi - PullRequest
0 голосов
/ 22 мая 2018

У меня есть JSON как

{
    "campaign_key": 316,
    "client_key": 127,
    "cpn_mid_counter": "24",
    "cpn_name": "Bopal",
    "cpn_status": "Active",
    "clt_name": "Bopal Ventures",
    "clt_status": "Active"
}

Ожидаемый вывод

1-й JSON:

{
    "campaign_key": 316,
    "client_key": 127,
    "cpn_mid_counter": "24",
    "cpn_name": "Bopal",
    "cpn_status": "Active"
}

2-й JSON:

{
    "clt_name": "Bopal Ventures",
    "clt_status": "Active"
}

Как мне добиться этого с помощью NIFI?Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы можете сделать то, что сказал «пользователь».Не очень хорошая вещь в этом подходе заключается в том, что если количество полей увеличивается, то вам необходимо добавить столько атрибутов выражения JSON Path в EvaluateJsonPath и затем добавить столько атрибутов в ReplaceText.

Вместо того, что я предлагаю, используйте QueryRecord с Record Reader, установленным в JsonTreeReader, и Record Writer, установленным в JsonRecordSetWriter.И добавьте два свойства динамических отношений следующим образом:

json1 : SELECT campaign_key, client_key, cpn_mid_counter, cpn_name, cpn_status FROM FLOWFILE

json2 : SELECT clt_name, clt_status FROM FLOWFILE

Этот подход обеспечивает чтение и запись вывода в формате JSON.Кроме того, если вы хотите добавить больше полей, вам просто нужно добавить имя поля в операторе SQL SELECT.

Процессор QueryRecord позволяет выполнять SQL-запрос к содержимому FlowFile.Подробнее об этом процессоре можно узнать здесь

Прикрепленные скриншоты

enter image description here

enter image description here

0 голосов
/ 22 мая 2018

Karthik,

Используйте процессор EvaluateJsonPath для получения всех этих значений json, используя его ключи.

Пример: $.campaign_key для получения значения ключа кампании и $.clt_name для получения cltname.

Как и выше, вы можете получить все jsons.

Затем использовать ReplaceText Processor для преобразования одного json в два jsons.

{"Compaign_Key":${CompaignKey},...etc}
{"Clt_name":${clt_name}}

Он преобразует один json вдва jsons.

Надеюсь, что это полезно и дайте мне знать, если у вас есть проблемы.

...