如何使用Azure Data Factory(ADF)按指定分隔符拆分Blob存储中大文件
ADF Data Flow 按指定行分隔符拆分Blob文件实现步骤
前置配置
提前完成源、目标对应的Azure Blob存储链接服务配置,指向对应容器路径。
具体实现步骤
- 1. 源转换配置
选择待拆分的Blob存储文本文件作为源,格式做如下设置:- 列分隔符设置为不存在的特殊字符(如
\0),保证原始文件的每一行完整映射为单列数据,列命名为raw_line - 行分隔符保留默认的
\n/\r\n,确保行读取顺序正确 - 优化标签页选择单分区,避免并行读取打乱原始行序
- 列分隔符设置为不存在的特殊字符(如
- 2. 标记拆分边界
新增派生列转换,新建标识列is_split_flag,默认场景(分隔符单独占一行)表达式如下:
如果分隔符出现在行末尾而非整行都是分隔符,可修改表达式为:iif(raw_line == '-----', 1, 0)iif(endsWith(raw_line, '-----'), 1, 0) - 3. 生成文件分组编号
新增窗口转换,配置如下:- 排序依据:选择系统生成的行号列
__rownum,升序排列 - 窗口列:新建列
file_group_id,表达式为sum(is_split_flag) over(order by __rownum asc) + 1
该列的值会自动从1开始递增,每遇到一次分隔符就加1,刚好对应你需要的MyFile1、MyFile2的编号规则
- 排序依据:选择系统生成的行号列
- 4. 过滤分隔符行
新增筛选转换,过滤条件设置为is_split_flag == 0,剔除所有分隔符行,避免写入到输出文件中 - 5. 目标转换配置
选择Blob存储作为目标,格式设置为:- 仅保留
raw_line列映射,删除其他多余列的映射 - 列分隔符设置为空,避免输出多余的分隔符
- 优化标签页选择按列分区,分区列选择
file_group_id - 命名标签页中设置文件名模式为
MyFile{file_group_id},即可生成你要求的命名格式的小文件
- 仅保留
注意事项
如果拆分的文件体积极大,单分区处理速度较慢,可以先将文件按固定大小拆分后再批量执行上述逻辑,不影响最终分组结果。
内容的提问来源于stack exchange,提问作者CtrlAltElite
相关产品推荐
相关产品推荐

