Data Factory复制活动:为接收器文件名添加当前日期前缀
ADF复制活动为Blob接收器文件添加时间戳配置方案
你之前的配置不生效核心有3个问题:硬编码了固定文件名前缀whitelist_、时间格式带多余分隔符、没有动态引用源文件名导致无法适配原文件命名。按以下步骤配置即可达到预期效果:
配置步骤
- 源数据集调整
源Blob数据集路径只配置到源文件夹层级,不要硬编码固定文件名。如果是批量复制文件夹内多个文件,源设置中开启「递归遍历」,复制活动会自动读取每个遍历到的文件的名称属性。 - 接收器动态文件名配置
进入复制活动的「接收器」选项卡,接收器路径选择目标存档文件夹层级,文件名栏选择「动态内容」,填入以下表达式:@concat( split(item().name, '.')[0], formatDateTime(utcNow(), 'ddMMyyyy'), '.', split(item().name, '.')[1] )- 表达式逻辑说明:
split(item().name, '.')[0]自动提取源文件的主文件名,比如源文件为file.csv时,该部分返回file,适配任意原文件名,无需硬编码formatDateTime(utcNow(), 'ddMMyyyy')生成纯数字格式的日期戳,例如24062022,和你预期的命名格式完全匹配- 最后拼接原文件后缀,保留源文件格式,不会强制修改后缀为csv
如果是单个固定文件复制、未使用ForEach批量遍历,将表达式中item().name替换为源数据集配置的文件名动态参数即可,例如源数据集参数名为SourceFileName时,替换为dataset().SourceFileName。
- 表达式逻辑说明:
- 复制行为校验
复制活动的「复制行为」选项不要选择「保留分层结构」,改为选择「扁平化层次结构」,否则动态文件命名规则会被源路径层级覆盖。
常见踩坑说明
- 不要在接收器数据集层面硬编码固定文件名,必须将文件名配置为动态参数或留空,否则复制活动内的动态文件名配置不会生效
- 你之前使用的时间格式
'dd-MM-yyyy'会生成带横杠的日期字符串(如24-06-2022),和你需要的纯数字拼接格式不符 - 你之前写入的
'whitelist_'固定前缀会在所有文件名前额外拼接该字符串,和你预期的「原文件名+时间戳+后缀」效果不符
配置参考截图
- 复制行为配置:

- 动态文件名配置页1:

- 动态文件名配置页2:

内容的提问来源于stack exchange,提问作者dexon
相关产品推荐
相关产品推荐

