Apache Nifi преобразование с процессором JoltTranform - PullRequest
0 голосов
/ 09 октября 2018

У меня есть некоторые атрибуты myId, count.Теперь с этими атрибутами я хочу записать формат Jolt, чтобы получить следующий вывод.

{
  "projectId": "projectId",
  "ticketId": "NO_TICKET",
  "trigger": "SCHEDULED_BACKLOG",
  "timestamp": 1539060316494,
  "pivotVersion": 1,
  "pivotType": "FlattenedTodoStats",
  "todoCount": "todoCount",
  "pivots": [
    {
      "state": "BACKLOG",
      "type": "NA"
    }
  ]
}

1 Ответ

0 голосов
/ 09 октября 2018

Для этого случая вы можете использовать Jolt Transform (или) ReplaceText .

Поскольку у вас есть некоторые атрибуты для потокового файла, используйте процессор ReplaceText enter image description here

В ReplaceMent Value настройте как

{
    "projectId": "${projectId}",
    "ticketId": "${ticketId}",
    "trigger": "${trigger}",
    "timestamp": "${timestamp}",
    "pivotVersion":"${pivotVersion}",
    "pivotType":"${pivotType}",
    "todoCount":"${todoCount}",
    "pivots[]": {
      "*": {
        "state": "${state}",
        "type": "${type}"
      }
    }
}

Замените все имена атрибутов ($ {projectId} .. и т. Д.) Именами ваших атрибутов .

Используйте Стратегия замены как AlwaysReplace

(или)

Если вы хотите использовать Jolt для этого случаязатем

Использование операции по умолчанию для замены значений атрибута и подготовки json message

Пример:

enter image description here Спецификация смещения

[{ "operation": "shift", "spec": { "z":"z" } }, { "operation": "default", "spec": { "projectId": "${projectId}", "ticketId": "${ticketId}", "trigger": "${trigger}", "timestamp": "${timestamp}", "pivotVersion":"${pivotVersion}", "pivotType":"${pivotType}", "todoCount":"${todoCount}", "pivots[]": { "*": { "state": "${state}", "type": "${type}" } } } }]

Поскольку у меня нет значений атрибутов, мой вывод json имеетвсе пустые значения в нем.

Измените spec jolt spec в соответствии с вашими требованиями.

...