You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory复制活动:SQL Server无法将nan转为null的解决方案求助

解决方案:处理JSON中的NaN值并导入SQL Server(无Azure IR/Dataflows)

针对你遇到的NaN值无法转为SQL Server可接受的double类型null的问题,给你几个可行的方案:

方案1:在ADF复制活动前添加派生列转换

在数据管道里,复制活动之前加一个派生列转换,针对每个需要处理的数值字段(比如@mom、@mos)写条件表达式,把NaN替换为null:

  • 打开派生列编辑器,选择captain.row数组里的目标字段
  • 对@mos字段,输入表达式:iif(isNaN(@mos), null(), @mos)
  • 同理处理@mom字段(统一处理可避免后续出现类似问题)
    这个表达式会自动识别NaN值,将其转为SQL Server兼容的null,其他正常数值保持不变。

方案2:用自定义活动(PowerShell)预处理数据

如果派生列满足不了需求,可以用PowerShell自定义活动先获取并清洗数据:

  1. 编写PowerShell脚本调用API获取JSON数据:
$apiUrl = "你的API地址"
$response = Invoke-RestMethod -Uri $apiUrl -Method Get
  1. 遍历数据中的每个captain.row条目,替换NaN为null:
foreach ($row in $response.captain.row) {
    if ([double]::IsNaN($row.'@mom')) {
        $row.'@mom' = $null
    }
    if ([double]::IsNaN($row.'@mos')) {
        $row.'@mos' = $null
    }
}
  1. 将处理后的JSON保存到临时存储(比如Blob存储),再用复制活动从临时存储导入SQL Server。

方案3:修改API返回值(若有权限)

如果能联系到API开发团队,直接要求他们把返回数据中的NaN替换为null,这样你之前设置的源数据集Null Value就能直接处理所有空值场景,无需额外转换步骤。

内容的提问来源于stack exchange,提问作者Being Real

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:10:28