如何在Azure Data Factory数据流中筛选验证含指定前缀/后缀的Excel文件名?
Azure Data Factory中筛选/验证Excel文件名的实现方法
针对你需要匹配前缀、后缀或包含特定字符串的Excel文件名需求,以下是两种实用的实现方案:
一、基础方案:数据集层面直接配置筛选规则
适合固定筛选逻辑的场景,无需额外管道活动:
- 创建Excel数据集,完成存储账户(Blob/ADLS Gen2等)的连接配置
- 在数据集的连接选项卡,找到「文件名」输入框,使用通配符编写匹配规则:
- 前缀匹配(如以employee开头):
employee*.xlsx - 后缀匹配(如以_report.xlsx结尾):
*_report.xlsx - 包含特定字符串(如你的示例emp_data):
*emp_data*.xlsx
- 前缀匹配(如以employee开头):
- 验证有效性:点击数据集的「预览数据」按钮,若存在符合规则的文件,将直接加载数据;若没有匹配文件,会提示「找不到文件」。
二、进阶方案:管道活动动态筛选+存在性验证
适合需要先确认文件存在,再执行后续处理的场景:
- Get Metadata活动:
- 配置连接到目标存储容器,在「字段列表」中勾选
ChildItems,用于获取容器内所有文件的元数据
- 配置连接到目标存储容器,在「字段列表」中勾选
- Filter活动:
- 输入源选择
@activity('Get Metadata1').output.childItems - 筛选条件根据需求选择:
- 包含特定字符串:
@contains(item().name, 'emp_data') - 前缀匹配:
@startswith(item().name, 'employee') - 后缀匹配:
@endswith(item().name, '.xlsx')
- 包含特定字符串:
- 输入源选择
- If Condition活动:
- 条件表达式填写
@empty(activity('Filter1').output.Value) - 分支逻辑:
- 条件为False(存在匹配文件):执行复制、转换等后续业务活动
- 条件为True(无匹配文件):可添加「Web活动」触发告警,或直接终止管道
- 条件表达式填写
- 动态传递文件名:若需指定处理某一个匹配文件,可将筛选结果的文件名作为参数传入Excel数据集,示例赋值表达式:
@activity('Filter1').output.Value[0].name
注意事项
- 通配符规则:
*匹配任意长度字符,?匹配单个字符 - 确保ADF的托管标识对目标存储容器拥有读取权限,否则无法获取文件列表或读取数据
- 使用通配符的数据集预览时,默认加载第一个匹配到的文件数据
内容的提问来源于stack exchange,提问作者PRASANTH NADENDLA
相关产品推荐
相关产品推荐

