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

如何通过ADF将含复杂数组的CSV转为JSON并更新Cosmos DB

问题描述

我有如下格式的CSV文件(使用^作为分隔符):

damNo^modelVersion2^mileageUnit^oemOrderNumber^warrantyStartDate^mchCode^saCodes
DAM123456^2A^KM^OEM987654^2005-05-12T00:00:00^MCH001^1;Versjon 1~UKJENT;Interiør ukjent~UKJENT;Farge ukjent

其中saCodes为复杂数组格式,需要通过Azure Data Factory(ADF)生成如下结构的JSON:

{"damNo":"DAM123456","modelVersion2":"2A","mileageUnit":"KM","oemOrderNumber":"OEM987654","warrantyStartDate":"2005-05-12T00:00:00","mchCode":"MCH001","saCodes":[{"propertyId":"1","description":"Versjon 1"},{"propertyId":"UKJENT","description":"Interiør ukjent"},{"propertyId":"UKJENT","description":"Farge ukjent"}]}

最终目的是用该JSON更新Cosmos DB,请问是否可通过ADF实现该流程?

实现方案

完全可以通过ADF实现这个流程,核心是利用**数据流(Data Flow)**处理saCodes字段的拆分与重组,具体步骤如下:

  • 数据源配置:创建CSV数据集,指定分隔符为^,确保所有字段(包括saCodes)被正确读取。
  • 数据流处理saCodes字段:
    1. 拆分数组元素:添加「派生列」转换,用split(saCodes, '~')将saCodes拆分为字符串数组,得到类似["1;Versjon 1", "UKJENT;Interiør ukjent", "UKJENT;Farge ukjent"]的结果。
    2. 展开数组:添加「拆分行」转换,以上一步生成的数组为依据,将每个数组元素拆分为单独的行。
    3. 拆分键值对:再次添加「派生列」转换,用split(currentValue, ';')拆分每行的字符串,分别提取propertyId(数组第1个元素)和description(数组第2个元素)。
    4. 重组数组:添加「聚合」转换,以damNo等非saCodes相关字段为分组键,用collect(@(propertyId=propertyId, description=description))将拆分后的键值对重新聚合成saCodes数组。
  • 输出到Cosmos DB:创建Cosmos DB数据集并选择JSON格式作为输出,在数据流的「接收器」中配置该数据集,设置写入行为为「更新」(依据damNo等主键匹配更新),运行管道即可完成转换与更新操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:42:41