Добавить столбец в CSV, используя предопределенный файл, используя Apache nifi - PullRequest
0 голосов
/ 25 октября 2019

Я получаю необработанный CSV-файл, который выглядит так1007 *

id,name,star,level
1,sachith,2,3S
2,nalaka,1,1S
3,abc,3,5S

Я использовал ReplaceTextWithMapping , но он заменяет все значения 1,2,3, включая столбец id.

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

Редактировать:

После ответа @ Upvote. My ReplaceTextWithMapping conf enter image description here

1 Ответ

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

Использование ReplaceTextWithMapping . Общий поток:

enter image description here

GenerateFlowFile:

enter image description here

UpdateRecord:

enter image description here

Настройте CSVReader для обработки первой строки в качестве заголовка. Оставьте другие свойства нетронутыми. Сконфигурируйте CSVRecordSetWrite для обработки первой строки как заголовка, схемы, получаемой из свойства текста схемы, и установите для текста схемы значение:

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

Обратите внимание, что он включает новый столбец. ReplaceTextWithMapping:

enter image description here

Отображение содержимого файла:

1   1S
2   3S
3   4S

Значения разделены табуляцией. Регулярное выражение должно соответствовать последнему значению, за которым не следует запятая в каждой строке:

[0-9](?!,)

Regular expression visualization

Демонстрация отладки

Результат:

enter image description here

...