Azure Data Factory:遗留工作流无正则时精准过滤表对应文件
解决方案
针对ADF不支持正则的限制,可以通过组合内置字符串函数实现精确的表名匹配,避免短表名误匹配长表名的文件。以下是两种可靠的快速修复方案:
方案一:基于文件名结构拆分匹配(推荐)
利用文件名「表名_日期.json」的固定结构,提取文件名中最后一个下划线前的部分作为实际表名,再与目标表名精确比对。
使用以下表达式作为筛选条件:
@equals( substring( replace(item().name, '.json', ''), 0, lastIndexOf(replace(item().name, '.json', ''), '_') ), pipeline().parameters.TableName )
逻辑说明:
replace(item().name, '.json', ''):去除文件名的.json后缀,得到纯名称部分(如name_one_2025-09-15)lastIndexOf(..., '_'):定位纯名称部分中最后一个下划线的位置substring(..., 0, 位置):提取最后一个下划线前的所有字符,得到实际表名(如name_one或name_one_2025)equals(..., pipeline().parameters.TableName):将提取的表名与输入的目标表名精确比对,匹配则保留该文件
方案二:结合startswith与排除规则(应急临时方案)
如果暂时不想调整复杂的字符串拆分,可以在原有startswith基础上,添加排除条件,避免短表名匹配到包含自身的长表名文件。
例如针对name_one表,筛选表达式为:
@and( startswith(item().name, 'name_one_'), not(startswith(item().name, 'name_one_2025_')) )
注意事项:
- 该方案需要为每个存在冲突的表名单独配置排除规则,仅适用于冲突表名较少的场景
- 扩展性较差,后续新增类似命名的表名时需要同步更新条件
内容的提问来源于stack exchange,提问作者cyberZamp
相关产品推荐
相关产品推荐

