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

Azure Data Factory单复制活动多表复制及并行复制度使用咨询

用单个Azure Data Factory Copy活动复制多表 + 并行度配置指南

嗨,刚好我之前做过类似的优化,来给你详细说说怎么实现:

一、单个Copy活动复制多张表的实现方法

ADF的Copy活动完全支持一次性复制多张表,主要有两种配置方式:

1. 使用「表名列表」批量复制

这种方式适合直接复制整张表的场景:

  • 配置源数据集为你的本地SQL Server,在Copy活动的源标签里,将「使用查询」切换为「表名列表」
  • 在「表名列表」里填写要复制的表名,格式是JSON数组,比如:["Sales.Customers", "Sales.Orders", "Production.Products"](注意要包含schema名,避免同名表冲突)
  • 配置目标数据集为Azure Data Lake Storage,在目标标签里,设置「文件路径」为动态内容,比如 @concat('raw/', item().TableName, '/'),这样每张表会生成独立的文件夹
  • 「文件名」可以设为 @concat(item().TableName, '_', utcnow('yyyyMMddHHmmss'), '.parquet')(如果用Parquet格式)或者其他你需要的命名规则

2. 使用「查询列表」自定义复制逻辑

如果有些表需要过滤数据(比如只复制近30天的记录),可以用这种方式:

  • 同样在Copy活动的源标签里,选择「查询列表」
  • 填写JSON格式的查询数组,比如:
    [
      "SELECT * FROM Sales.Customers WHERE CreateTime >= DATEADD(day, -30, GETDATE())",
      "SELECT OrderID, CustomerID, OrderDate FROM Sales.Orders",
      "SELECT * FROM Production.Products WHERE IsActive = 1"
    ]
    
  • 目标端同样用动态内容区分不同查询的输出,比如 @concat('raw/query_', item().Index, '/') 来按查询索引生成文件夹

二、Degree of Copy Parallelism(复制并行度)的使用

这个参数就是用来控制单个Copy活动内,同时执行复制任务的数量,非常适合优化多表复制的效率:

1. 在哪里设置?

在Copy活动的设置标签里,找到「并行复制」选项,直接输入数字即可(默认是4)。比如你设置为5,那么Copy活动会同时复制5张表(或5个查询结果),剩下的任务会排队等待。

2. 调整并行度的注意事项

  • 不要盲目调高:并行度越高,对源SQL Server的压力越大,可能会影响业务系统的性能,建议先从小的数值(比如4-8)测试,观察源数据库的CPU、IO负载
  • 结合目标存储性能:ADLS Gen2的吞吐量有一定限制,如果并行度过高,可能会遇到Throttling(限流),此时可以适当降低并行度,或者提升ADLS的性能层级
  • 和多表复制结合:比如你要复制10张表,并行度设为3,那么会同时运行3个复制任务,完成一个后立即启动下一个,直到所有表复制完成

三、额外的最佳实践

  • 用管道参数管理表列表:把表名列表或查询列表设为管道参数,这样不需要修改Copy活动就能调整要复制的表,更灵活
  • 监控复制状态:在ADF的监控面板里,可以看到每个子复制任务的进度、耗时,方便排查慢表的问题
  • 分区优化:对于超大表,建议先在源端做分区,然后用查询列表按分区复制,再结合并行度,能大幅提升复制速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:37:54