如何在Data Factory中用Data Copy将查询行单独存为Blob Storage文件
Azure Data Factory 按查询行拆分输出独立Blob文件实现方案
方案1:查找+ForEach循环组合(无代码,新手友好,适合数据量<5000行的场景)
- 保留你现有数据源的连接配置,首先在管道中添加
查找活动,配置指向你的数据源,填入你之前使用的查询语句,取消勾选「仅返回第一行」选项,确保活动可以返回查询得到的所有行数组。 - 新增
ForEach活动,将前一步查找活动的输出作为遍历项,表达式写为@activity('你的查找活动名称').output.value。 - 进入ForEach活动内部,添加
复制活动:- 源配置:可直接引用当前遍历行的内容,无需二次查询数据库;如果需要二次校验,也可写过滤查询
SELECT * FROM 你的表 WHERE 唯一标识列 = @item().对应唯一标识字段名。 - 接收器配置:指向目标Blob存储容器,文件名设为动态表达式,优先用每行的唯一标识生成文件名,如
@concat(item().唯一标识字段名, '.txt'),无唯一标识时可用@concat(guid(), '.txt')生成随机唯一文件名。 - 配置完成后运行管道即可,ForEach会逐行遍历查询结果,每行单独写入一个独立txt文件。
- 源配置:可直接引用当前遍历行的内容,无需二次查询数据库;如果需要二次校验,也可写过滤查询
方案2:映射数据流实现(适合数据量较大、行数超过5000的场景)
- 在管道中添加
数据流活动,新建映射数据流。 - 数据流的源配置为你的数据源,填入对应的查询语句。
- 按需添加字段处理转换,若没有可用于生成文件名的字段,可新增
派生列转换,用UUID()函数生成每行的唯一值作为专属文件名列。 - 添加
接收器转换,选择Blob存储作为输出介质,格式设置为分隔文本(对应txt格式)。 - 在接收器的「设置」选项卡中,文件名选项选择「按列设置名称」,选择你准备好的文件名列,运行后数据流会自动将每行输出为独立的Blob文件。
注意事项
- 查找活动默认最大返回行数为5000,超过这个行数需要手动开启查找活动的分页配置,或直接选用方案2实现。
- 文件名不能包含
/ \ : * ? " < > |这类Azure Blob存储不支持的特殊字符,避免写入失败。
内容的提问来源于stack exchange,提问作者Stephen Boyette
相关产品推荐
相关产品推荐

