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

在Azure Data Factory中处理Airbyte JSON输出的技术咨询

处理Airbyte输出JSON至Azure Data Factory目标表结构的解决方案

原始JSON结构

{ 
  "_airbyte_ab_id" :"8891ab71-f3fa-456d-868a-f3342b21bf35",
  "_airbyte_emitted_at" :1699631208334,
  "_airbyte_data": { 
    "data": { 
      "3c7499774c94f63155f483737": { 
        "master_account_id" :"",
        "name" :"Test_Account",
        "status": { 
          "active" :false,
          "voip" :false,
          "portal_access" :false,
          "billing" :false 
        },
        "sales_person" :"jayleno",
        "agent" :"",
        "timezone" :"America/New_York",
        "website" :"",
        "created_at" :"2015-04-23T14:47:21Z",
        "updated_at" :"2022-09-27T00:31:32Z" 
      },
      "8eb4decb9ddcf0d44e69e329f": { 
        "master_account_id" :"",
        "name" :"Test_Account2",
        "status": { 
          "active" :false,
          "voip" :false,
          "portal_access" :false,
          "billing" :false 
        },
        "sales_person" :"conanobrien",
        "agent" :"",
        "timezone" :"America/New_York",
        "website" :"",
        "created_at" :"2015-05-13T17:47:02Z",
        "updated_at" :"2018-03-13T04:14:38Z" 
      } 
    },
    "status" :"success",
    "code" :"200",
    "last_key" :"8eb4decb9ddcf0d44e69e329f" 
  } 
}

目标表结构

AccountIdNameActiveVoiPSalesRepAgentTimezoneWebsite
3c7499774c94f63155f483737Test_AccountfalsefalsejaylenonullAmerica/New Yorknull
8eb4decb9ddcf0d44e69e329fTest_Account2falsefalseconanobriennullAmerica/New Yorknull

遇到的问题

  • 从Blob存储读取JSON后始终是复杂嵌套结构
  • Flatten步骤中Unroll By选项置灰,无法选择展开目标
  • Select步骤仅能单独提取AccountId,无法完整映射目标表所有字段

解决步骤

1. 数据流源配置

选择Blob存储作为数据流源,文档格式设置为JSON,根据文件数量选择Single document或Array of documents(本次为单文档)。

2. 添加Parse活动转换动态键为数组

由于原始JSON中账号是动态GUID键,无法直接展开,需先将对象转为键值对数组:

  • 添加Parse活动,在Output column type中选择Array,使用表达式:
    mapKeysToEntries(_airbyte_data.data)
    
    此表达式会将_airbyte_data.data下的GUID键值对转换为[{key: "GUID值", value: {账号详情}}]格式的数组,此时即可获得可展开的数组结构。

3. 使用Flatten活动展开数组

  • 选择Parse活动的输出作为Flatten的输入,此时Unroll By选项将可选,选择刚才生成的键值对数组。
  • 展开后会生成key(即AccountId)和value(包含所有账号嵌套字段)两列。

4. 用Select活动映射目标列

在Select活动中配置字段映射,同时处理空值和格式转换:

目标列表达式
AccountIdkey
Namevalue.name
Activevalue.status.active
VoiPvalue.status.voip
SalesRepvalue.sales_person
Agentiif(value.agent == "", null(), value.agent)
Timezonereplace(value.timezone, "_", " ")
Websiteiif(value.website == "", null(), value.website)

5. 输出到目标数据库

添加Sink活动,配置目标数据库及对应表,将Select活动的输出字段与表字段一一映射,完成数据写入。

注意事项

  • ADF字段名区分大小写,需严格匹配原始JSON中的字段名称
  • 可通过数据流的Data Preview功能查看每一步的输出结果,验证结构是否正确
  • 若处理批量JSON文件,需在源设置中开启Wildcard paths并配置正确的文件路径匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:02:42