ADF Copy Activity动态表达式求助:修改Sink文件名(替换前缀+移除时间戳)
ADF Copy Activity 文件名修改动态表达式解决方案
需求回顾
原文件名:epackage - Sell In and Sell Out - Master - NS CBEC_20240711164411.xlsx
目标文件名:eCommerce - Sell In and Sell Out - Master - CN_CBEC.xlsx
核心操作:
- 替换前缀
epackage为eCommerce - 将
NS CBEC修改为CN_CBEC - 移除下划线后的时间戳(
_20240711164411)
原表达式错误原因
- 表达式1、3:仅实现了移除时间戳,未处理前缀替换和
NS到CN的修改,不符合最终需求。 - 表达式2:包含无意义的
<em>标签匹配逻辑,与实际文件名结构完全不符,必然报错。
正确动态表达式
@{concat( replace( replace( substring(item().name, 0, lastIndexOf(item().name, '_')), 'epackage', 'eCommerce' ), 'NS CBEC', 'CN_CBEC' ), '.', split(item().name, '.')[1] )}
表达式逻辑拆解
- 移除时间戳:通过
substring(item().name, 0, lastIndexOf(item().name, '_'))截取文件名中最后一个下划线之前的内容,得到epackage - Sell In and Sell Out - Master - NS CBEC。 - 替换前缀:用
replace()函数将epackage替换为eCommerce。 - 修改区域标识:再次用
replace()函数将NS CBEC替换为CN_CBEC。 - 拼接后缀:通过
split(item().name, '.')[1]获取原文件的扩展名(xlsx),与处理后的文件名主体拼接。
验证建议
在ADF的动态表达式调试器中输入原文件名,测试表达式输出是否符合目标格式,确认无误后再应用到Sink的文件名设置中。
内容的提问来源于stack exchange,提问作者Myxtacy
相关产品推荐
相关产品推荐

