Azure Data Factory添加时区脚本后Blob输出带随机数问题咨询
随机数字出现的原因
你观察到的7位数字并非随机生成,核心原因如下:
convertTimeZone()函数未显式指定输出格式时,默认返回ISO 8601完整时间格式yyyy-MM-ddTHH:mm:ss.fffffffK,末尾的7位fffffff就是调用utcnow()时的毫秒精度字段,就是你看到的数字段。- 原脚本使用的
pipeline().parameters.SliceStart参数默认仅到秒级精度,没有毫秒段,因此之前不会出现该段内容。 - 补充说明:如果Sink配置未明确指定完整文件名(含后缀),Copy活动也可能自动追加分片序号,但从你提供的脚本来看,核心诱因是时间格式的默认毫秒精度。
移除该数字的解决方案
你只需给convertTimeZone()函数新增第4个格式参数,显式指定时间输出的精度和格式即可,同时建议直接在脚本中补全文件后缀,避免Azure Data Factory自动追加额外内容:
- 如果你需要时间格式不含特殊字符(适配Blob存储文件名规则),可以使用到秒级的纯数字格式,修改后的动态内容如下:
@concat('Test_',convertTimeZone(utcnow(),'UTC','New Zealand Standard Time','yyyyMMddHHmmss'),'_.csv')
- 如果你需要保留日期时间分隔符,可使用如下格式规避非法字符:
@concat('Test_',convertTimeZone(utcnow(),'UTC','New Zealand Standard Time','yyyy-MM-dd-HH-mm-ss'),'_.csv')
额外验证项:确认Copy活动Sink设置页的「文件命名选项」选择为「指定文件名」,不要选择自动生成文件名的相关选项,避免额外序号追加。
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

