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

在ADF复制活动中展平嵌套数组JSON的问题咨询

在Azure Data Factory中展平含内部数组的嵌套JSON到CSV

针对你提供的嵌套JSON结构(外层results数组、内层stages数组+metadata嵌套对象),以下是两种可靠的解决方案,同时解决你遇到的动态映射双引号问题:

方法一:复制活动分层映射(推荐,无复杂动态逻辑)

无需手动写动态映射,利用ADF原生的分层映射能力快速展平:

  1. 配置源JSON数据集
    • 选择JSON格式,在JSON settings中设置Array of objects路径为$['results'],让ADF将外层results数组作为数据源的行。
  2. 配置复制活动映射
    • 进入映射页签,点击导入架构,ADF会自动识别嵌套结构。
    • 找到stages字段,点击右侧的展开图标(⊞),选择「展开到新行」,此时每个stages元素会生成独立一行,同时保留外层results的所有字段(如label、disOrd、id)。
    • 对stages下的metadata嵌套对象,同样点击展开图标,选择「展开为列」,将isClosed、probability拆分为单独列。
    • 按需调整列名和数据类型,匹配CSV目标需求。
  3. 配置目标CSV数据集
    • 选择CSV格式,设置输出路径,配置分隔符、编码等参数,确保展平后的列能正确写入。

方法二:数据流转换(适合复杂嵌套场景)

如果复制活动的映射不够灵活,用数据流的展平转换更可控:

  1. 创建数据流并添加源转换
    • 选择JSON数据源,在选项中设置JSON path为$['results'],读取外层数组。
  2. 添加展平转换
    • 将展平的源列设为stages,选择「展平为新行」,让每个stages元素与外层行关联生成新行。
  3. 添加派生列转换
    • 派生新列提取嵌套字段:比如isClosed设为stages.metadata.isClosed,probability设为stages.metadata.probability,将嵌套结构转为扁平列。
  4. 添加选择转换
    • 筛选保留需要的列,移除原嵌套的stages字段。
  5. 添加接收器转换
    • 选择CSV作为目标数据集,配置输出路径完成写入。

解决动态映射的双引号问题

如果你仍需要使用动态映射实现,注意ADF表达式的字符串转义规则:

  • 拼接JSON格式的映射时,双引号需用反斜杠转义,同时内层的单引号用于包裹JSON路径的键名:
    '{"source": {"path": "$[\'stages\'][' + string(variables('index')) + '][\'metadata\'][\'isClosed\']"}, "sink": {"name": "isClosed"}}'
    
  • 建议用json()函数将拼接后的字符串转为JSON对象,避免格式错误:
    json(concat('{"source": {"path": "$[\'stages\'][' , string(variables('index')) , '][\'metadata\'][\'isClosed\']"}, "sink": {"name": "isClosed"}}'))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:23:21