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

Azure Data Factory将JSON中多同类型对象转SQL行

在Azure Data Factory中将嵌套JSON对象转换为数据库行数据

给定的JSON数据中,reports字段包含多个以位置名称为键的同结构对象,需要将每个对象转换为数据库中的一行结构化数据。以下是具体实现步骤:

方法一:使用管道中的Flatten活动

  1. 配置数据源

    • 创建数据源连接(如Azure Blob存储、HTTP等),读取目标JSON文件。确保JSON的根节点设置正确,能识别到reports字段。
  2. 添加Flatten活动

    • 在ADF管道中添加Flatten活动,将其与数据源连接。
    • 在Flatten活动的设置选项卡中:
      • 选择reports作为要展开的层级,ADF会自动识别该字段下的所有键值对对象。
      • 设置展开规则为展开每个子对象,将对象内的location_id、date、h19至h23、peak_hour、total、location_name等字段转换为扁平化的列。
  3. 配置数据目标

    • 添加数据库Sink活动(如Azure SQL Database、SQL Server等),将Flatten活动的输出连接到Sink。
    • 完成字段映射,确保每个扁平化列与目标数据库表的列类型匹配(例如date对应DATE类型,数字字段对应INT类型)。

方法二:使用Data Flow(更灵活的复杂转换)

  1. 创建Data Flow

    • 添加Source组件,连接到JSON数据源,设置JSON的根路径为$reports。
  2. 转换为数组结构

    • 添加Derived Column组件,使用表达式mapObjectToArray(reports)生成一个新数组列(例如命名为reportsArray)。该表达式会将reports中的键值对转换为包含key(位置名称)和value(对象内容)的数组元素。
  3. 展开数组

    • 添加Flatten组件,选择reportsArray作为要展开的数组列,将数组中的每个元素转换为单独的行。
  4. 提取对象字段

    • 添加Derived Column组件,从展开后的value对象中提取所需字段,例如:
      • location_id = value.location_id
      • date = value.date
      • 依次提取h19至h23、peak_hour、total、location_name等字段。
  5. 写入数据库

    • 添加Sink组件,连接到目标数据库,完成字段映射后将数据写入指定表。

内容的提问来源于stack exchange,提问作者Md. Yeasin Arafat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:12:30