用于属性循环的Nifi表达式语言

时间:2020-08-31 14:13:33

标签: apache-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。

1 个答案:

答案 0 :(得分:2)

执行此操作有几种方法。

  1. ${anyMatchingAttribute('error_'):find('\\d+')}

您可以使用anyMatchingAttribute()函数来评估多个属性的谓词,并使用正则表达式find()方法来检查数字是否存在。这将为您提供布尔结果,但不会枚举并加入所有值。

  1. ${allMatchingAttributes('error_'):join(';'):replaceAll('Valid;', '')}

如果您不需要召回错误代码并将其与产生错误的特定字段相关联,则只需将所有属性连接起来,然后使用正则表达式删除 { {1}}个值。

相关问题