如何设计ADF管道将Cosmos DB单个容器数据拆分至多容器
Azure Data Factory 管道实现Cosmos DB数据按规则分流迁移
一、参数与变量设计
- 定义数组类型变量
分流规则,存储目标容器与对应过滤条件的映射关系,避免重复配置多个复制活动:[ {"targetContainer": "Sales", "filterValue": "salesOrderS4"}, {"targetContainer": "Plan", "filterValue": "planning"}, {"targetContainer": "Logic", "filterValue": "logisticsASN"} ] - 若需复用管道处理不同源容器,可新增字符串类型参数
源容器名,默认值设为Ingest
二、管道活动执行流程
- Set Variable 活动:初始化
分流规则变量(若变量已预设默认值,此步骤可省略) - For Each 循环活动:遍历
分流规则数组,开启并行执行(并行度设为3,匹配3个目标容器的处理需求) - Copy Activity:嵌套在For Each循环内,完成单组过滤条件下的数据迁移
三、过滤表达式与动态内容配置
在Copy Activity的Cosmos DB源数据集配置中,使用动态查询实现过滤:
打开源数据集的查询选项,输入动态内容:
@concat('SELECT * FROM c WHERE c.source = "', item().filterValue, '"')(若后续需扩展多值过滤,可调整为
@concat('SELECT * FROM c WHERE c.source IN ("', item().filterValue, '")'),对应多值用逗号分隔的字符串)目标数据集的容器名设置为动态内容:
@item().targetContainer
四、关键配置细节
- 源数据集:连接到Cosmos DB账户,容器名固定为
Ingest(或引用源容器名参数) - 目标数据集:连接到同一Cosmos DB账户(或不同账户,按需调整),容器名通过动态内容引用当前循环项的
targetContainer字段 - 复制行为:根据业务需求选择
全部复制或增量复制(增量复制需指定分区键或时间戳字段作为增量判断依据)
内容的提问来源于stack exchange,提问作者Hussain
相关产品推荐
相关产品推荐

