Azure Data Factory复制活动中添加NAN转Null条件语句的问题
在ADF复制活动中处理NAN值并替换为Null的实现方案
方法一:复制活动映射内直接处理(适合简单场景)
- 打开复制活动的映射标签页,找到需要处理的目标列
- 点击目标列旁的表达式按钮(
fx图标),根据源数据的NAN类型写入判断表达式:- 若NAN是字符串形式(如
"NaN"):
替换iif(equals(sourceCol, 'NaN'), null(), sourceCol)sourceCol为实际的源列名(比如@school) - 若NAN是数值类型(需先转换数据类型):
比如处理iif(isNaN(toDouble(sourceCol)), null(), toDouble(sourceCol))@theatre列时,先转成数值再判断是否为NaN
- 若NAN是字符串形式(如
- 保存表达式后运行复制活动,即可将对应NAN值替换为Null写入SQL表
方法二:使用数据流活动(适合嵌套/复杂数据结构)
如果源数据是嵌套JSON(如你的示例中CurrentVal.col数组),推荐用数据流做扁平化+处理:
- 在管道中添加数据流活动,配置源数据集为HTTP API,设置JSON路径为
$[*].CurrentVal.col以展开嵌套数组 - 添加派生列转换,对每个需要处理的列设置表达式:
- 处理
@school列:iif(equals(@school, 'NaN'), null(), @school) - 处理
@theatre列:iif(isNaN(toDouble(@theatre)), null(), toDouble(@theatre))
- 处理
- 添加接收器数据集为目标SQL表,配置与原复制活动一致的写入规则(如更新模式)
- 运行管道完成数据处理与写入
注意事项
- 确保目标SQL表的对应列允许Null值,避免写入失败
- 若源数据中NAN以其他形式存在(如
"nan"、"N/A"),需调整表达式中的判断值 - 复制活动中处理嵌套JSON时,需先在源设置-分层标签页配置数组展开,才能直接映射列
内容的提问来源于stack exchange,提问作者Being Real
相关产品推荐
相关产品推荐

