用于属性循环的 Nifi 表达式语言
Nifi expression language for loops over attributes
目前我的流文件中有大约 15 个属性。在这 15 个中,我只想要几个(所有具有前缀 'error_' 的属性。这些 'error_*' 属性可以有 2 组值,八个 'valid' 或一些错误代码,比如 - '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()
function to evaluate a predicate against multiple attributes, and use the regular expression find()
方法检查数字是否存在。这会给你一个布尔结果,但不会枚举和连接所有值。
${allMatchingAttributes('error_'):join(';'):replaceAll('Valid;', '')}
如果您不需要回忆错误代码并将其与它们来源的特定字段相关联,您可以简单地连接所有属性,然后使用正则表达式 删除 Valid
值。
目前我的流文件中有大约 15 个属性。在这 15 个中,我只想要几个(所有具有前缀 'error_' 的属性。这些 'error_*' 属性可以有 2 组值,八个 'valid' 或一些错误代码,比如 - '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()
function to evaluate a predicate against multiple attributes, and use the regular expression find()
方法检查数字是否存在。这会给你一个布尔结果,但不会枚举和连接所有值。
${allMatchingAttributes('error_'):join(';'):replaceAll('Valid;', '')}
如果您不需要回忆错误代码并将其与它们来源的特定字段相关联,您可以简单地连接所有属性,然后使用正则表达式 删除 Valid
值。