Azure Data Factory数据流中检查数组是否包含列值的问题
Azure Data Factory Data Flow 中数组包含值检查报错的解决办法
在ADF数据流里用contains([array], [job])报错,大概率是以下几个原因,对应解决方式如下:
数据类型不匹配
contains函数要求数组元素的类型和待匹配值的类型完全一致。比如你的array列是字符串数组,但job列是数值类型,或者反过来,都会触发报错。解决时要统一两者类型:- 如果
job是数值、array元素是字符串:contains([array], toString([job])) - 如果
job是字符串、array元素是数值:contains([array], toInteger([job]))(根据实际数值类型选toLong/toDecimal等)
- 如果
数组列存在空值或非数组数据
如果array列里有null值,或者某些行的array不是数组类型(比如存储成了字符串),contains函数会直接报错。可以先做有效性判断再执行检查:iif(isArray([array]) && !isNull([array]) && !isNull([job]), contains([array], [job]), false)这个表达式会先判断数组有效、两列都不为空,再执行包含检查,否则返回false,避免报错。
列名的关键字冲突
如果你的列名正好是ADF的关键字(比如array本身就是关键字),用方括号引用可能会有解析问题,换成反引号包裹列名试试:contains(`array`, `job`)
先按上述几点排查,优先检查数据类型和空值情况,这是最常见的报错原因。
内容的提问来源于stack exchange,提问作者PleaseHelp
相关产品推荐
相关产品推荐

