Использование ReplaceTextWithMapping . Общий поток:
![enter image description here](https://i.stack.imgur.com/1Mtq7.png)
GenerateFlowFile:
![enter image description here](https://i.stack.imgur.com/dGtpv.png)
UpdateRecord:
![enter image description here](https://i.stack.imgur.com/W7UHP.png)
Настройте 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](https://i.stack.imgur.com/alVq1.png)
Отображение содержимого файла:
1 1S
2 3S
3 4S
Значения разделены табуляцией. Регулярное выражение должно соответствовать последнему значению, за которым не следует запятая в каждой строке:
[0-9](?!,)
![Regular expression visualization](https://www.debuggex.com/i/V7e092JAX2ISmjP7.png)
Демонстрация отладки
Результат:
![enter image description here](https://i.stack.imgur.com/driXI.png)