如何在ADF数据流中筛选包含FA1的逗号分隔列数据
ADF数据流筛选包含指定代码的行解决方案
针对你的场景,这里提供两种可靠的筛选方案,解决单个值或逗号分隔多值的匹配问题:
方案一:带边界匹配的contains函数
直接用contains会误匹配类似FA12的字符串,给目标字符串前后加上逗号,再匹配,FA1,就能精准定位:
contains(concat(',', Code, ','), ',FA1,')
- 单个值
FA1会被处理成,FA1,,能匹配到目标子串 - 多值
FA1,MD2处理成,FA1,MD2,,包含,FA1, - 多值
GH2,FA1处理成,GH2,FA1,,同样包含,FA1,
方案二:分割数组后匹配
把逗号分隔的字符串转成数组,再用数组包含判断,还能处理可能存在的空格问题:
如果Code列没有空格,直接用:
arrayContains(split(Code, ','), 'FA1')
如果Code列有空格(比如FA1, MD2),先去除每个元素的空格:
arrayContains(map(split(Code, ','), #item -> trim(#item)), 'FA1')
为什么之前的方法没成功?
in()函数是判断值是否属于给定的固定列表,不是判断字符串包含关系,所以不适用- 直接用
contains(Code, 'FA1')会误匹配FA12这类相似字符串 instr(Code, 'FA1')>0同样存在上述误匹配问题,且没处理边界情况
内容的提问来源于stack exchange,提问作者Nezko1
相关产品推荐
相关产品推荐

