如何将ItemName与时间戳组合作为复制到接收器时的文件名?
ADF复制活动接收器文件名组合解决方案
直接用+拼接表达式在Azure Data Factory(ADF)中不生效,因为ADF的表达式语法要求使用内置函数进行字符串操作,以下是可行的实现方法:
正确拼接写法
1. 结合触发时间与ItemName
@concat(formatDateTime(pipeline().TriggerTime, 'yyyyMMddHHmmss'), '_', activity('GetMetadata1').output.itemName)
- 使用
formatDateTime()将触发时间转换为无非法字符的文件名格式(避免冒号、斜杠等无法用于文件名的字符) - 通过
concat()函数完成字符串拼接,用下划线分隔时间戳与ItemName
2. 结合自定义时间戳(dataset().now())与ItemName
@concat(formatDateTime(dataset().now(), 'yyyyMMddHHmmss'), '_', activity('GetMetadata1').output.itemName)
- 若
dataset().now()返回的是日期类型,必须用formatDateTime()转换为字符串后再拼接,否则会因类型不匹配报错
关键注意事项
- 必须使用ADF内置的
concat()函数做字符串拼接,不能直接用+运算符 - 时间戳格式需规避文件名非法字符(如
:、/、\等),推荐使用yyyyMMddHHmmss这类纯数字格式 - 确认GetMetadata活动的输出中存在
itemName字段,可通过活动的运行输出验证字段是否存在及取值是否正确
内容的提问来源于stack exchange,提问作者tony
相关产品推荐
相关产品推荐

