如何在ADF复制活动中提取去除日期后的文件名?
在ADF复制活动接收器中移除文件名的日期前缀/后缀
核心思路
- 拆分文件名的主体部分与扩展名部分,避免替换操作误改扩展名
- 用正则匹配并移除两种日期模式:
- 开头的
8位数字+下划线(如20200405_) - 结尾的
下划线+8位数字(如_20230423)
- 开头的
- 重新拼接处理后的主体与扩展名
具体表达式实现
基础场景(文件名仅含一个点)
适用于20200405_Apples.xlsx、Bananas_20230423.txt这类单扩展名文件,将以下表达式填入接收器的文件名字段:
@concat( replace( replace( split(item().name, '.')[0], '^\\d+_', '' ), '_\\d+$', '' ), '.', split(item().name, '.')[1] )
说明:
split(item().name, '.')[0]:提取不带扩展名的文件名主体- 第一个
replace:移除开头的日期前缀(正则^\d+_匹配数字开头加下划线的片段)- 第二个
replace:移除结尾的日期后缀(正则_\d+$匹配下划线加数字结尾的片段)concat:拼接处理后的主体与原扩展名
通用场景(文件名含多个点)
如果文件名存在多个点(如20200405_Report.Q3.xlsx),需确保仅保留最后一个片段作为扩展名,使用以下表达式:
@concat( replace( replace( join(take(split(item().name, '.'), sub(length(split(item().name, '.')), 1)), '.'), '^\\d+_', '' ), '_\\d+$', '' ), '.', last(split(item().name, '.')) )
说明:
join(take(split(item().name, '.'), sub(length(split(item().name, '.')), 1)), '.'):提取除最后一个扩展名外的完整主体last(split(item().name, '.')):获取最后的扩展名部分
测试验证
应用表达式后,可得到以下转换结果:
- 输入
20200405_Apples.xlsx→ 输出Apples.xlsx - 输入
Bananas_20230423.txt→ 输出Bananas.txt - 输入
20210101_Sales.Report.pdf→ 输出Sales.Report.pdf - 输入
Inventory_20220630.csv→ 输出Inventory.csv
内容的提问来源于stack exchange,提问作者sparc
相关产品推荐
相关产品推荐

