如何通过RouteonAttributes按附件名称过滤csv电子邮件附件?

时间:2019-07-05 18:01:00

标签: apache-nifi

我想过滤通过ConsumeIMAP从gmail中提取的csv电子邮件附件的文件名。我在配置RouteonAttributes处理器时遇到什么语法上的麻烦。

通过将RouteonAttributes配置为

,我能够从gmail中提取csv文件
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 个答案:

答案 0 :(得分:1)

您可以将startsWith代替contains用作-

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

enter image description here

这将与任何以“ Threat _-_ SQL_Injection _-_ Rule”字符串开头的文件匹配。这意味着文件上的日期部分可能会有所不同。有关更多详细信息,请参考Apache Nifi Expression Language guide

答案 1 :(得分:0)

一个更简单的解决方案是使用

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

就像您之前所做的一样,但是放下“ *”

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