You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory中基于文件列表创建ZIP并重命名文件

基于Azure Data Factory原生组件实现自定义路径的ZIP打包方案

目前ADF原生的「文件列表」选项无法直接实现为每个文件单独指定ZIP内的目标路径/重命名——该模式仅能按源文件的原始相对路径打包,无法自定义单个文件在ZIP内的结构。不过可以通过纯ADF原生组件组合实现需求,无需依赖Azure Function、Notebook等外部资源,具体步骤如下:

1. 准备映射规则文件

将原文件路径与ZIP内目标路径的映射关系整理为CSV格式的文件(也可使用TXT,需统一分隔符),存储在Blob Storage中,每行格式示例:

Guid1/Guid1.txt, docs/report1.pdf
Guid2/Guid2.jpg, images/cover.jpg

表头建议设为SourcePath, TargetPath,方便后续活动读取字段。

2. 使用Lookup活动读取映射表

添加Lookup活动,配置如下:

  • 数据源:选择存储映射文件的Blob存储账户,指向该CSV/TXT文件
  • 格式设置:指定分隔符(如逗号),勾选「第一行作为表头」
  • 该活动会输出包含所有映射规则的数组,每个元素包含SourcePath和TargetPath字段

3. 用ForEach循环批量复制文件到临时容器

添加ForEach活动,配置如下:

  • 迭代项:@activity('Lookup映射表').output.value(替换为你的Lookup活动名称)
  • 并行度:根据文件数量调整(默认20,可按需增加)
  • 循环内添加复制活动,配置:
    • 源:Blob存储,文件路径设为@item().SourcePath,即映射表中的原文件路径
    • Sink:Blob存储的临时容器,文件路径设为@item().TargetPath,即ZIP内需要的目标路径/文件名
    • 启用「二进制复制」,避免文件格式转换

4. 打包临时容器文件为ZIP

添加另一个复制活动,将临时容器的文件打包为ZIP:

  • 源:临时容器,勾选「递归」,启用「二进制复制」
  • Sink:目标Blob存储,设置最终ZIP文件的路径(如output/result.zip)
  • 在Sink的「压缩」选项中,选择「Zip」,按需设置压缩级别

5. 清理临时容器(可选)

添加Delete活动,指向临时容器,勾选「递归」,删除所有临时文件,避免占用存储资源


关键说明

  • 此方案完全基于ADF原生活动,无需外部资源,但需要临时存储中转文件
  • 若文件数量极大,需注意ForEach并行度的上限(ADF默认最大并行度为50),避免触发存储账户的限流

内容的提问来源于stack exchange,提问作者João Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:52:46