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

如何通过ADF复制活动将JSON对象键映射到Azure SQL列

解决Azure Data Factory复制活动无法映射JSON外层键的问题

针对你遇到的API返回JSON外层动态键无法映射到SQL列的问题,最直接的解决方案是使用ADF的数据流动(Data Flow)转换JSON结构,将外层键提取为独立列后再写入SQL表。具体步骤如下:

1. 创建数据流动并配置源数据集

  • 新建数据流动,添加源数据集:选择你的API作为数据源,JSON格式设置保持默认的"Single document"即可(适配API返回的单个JSON对象)。
  • 在源的「投影」设置中,保留根对象的默认投影(即读取整个JSON对象)。

2. 派生列转换:将外层键值对转为数组

添加派生列转换,创建新列(比如命名为key_value_array),使用ADF表达式将根对象转换为包含键值对的数组:

mapKeysValues($)

该表达式会把原JSON转换为如下结构的数组:

[
  {"key": "fdgdhgfh", "value": {"so2_production": "7hjhgj953", ...}},
  {"key": "9fsdsfb", "value": {"so2_production": "asdasd", ...}}
]

3. 展开转换:将数组拆分为多行

添加**展开(Flatten)**转换,选择key_value_array作为「展开的数组列」,展开后数组中的每个元素会转为单独一行,每行包含key(原外层键)和value(原内层属性对象)两个列。

4. 提取内层属性字段

两种方式提取value中的属性:

  • 方式一:二次展开转换:选择value列作为「展开的结构列」,直接将so2_production、battery_charge等内层属性拆分为独立列。
  • 方式二:派生列转换:逐个创建新列,例如so2_production = value.so2_production、battery_charge = value.battery_charge,以此类推。

5. 配置接收器数据集并映射列

添加接收器数据集:选择你的Azure SQL表,在「映射」设置中,将key列映射到SQL表存储外层键的列(比如device_id),其他提取出的属性列对应映射到SQL的目标列。

6. 管道中执行数据流动

回到ADF管道,添加执行数据流动活动,选择创建好的数据流动,运行管道即可得到预期的SQL表结果:

device_idso2_productionbattery_chargebattery_dischargecritical_load_energy
fdgdhgfh7hjhgj953jkjlkjkjlklj4ljljh4
9fsdsfbasdasdsdaasfewewrwerbmvkbjk

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:51:36