在我的flowfile中,我需要验证列内容是否包含一定数量的字符串。如果没有,我会将其替换为文本。为了实现这一点,我使用了UpdateRecord处理器:
Record Reader : CSV
Record Writter : CSV
Replacement Value strategy : Literal Values
/my_column : ${field.value:replaceAll('[a-z]+|[a-z]+','Wrong')
:replaceAll(${field.value:length():le(8)},'Undefined')}我还使用了:replaceAll(${field.value:count():le(8)},'Undefined')
但它们都没有像预期的那样工作。它不会用Undefined替换错误数量的字符串
输入:
id,name,my_column
1,sachith,9403039409445
2,nalaka,rwed222
3,muhandiram,45544期望值:
id,name,my_column
1,sachith,9403039409445
2,nalaka,Wrong
3,muhandiram,UndefinedPS :在first comment后面添加了示例输入和输出。
发布于 2020-01-01 13:11:20
这将会起作用。在您的表达式中,没有条件表达式。
/my_column ${field.value:find('[a-z]+')
:ifElse(
${field.value:replace(${field.value},'Wrong')},
${field.value:length():le(8)
:ifElse(
${field.value:replace(${field.value},'Undefined')},
${field.value}
)})}https://stackoverflow.com/questions/59525528
复制相似问题