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

如何在ADF中将特定结构JSON文件加载到Azure SQL表?

Azure Data Factory 处理嵌套JSON到SQL表的解决方案

步骤1:配置JSON源数据集

  • 在数据流中添加源组件,选择你的JSON文件。在JSON设置里,将文档形式设为单文档,确保能完整读取整个JSON结构。

步骤2:拆分分支分别处理Status和TimePeriod

添加分支转换,将数据流拆为两个独立分支,分别处理Status和TimePeriod的键值对:

处理Status分支

  1. 添加逆透视转换:
    • 选中Status下的所有子列(0、1、2)作为要取消透视的列
    • 设置逆透视键列名为Status_Code,逆透视值列名为Status_Name
    • 处理后会生成3行数据,每行对应一组状态编码与状态名称

处理TimePeriod分支

  1. 添加逆透视转换:
    • 选中TimePeriod下的所有子列(Year、Quarter、Month、Week、Day)作为要取消透视的列
    • 设置逆透视键列名为Time_Type,逆透视值列名为Time_Value
    • 处理后会生成5行数据,每行对应一组时间周期类型与值

步骤3:关联两个分支生成完整数据集

因为目标表需要每行同时包含状态与时间周期信息,需将两个分支做笛卡尔积关联:

  • 在其中一个分支(比如Status分支)添加查找转换,选择另一个分支(TimePeriod分支)作为查找源,不设置任何关联条件,即可生成所有状态与时间周期的组合数据

步骤4:映射到目标SQL表

  • 添加接收器转换,选择你的Azure SQL数据库表
  • 在映射标签中,将数据流中的Status_Code、Status_Name、Time_Type、Time_Value列对应到目标表的对应列即可

替代方案:用派生列+展开转换简化流程

如果不想拆分分支,也可以直接用数组转换+展开的方式:

  1. 添加派生列,将Status转为结构体数组:
    array(
        struct('0' as Status_Code, Status.0 as Status_Name),
        struct('1' as Status_Code, Status.1 as Status_Name),
        struct('2' as Status_Code, Status.2 as Status_Name)
    ) as Status_Array
    
    同样处理TimePeriod:
    array(
        struct('Year' as Time_Type, TimePeriod.Year as Time_Value),
        struct('Quarter' as Time_Type, TimePeriod.Quarter as Time_Value),
        struct('Month' as Time_Type, TimePeriod.Month as Time_Value),
        struct('Week' as Time_Type, TimePeriod.Week as Time_Value),
        struct('Day' as Time_Type, TimePeriod.Day as Time_Value)
    ) as TimePeriod_Array
    
  2. 先添加展开转换展开Status_Array,生成3行数据;再添加一次展开转换展开TimePeriod_Array,生成15行完整组合数据
  3. 最后映射到目标表即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:16:28