Как отфильтровать вложения электронной почты csv через RouteonAttributes по имени вложения? - PullRequest
0 голосов
/ 05 июля 2019

Я хочу отфильтровать вложения электронной почты csv, извлеченные из gmail через ConsumeIMAP по имени файла.У меня возникли проблемы с тем, какой синтаксис использовать при настройке RouteonAttributes процессора.

Мне удалось извлечь файл CSV из Gmail, настроив атрибуты RouteonAttributes для

fetchcsv | ${filename:contains('.csv')}

, но когда япопробуйте указать имя файла

"${filename:contains('Threat_-_SQL_Injection_-_Rule*')}"

, оно всегда направляется на несопоставленное.Имя файла Threat_-_SQL_Injection_-_Rule-2019-06-29.Дата, следующая за "Rule-", также будет постоянно меняться в зависимости от даты ее отправки.Мне также нужно было бы написать маршрут к имени свойства для файла "Threat_-_Vulnerability_Scanner_-_Rule-2019-06-28".Буду признателен за любую помощь в настройке.

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Вы можете использовать startsWith вместо contains как -

 ${filename:startsWith('Threat_-_SQL_Injection_-_Rule')}

enter image description here

Это будет соответствовать для любого файла, начинающегося с "Угроза _-_ SQL_Injection _-_ Правило "строка.Это означает, что часть даты в вашем файле может быть разной. Для получения более подробной информации см. Руководство по языку выражений Apache Nifi

0 голосов
/ 09 июля 2019

Более простым решением было бы использовать

"${filename:contains('Threat_-_SQL_Injection_-_Rule*')}"

как вы делали ранее, но отбросьте "*"

"${filename:contains('Threat_-_SQL_Injection_-_Rule')}"
...