如何在Azure Data Factory中实现多文件动态复制?映射表是什么?
动态源/目标数据复制流水线构建方案(Azure Data Factory)
关于“Mapping Table”的明确
Mapping Table是一种设计概念,并非Azure Data Factory(ADF)Copy Activity里的原生选项。它本质是用一张存储映射关系的表(比如Azure SQL数据库、ADLS中的CSV文件)来维护「源位置/配置」与「目标位置/配置」的对应关系,让流水线能动态读取这些关系,实现批量、可扩展的复制任务。
ADF中实现动态源/目标复制的步骤
1. 创建映射表
先在数据存储(比如Azure SQL Database)中创建一张映射表,结构示例:
CREATE TABLE DataCopyMapping ( MappingID INT IDENTITY(1,1) PRIMARY KEY, SourceType VARCHAR(50), -- 例如BlobStorage、SQL SourceConnectionString VARCHAR(500), SourcePath VARCHAR(200), -- 例如容器名、表名 SinkType VARCHAR(50), SinkConnectionString VARCHAR(500), SinkPath VARCHAR(200), IsEnabled BIT DEFAULT 1 -- 控制该映射是否执行 );
每日新增/删除源-目标对时,直接修改这张表即可。
2. 读取映射表数据
在ADF中配置:
- 新建Lookup活动,连接到映射表,筛选出
IsEnabled = 1的记录,获取所有需要执行的源-目标映射关系。 - 添加ForEach活动,遍历Lookup返回的结果集,将每条映射数据作为循环变量。
3. 动态配置Copy Activity
在ForEach内部添加Copy Activity,通过动态内容绑定循环变量中的参数:
- 源数据集的连接字符串、路径:使用
@item().SourceConnectionString、@item().SourcePath - 目标数据集的连接字符串、路径:使用
@item().SinkConnectionString、@item().SinkPath - 若需要字段映射,可在映射表中新增字段映射规则列,通过动态内容解析后绑定到Copy Activity的映射设置。
4. 错误处理与监控
- 在ForEach活动中开启逐行执行(避免并行冲突),或根据存储能力设置合理的并行度。
- 添加失败触发的后续活动(例如将失败的映射记录写入日志表),方便后续排查问题。
内容的提问来源于stack exchange,提问作者Shrujan
相关产品推荐
相关产品推荐

