Apache NiFi: добавить столбец в CSV, используя сопоставленные значения - PullRequest
1 голос
/ 25 октября 2019

CSV вводится в рабочий процесс NiFi с использованием процессора GetFile. У меня есть столбец, состоящий из «id». Каждый идентификатор означает определенную строку. Есть около 3 идентификаторов. Например, если мой CSV состоит из

name,age,id
John,10,Y
Jake,55,N
Finn,23,C

, я знаю, что Y означает Йорк, N означает Old, а C означает Cat. Я хочу новый столбец с заголовком с именем "ник" и иметь соответствующий ник для каждого идентификатора.

name,age,id,nick
John,10,Y,York
Jake,55,N,Old
Finn,23,C,Cat

Наконец, я хочу CSV с дополнительным столбцом и соответствующими данными для каждой записи . Как это возможно, используя Apache NiFi. Пожалуйста, посоветуйте мне процессоры, которые должны использоваться, и конфигурации, которые необходимо изменить, чтобы выполнить эту задачу.

1 Ответ

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

Поток:

  • добавление нового столбца ник
  • копирование идентификатора в столбец ник
  • просмотр каждой строки и сопоставление идентификатора с соответствующим значением
  • установить это значение в текущей строке в столбце ник

Это можно сделать с помощью ReplaceText или ReplaceTextWithMapping . Я делаю это с ReplaceText:

enter image description here

UpdateRecord проанализирует файл CSV, добавит новый столбец и скопирует значение идентификатора:

enter image description here

Создайте CSVReader и сохраните свойства по умолчанию. Создайте CSVRecordSetWriter и установите стратегию доступа к Схеме на Schema Text. Установите для свойства текста схемы значение

{
   "type":"record",
   "name":"foobar",
   "namespace":"my.example",
   "fields":[
      {
         "name":"name",
         "type":"string"
      },
      {
         "name":"age",
         "type":"int"
      },
      {
         "name":"id",
         "type":"string"
      },
      {
         "name":"nick",
         "type":"string"
      }
   ]
}

. Обратите внимание, что в нем есть новый столбец. Наконец, замените исходные значения отображением:

enter image description here

PS: я заметил, что вы новичок в SO, добро пожаловать! Вы не приняли ни одного ответа ни на один из своих предыдущих вопросов. Примите их, если они решат вашу проблему, так как это поможет другим найти решения.

...