如何在Azure Data Factory中用正则表达式筛选Blob存储文件?
在ADF管道中用正则精准筛选Blob文件的实现方法
核心思路
ADF表达式语言提供的matchesRegex函数可直接对文件名做正则匹配,配合Filter活动的条件判断,就能精准筛选符合规则的CSV/XML文件,替代原本宽泛的contains筛选逻辑。
具体实现步骤
获取Blob文件列表
先添加Get Metadata活动,配置对应Blob存储链接服务,选择目标容器,将Field list设置为Child items,以此获取容器下所有文件的基础信息。配置Filter活动的筛选条件
将Filter活动的Items设为@activity('你的Get Metadata活动名称').output.childItems,然后在Condition中填入以下表达式:@or(matchesRegex(item().name, '^CSV.*\.csv$'), matchesRegex(item().name, '^XML.*\.xml$'))该表达式会逐一判断文件名:要么匹配「以CSV开头且以.csv结尾」的规则,要么匹配「以XML开头且以.xml结尾」的规则,精准过滤掉不符合要求的文件。
注意:正则里的扩展名前的
.需要转义为\.,避免被当作通配符匹配任意字符;.*会匹配文件名中间的任意内容(包括空格,适配你给出的示例文件名)。验证筛选结果
可在Filter活动后添加Set Variable活动,将筛选结果赋值给变量,或直接通过Debug模式运行管道,查看Filter活动输出的value字段,确认筛选出的文件是否符合预期。
补充注意事项
- 确保Get Metadata活动拥有目标Blob容器的访问权限,避免因权限不足导致无法获取文件列表。
- 若后续需要调整正则规则,可直接修改
matchesRegex函数中的正则参数,无需改动整体逻辑框架。
内容的提问来源于stack exchange,提问作者Master_GoGo
相关产品推荐
相关产品推荐

