如何使用ADF单流水线实现Snowflake多表数据批量加载至目标Snowflake库
ADF单流水线批量同步Snowflake全量表实现方案
前置准备
- 提前创建两个Snowflake链接服务,分别对应源端和目标端,确保链接服务账号拥有源端表查询权限、目标端表写入/清空权限
- 维护同步表映射关系,推荐在Snowflake中建一张独立的同步控制表,表内至少包含
源表名、目标表名、启用标记三个字段,将40张待同步表的对应关系录入该控制表;如果不想额外建表,也可以直接在流水线中定义一个数组类型的参数存储表映射关系
流水线配置步骤
- 第一步:添加
Lookup活动,命名为获取同步表清单
源选择提前创建的Snowflake链接服务,查询语句填写SELECT 源表名,目标表名 FROM 同步控制表 WHERE 启用标记=1,关闭「仅返回第一行」开关,确保活动可以返回全部40条待同步表的映射数据 - 第二步:添加
ForEach活动,命名为循环同步每张表
活动的items属性填写动态表达式@activity('获取同步表清单').output.value,开启「并行」开关,并行度可设置为40(ADF单ForEach最高支持50个并行任务),实现40张表同时同步 - 第三步:在ForEach活动内部添加
Copy活动- 源端配置:选择源端Snowflake链接服务,源表路径填写动态表达式
@item().源表名,如果表分布在不同Schema/库下,可以在控制表补充对应字段,通过@concat(item().源库名, '.', item().源Schema, '.', item().源表名)动态拼接完整表路径 - 目标端配置:选择目标端Snowflake链接服务,目标表路径填写和源端逻辑一致的动态表达式,全量同步场景下可以在「预复制脚本」栏填写
TRUNCATE TABLE @item().目标表名,实现同步前清空目标表历史数据 - 字段映射:如果源表和目标表字段名完全一致,无需手动配置映射,Copy活动会自动匹配;如果存在字段名不一致的情况,可以在控制表补充映射规则字段,通过动态表达式读取规则即可
- 源端配置:选择源端Snowflake链接服务,源表路径填写动态表达式
参考示意图
内容的提问来源于stack exchange,提问作者Poojitha
相关产品推荐
相关产品推荐

