如何通过Azure Data Factory将Blob存储文件按大小分三类文件夹复制
实现Azure Blob存储文件按大小分类复制(Azure Data Factory)
前置准备
确保你已拥有:
- Azure Data Factory实例
- 源Blob存储容器(存放待分类文件)
- 目标Blob存储容器(用于存放分类后的文件)
步骤1:创建源和目标数据集
- 源数据集:
新建Azure Blob存储数据集,指向你的输入容器,数据集类型选择“文件系统”。若需遍历子文件夹,在“连接”设置中勾选“递归”。 - 目标数据集:
同样新建Azure Blob存储数据集,指向输出容器,数据集类型选择“文件系统”。后续将通过动态内容指定文件的目标路径。
步骤2:添加Get Metadata活动获取文件属性
在管道中添加一个Get Metadata活动(命名为GetSourceFiles):
- 选择步骤1创建的源数据集作为数据源
- 在“字段列表”中勾选
Child Items和Size,这样活动会返回容器内所有文件的名称、路径及大小(字节单位)
步骤3:添加For Each遍历所有文件
添加For Each活动,配置如下:
- 输入:设置为
@activity('GetSourceFiles').output.childItems,即遍历Get Metadata返回的所有文件 - 若需确保文件顺序处理,勾选“Sequential”;默认并行处理可提升效率
步骤4:在循环内添加条件判断与复制逻辑
在For Each活动内部添加If Condition活动,通过三个分支判断文件大小并执行对应复制:
分支1:文件小于1KB(<1024字节)
- 条件表达式:
@less(item().size, 1024) - 条件为真时,添加Copy活动:
- 源:选择源数据集,文件路径设置为
@item().name(若源文件带子路径,使用@item().path) - 目标:选择目标数据集,文件路径设置为
1KB/@item().name(ADF会自动创建不存在的文件夹)
- 源:选择源数据集,文件路径设置为
分支2:文件大小在1KB-2KB之间(≥1024字节且<2048字节)
- 条件表达式:
@and(greaterOrEquals(item().size, 1024), less(item().size, 2048)) - 条件为真时,添加Copy活动:
- 源配置同分支1
- 目标路径设置为
2KB/@item().name
分支3:文件大于等于2KB(≥2048字节)
- 直接使用Else分支,添加Copy活动:
- 源配置同分支1
- 目标路径设置为
2KB_More/@item().name
测试与验证
运行管道后,前往目标Blob容器查看:
1KB文件夹下应为所有小于1KB的文件2KB文件夹下应为1KB-2KB之间的文件2KB_More文件夹下应为大于等于2KB的文件
内容的提问来源于stack exchange,提问作者Mikey
相关产品推荐
相关产品推荐

