Azure Data Factory使用Switch Activity判断文件名前缀处理多格式文件方法
Azure Data Factory 按固定文件名前缀分支处理实现方案
实现方式
你可以通过以下两种方案实现按前缀分支的需求,第二种方案扩展性更强更适合复用场景:
方案1:基于startsWith函数分支匹配
直接在Switch Activity的表达式中编写多层判断逻辑,通过startsWith匹配前缀后返回对应的标识值,Case分支直接匹配返回的标识即可:
Switch 表达式示例:
@if( startsWith(triggerBody().fileName, 'ABCDEF'), 'ABCDEF', if( startsWith(triggerBody().fileName, 'UVWXYZ'), 'UVWXYZ', 'UNMATCHED' ) )
你只需要在startsWith的第二个入参传入你要匹配的固定前缀字符串(加单引号包裹),后续新增前缀只要再加一层if嵌套即可,Default分支可配置未匹配前缀的异常处理逻辑。
方案2:拆分文件名提取前缀(更推荐)
由于你的文件名统一为前缀_时间戳的格式,可直接按下划线拆分文件名取首段作为Switch的判断值,无需修改表达式即可扩展新的前缀分支:
Switch 表达式示例:
@split(triggerBody().fileName, '_')[0]
该表达式会自动提取文件名中第一个下划线前的内容作为判断值,你只需在Case分支中新增需要匹配的前缀值即可,后续新增业务场景无需修改Switch表达式,适配你要求的可复用需求。
配套配置校验
- 确认Blob存储的事件触发器已开启传递文件名参数,保证
triggerBody().fileName可正常获取到上传的文件名 - Copy Activity的源数据集文件名配置为
@triggerBody().fileName,确保每次触发都读取对应上传的新文件 - 可将不同前缀对应的格式化规则(如字段映射、输出格式、Sink路径)抽象为管道参数或者配置表存储,进一步提升管道复用性
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

