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

Azure Data Factory中如何将键值对JSON数组转为JSON对象(Cosmos DB迁移)

在ADF数据流中实现Cosmos DB文档的数组转键值结构转换

以下是针对你的需求的具体ADF数据流操作步骤,适配动态Key场景:

步骤1:配置源数据集

连接到源Cosmos DB的Notes容器,确保数据流识别NoteDetails为数组类型(ADF会自动检测,若未识别可在源转换的Projection标签手动指定类型)。

步骤2:扁平化NoteDetails数组

添加Flatten转换,设置:

  • 要扁平化的数组:选择NoteDetails字段
  • 保留根字段:勾选id、ownerId、noteCategory(这些顶层字段需要保留,不随数组展开重复)
  • 执行后,每条原文档会拆分为多条记录,每条对应一个NoteDetails元素,包含Key和Value字段。

步骤3:聚合生成键值对对象

添加Aggregate转换,实现将同一条原文档的拆分记录重新聚合:

  • 分组依据:选择id、ownerId、noteCategory(确保同原文档的记录归为一组)
  • 新增聚合列:命名为normalizedNoteDetails,使用表达式:
    mapFromArrays(collect(Key), collect(Value))
    
    该函数会把分组内所有Key收集为一个数组,所有Value收集为另一个数组,再将两者映射为键值对对象,完美匹配你需要的结构。

步骤4:清理字段

添加Select转换,仅保留最终需要的字段:id、ownerId、noteCategory、normalizedNoteDetails,移除临时生成的Key、Value字段。

步骤5:配置目标数据集

连接到目标Cosmos DB容器,设置写入行为(如Upsert更新现有文档,Insert插入新文档),确保目标容器的序列化格式为JSON。

验证转换结果

在数据流的Data Preview中依次查看每个转换的输出:

  • Flatten后:每条记录对应一个NoteDetails元素+根字段
  • Aggregate后:每条记录对应原文档结构,normalizedNoteDetails为目标键值对对象
  • Select后:仅保留目标字段,结构与预期完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:21