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

Azure Data Factory中通用文件名校验及文件处理实现方案问询

存储容器文件命名规则校验与分流处理方案

核心思路

将SQL表中的通配符命名规则转换为正则表达式,遍历存储容器内的所有文件,逐一与规则匹配;匹配成功的文件,根据后缀类型(Excel/CSV)分流至对应处理管道。

具体实现步骤

1. 优化SQL规则表(可选但推荐)

为SQL规则表新增FileExtension字段,明确每个规则对应的文件后缀,避免模糊匹配:

RulePatternFileExtension
AAA_LocalRate_*_LC.xlsx
AAA_PostTaxReport_*_LC.xlsx
AAA_GroupRate_*_LC.xlsx
ABC_Vendors_*.csv

2. 获取文件与规则数据

  • Get Metadata任务:连接目标存储容器,勾选Child items,获取所有文件的元数据(重点提取Name字段);可设置过滤条件,仅获取Item type为File的条目。
  • Lookup任务:从SQL表读取完整规则列表,确保返回所有行数据。

3. 双层循环实现规则匹配

使用For Each任务嵌套完成匹配逻辑:

3.1 外层循环:遍历所有文件

循环对象为Get Metadata输出的childItems集合,每次迭代处理单个文件。

3.2 内层循环:遍历规则列表

循环对象为Lookup任务输出的规则集合,每次迭代生成对应正则并匹配:

  • 生成正则表达式:用Set Variable任务将规则中的通配符*替换为正则的.*,并拼接对应文件后缀,示例表达式:
    @concat('^', replace(item().RulePattern, '*', '.*'), item().FileExtension, '$')
    
    (^匹配开头,$匹配结尾,确保完全符合规则)
  • 正则匹配判断:用If Condition任务验证当前文件名是否匹配正则,表达式为:
    @matches(item().Name, variables('RegexPattern'))
    
    (item().Name为外层循环当前处理的文件名)

4. 匹配成功后分流处理

若If Condition返回True,根据FileExtension字段调用对应管道:

  • 后缀为.xlsx:触发Excel文件处理管道,传递当前文件名作为参数
  • 后缀为.csv:触发CSV文件处理管道,传递当前文件名作为参数

5. 未匹配文件处理(可选)

在文件循环内设置IsMatched变量(初始为False),匹配成功后设为True。循环结束后判断该变量,若为False,可将文件移动至错误存储容器,或写入日志表记录异常。

内容的提问来源于stack exchange,提问作者Wouter Lefebvre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:17:48