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

如何用Azure Data Factory原生算子转换嵌套JSON为表格?

使用Azure Data Factory原生算子实现动态嵌套JSON转扁平表格

可以完全通过ADF Data Flow的原生转换算子实现,无需依赖Azure Functions等代码类功能,具体步骤如下:

1. 源数据集配置

在Data Flow中添加Blob Storage JSON源,将JSON设置里的文档格式设为「单个文档」,确保能正确读取完整的嵌套JSON结构。

2. 第一层:将顶层动态对象转为键值对数组

添加派生列转换,创建新列level1,使用以下表达式将parentProperty下的动态键值对转为数组:

mapToEntries(parentProperty)

该表达式会把parentProperty中的每个条目(如key1及其子对象)转换为{"key": "key1", "value": {...}}格式的数组元素。

3. 第一层扁平化

添加扁平化转换:

  • 设置展开依据为level1,将数组拆分为单独的行
  • 在展开根中选择level1,然后提取两个字段:
    • level1.key → 命名为Column1
    • level1.value → 命名为level2_obj(临时存储第二层嵌套对象)

4. 第二层:将第二层动态对象转为键值对数组

再次添加派生列转换,创建新列level2,使用表达式处理level2_obj:

mapToEntries(level2_obj)

此步骤将level2_obj中的动态键(如key2、key3)转为{"key": "key2", "value": {"property1": x, "property2": y}}格式的数组元素。

5. 第二层扁平化

添加第二个扁平化转换:

  • 设置展开依据为level2,拆分数组为单独行
  • 提取字段:
    • level2.key → 命名为Column2
    • level2.value.property1 → 命名为Column3
    • level2.value.property2 → 命名为Column4

6. 清理与输出

添加选择转换,仅保留Column1、Column2、Column3、Column4四个目标列,移除所有临时生成的中间列。最后连接到分隔文本Blob接收器,完成数据导出。

关键说明

之前使用Select和Derived Column无效的原因是JSON中的键为动态值,无法通过固定字段名直接引用。通过mapToEntries将对象转为键值对数组,再结合扁平化转换,就能动态处理任意数量的第一层和第二层键,完全适配需求中的结构。

内容的提问来源于stack exchange,提问作者donald.nairn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:57:21