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

如何在Azure Data Factory Data Flow中转换嵌套行列JSON为CSV?

使用Azure Data Flow将嵌套JSON转CSV的实操方案

问题说明

现有如下结构的JSON数据:

{
  "columns": [
    {"name": "EmpNo", "fieldId": 67, "type": "text"},
    {"name": "datetime", "fieldId": 564, "type": "datetime"},
    {"name": "analytics", "fieldId": 56, "type": "text"},
    {"name": "category", "fieldId": 45, "type": "text"},
    {"name": "code", "fieldId": 12, "type": "text"}
  ],
  "rows": [
    [13, "8/7/2021 1:06:13 AM", "demo", "demo/1", "spee-analytics"],
    [23, "1/24/2022 8:30:28 AM", "speed", "win", "check-123"],
    // 剩余454行数据
  ]
}

需要转成CSV格式,要求表头对应columns里的name字段,每行数据对应rows数组值,最终效果如下:

EmpNo,datetime,analytics,category,code
13,8/7/2021 1:06:13 AM,demo,demo/1,spee-analytics
23,1/24/2022 8:30:28 AM,speed,win,check-123

操作步骤

1. 配置JSON数据源

  • 新建Azure Data Flow,添加JSON数据源,指向你的JSON文件存储位置(Blob/ADLS等)。
  • 数据源连接设置里,将JSON读取模式设为Document,因为这是单文档结构的JSON。

2. 完成列名与行数据的映射

2.1 提取列名列表

添加派生列转换,新建列columnNames,用以下表达式提取columns数组中的name字段:

map(columns, #item.name)

执行后会生成数组:["EmpNo", "datetime", "analytics", "category", "code"]

2.2 把行数据和列名配对成键值对

再添加一个派生列转换,新建列rowWithColumns,用以下表达式将rows数组元素和columnNames做键值映射:

mapZip(columnNames, rows, (k,v) => createMap(k, v))

此时每行数据会变成带列名的键值对对象,比如第一行变为:

{"EmpNo":13, "datetime":"8/7/2021 1:06:13 AM", "analytics":"demo", "category":"demo/1", "code":"spee-analytics"}

2.3 展开键值对为列

添加展开转换,选择rowWithColumns列,设置展开模式为展开到列。Data Flow会自动识别所有键作为列名,把键值对展开成对应的列。

3. 输出CSV

添加CSV接收器,指向目标存储位置,配置如下:

  • 启用表头设置,自动用展开后的列名作为CSV表头。
  • 根据需求设置分隔符、编码等参数,运行Data Flow即可完成转换。

排查要点

  • 若展开后列名不对,检查map表达式是否正确提取了columns的name字段,确认数据源中columns的层级引用正确(比如是否需要用$或层级路径指定)。
  • 若行数据映射失败,确认mapZip的两个数组长度一致,rows里每个子数组的元素数量和columns的数量匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:27:28