如何在Azure Data Factory中批量提取各文件夹内最大文件并复制
解决Azure存储容器中按文件夹提取最大文件并复制的问题
内部流程处理(基于已有的Foreach遍历框架)
筛选当前文件夹内的最大文件
在获取当前文件夹子项的Get Metadata活动完成后,添加一个Set Variable活动:- 创建字符串类型变量(例如
var_largest_file),赋值表达式使用:
该表达式会将当前文件夹的所有子文件按@first(sort(activity('Get Metadata 子项').output.childItems, 'size', desc))size降序排序,取第一个结果即为当前文件夹内最大的文件。 - 注意:必须确保
Get Metadata 子项活动的字段列表勾选了Child Items,才能获取到包含size属性的文件数组。
- 创建字符串类型变量(例如
复制最大文件到目标文件夹
添加Copy Data活动,配置如下:- 源数据集:路径表达式设为
其中@concat(item().name, '/', variables('var_largest_file').name)item()代表Foreach循环中的当前文件夹对象,variables('var_largest_file').name是筛选出的最大文件名。 - 目标数据集:指向目标Folder C,文件名可直接沿用原名称,或自定义(比如添加文件夹前缀:
@concat(item().name, '_', variables('var_largest_file').name))。
- 源数据集:路径表达式设为
关键注意事项
- Foreach活动默认并行执行即可,除非存储账户有并发限制,无需开启Sequential模式。
- 确保活动依赖关系正确:
Get Metadata 子项执行完成后,再触发筛选和复制活动。 - 若存在多个大小相同的最大文件,
sort函数会按文件名排序取第一个,可根据需求调整表达式的排序规则。
内容的提问来源于stack exchange,提问作者Cyriel Lamerigts
相关产品推荐
相关产品推荐

