如何解决用于属性循环的Nifi表达式语言
目前,我的流文件中大约有15个属性。在这15个值中,我只希望使用其中的几个(所有属性中都带有前缀“ error_”的属性。这些“ error_ *”属性可以具有2组值,八进位“有效”或某些错误代码,例如-“ 945'。现在,我想遍历所有带有前缀-'error_'的属性,如果其值是'valid',则不执行任何操作,如果其值包含一些错误代码,则将错误代码附加到以';分隔的字符串中; '。基本上,如果我有5个error_属性:
error_field1: '123'
error_field2: 'Valid'
error_field3: '567'
error_field4: 'Valid'
error_field5: '45'
我希望输出为-'123; 567; 45'。
由于我是Nifi的新手,请帮助我,我不确定如何使用这种复杂的EL。
解决方法
执行此操作有几种方法。
-
${anyMatchingAttribute('error_'):find('\\d+')}
您可以使用anyMatchingAttribute()
函数来评估多个属性的谓词,并使用正则表达式find()
方法来检查数字是否存在。这将为您提供布尔结果,但不会枚举并加入所有值。
-
${allMatchingAttributes('error_'):join(';'):replaceAll('Valid;','')}
如果您不需要召回错误代码并将其与产生错误的特定字段相关联,则只需将所有属性连接起来,然后使用正则表达式删除 { {1}}个值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。