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

如何在Data Factory数据流中从扁平文件创建双层嵌套数组

在Azure Data Factory中构建双层嵌套数组(员工-客户-产品)

针对扁平文件生成双层嵌套JSON的需求,你可以通过**两次聚合转换(Aggregate)**实现,核心是从最内层的产品开始逐层向上聚合:

假设扁平数据源列结构

假设你的扁平文件包含以下字段:
employeeNumber, employeeName, customerId, customerName, productName, productPrice

步骤1:聚合生成客户-产品的单层嵌套

  1. 添加聚合转换,将分组键设置为 customerId、customerName,同时保留employeeNumber、employeeName(用于后续员工层级聚合)
  2. 在聚合列中,使用collect()+struct()组合生成每个客户的产品数组:
    products = collect(struct(productName as name, productPrice as price))
    
    这一步会把同一个客户下的所有产品打包成嵌套数组,输出每条数据对应一个客户,包含其产品列表。

步骤2:聚合生成员工-客户的双层嵌套

  1. 再添加一个聚合转换,将分组键设置为 employeeNumber、employeeName
  2. 在聚合列中,再次使用collect()+struct()组合生成每个员工的客户数组:
    customers = collect(struct(customerId as id, customerName as name, products as products))
    
    这一步会把同一个员工下的所有客户(已包含产品数组)打包成外层数组,最终输出每条数据对应一个员工,结构完全匹配你的目标。

目标结构验证

最终输出的JSON结构如下:

{
  "employeeNumber": "00001",
  "employeeName": "John Doe",
  "customers": [
    {
      "id": "99999",
      "name": "Jane Doe",
      "products": [
        {
          "name": "XYZ",
          "price": 2.00
        },
        {
          "name": "ABC",
          "price": 3.00
        }
      ]
    },
    {
      "id": "1111",
      "name": "John Smith",
      "products": [
        {
          "name": "RVS",
          "price": 2.00
        },
        {
          "name": "GHI",
          "price": 3.00
        },
        {
          "name": "QRS",
          "price": 4.00
        }
      ]
    }
  ]
}

注意事项

  • 分组键必须选择层级的唯一标识(如员工号、客户ID),避免重复数据导致聚合错误
  • struct()函数用于映射嵌套对象的字段名,要严格匹配目标JSON的字段定义
  • 整个流程在Data Flow中串行执行,先完成内层产品聚合,再处理外层客户聚合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:41:15