Вы хотите направить записи на основе значений из одного столбца. Есть разные способы сделать это в NiFi. Я могу думать о следующем:
- Использование QueryRecord процессор для разделения записей по значениям столбцов
- Использование RouteOnContent процессор для маршрутизации с использованием регулярного выражения
- Использование ExecuteScript процессор для создания пользовательской логики маршрутизации
- Использование PartitionRecord процессор для маршрутизации на основе RecordPaths
Я покажу вам, как решить вашу проблему, используя PartitionRecord
процессор. Поскольку вы не предоставили никаких примеров данных, я создал пример варианта использования. Я хочу отличить города в Европе от городов в других местах. Даны следующие данные:
id,city,country
1,Berlin,Germany
2,Paris,France
3,New York,USA
4,Frankfurt,Germany
Поток:
![enter image description here](https://i.stack.imgur.com/tee2U.png)
GenerateFlowFile:
![enter image description here](https://i.stack.imgur.com/YN9Q6.png)
PartitionRecord:
![enter image description here](https://i.stack.imgur.com/yIk9B.png)
CSVReader
должен быть настроен на вывод схемы и CSVRecordSetWriter
для наследования схемы. PartitionRecord
сгруппирует записи по странам и передаст их вместе с атрибутом country
, который имеет значение страны. Вы увидите следующие группы записей:
id,city,country
1,Berlin,Germany
4,Frankfurt,Germany
id,city,country
2,Paris,France
id,city,country
3,New York,USA
Каждая группа является потоковым файлом и будет иметь атрибут страны, который вы будете использовать для маршрутизации групп.
RouteOnAttribute:
![enter image description here](https://i.stack.imgur.com/OTuAc.png)
Все страны Европы будут перенаправлены на отношения is_europe. Теперь вы можете применить ту же стратегию к вашему варианту использования.