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

Azure Data Factory中复制数据时,如何实现MySQL到CosmosDB的Schema转换?

在Azure Data Factory中实现MySQL到CosmosDB for MongoDB的Schema转换

复制活动的基础字段映射仅支持简单的一对一关联,无法直接构造嵌套对象和地理坐标数组,你可以通过以下两种方式实现需求,无需创建独立管道,在现有管道内即可完成:

方法一:使用数据流动(Data Flow)处理复杂转换

数据流动是ADF专门用于复杂数据转换的组件,适合这种需要构造嵌套结构的场景:

  • 配置源数据集:在数据流动中创建MySQL源数据集,关联到inventory_warehouse_table。
  • 添加派生列转换:插入派生列转换,生成geo_coordinates字段:
    • 派生列名称:geo_coordinates
    • 表达式:
      struct(
        type = "Point",
        coordinates = array(lat, long)
      )
      
      该表达式会将lat和long字段组合为目标所需的嵌套地理结构。
  • 清理冗余字段:添加选择转换,只保留id、warehouse_name、warehouse_address和新生成的geo_coordinates字段。
  • 配置目标数据集:创建CosmosDB for MongoDB目标数据集,指向inventory_warehouse_collection,并设置合适的写入策略(如插入或更新)。
  • 集成到管道:在原管道中添加「执行数据流动」活动,调用上述配置好的数据流动,替代原复制活动即可。

方法二:在复制活动中使用自定义映射表达式(轻量方案)

若无需复杂转换逻辑,可直接在复制活动的映射中通过表达式构造嵌套结构:

  • 配置复制活动的源(MySQL表)和目标(CosmosDB集合)数据集。
  • 进入「映射」选项卡,导入源和目标的Schema。
  • 针对目标的geo_coordinates字段,点击源列下拉框选择「添加动态内容」,输入以下表达式:
    {
      "type": "Point",
      "coordinates": [@item().lat, @item().long]
    }
    
  • 手动移除源表中lat和long字段的映射,避免写入冗余数据;其余字段保持一对一映射即可。

方案对比

  • 数据流动支持转换逻辑调试、数据预览,适合复杂或后续可能扩展的转换场景;
  • 复制活动的表达式方式更轻量,配置更快,仅适用于简单的嵌套构造需求。

内容的提问来源于stack exchange,提问作者Aritra Sur Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:25:16