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

如何在Azure Data Factory中提取API返回JSON指定字段值至Azure SQL DB

解决方法:从JSON数组提取value字段存入Azure SQL DB(无需修改目标端)

我刚好处理过类似的场景,给你几个可行的方案,都不需要修改目标Azure SQL DB的结构:

方法1:复制活动列映射用动态表达式直接解析

这是最简便的方式,在复制过程中直接处理字段:

  • 打开你的复制活动,切换到映射标签页
  • 找到返回JSON数组的源列,点击目标列对应的表达式编辑器(那个小铅笔图标)
  • 输入对应的表达式,比如你的源列名叫customField,就写:
    @json(item().customField)[0].value
    
    原理很简单:
    • json()把字符串格式的JSON转成可操作的对象
    • [0]因为你的JSON是数组结构,取第一个元素
    • .value直接提取目标字段的值
  • 如果担心JSON格式无效导致报错,可以加个容错:
    @try(json(item().customField)[0].value, '')
    

方法2:用Azure SQL的JSON函数做转换(适合有中间暂存的场景)

如果你的API数据可以先暂存到Azure SQL的临时表,或者能通过查询方式获取源数据,可以用SQL自带的JSON函数提取:
比如临时表staging_table里的json_column存着目标JSON数组,你可以写查询语句:

SELECT 
    -- 其他字段照常保留
    col1, col2,
    -- 提取value字段
    JSON_VALUE(json_column, '$[0].value') AS target_column
FROM staging_table

把这个查询作为复制活动的源,直接映射到目标列就行。

方法3:用数据流(Data Flow)做复杂转换

如果你的数据链路有更多复杂逻辑,用ADF/Synapse的数据流更灵活:

  • 添加源数据集连接你的API
  • 加一个派生列转换,要么替换原列,要么新建列,表达式写:
    json(源列名)[0].value
    
  • 把处理后的列映射到Azure SQL的目标列,运行数据流完成复制

如果你的JSON数组可能有多个元素,记得根据业务逻辑调整(比如遍历数组取所有value,或者取特定位置的元素)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:20:56