You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Factory的Copy Data活动中为Created列添加时间戳

问题结论

该需求完全可以直接通过Copy Data活动实现,不需要配合Lookup活动或后续执行Update table Set Created语句,直接在Copy活动内配置是性能最优、复杂度最低的方案,无需二次操作Azure SQL表,也没有额外的活动开销。

具体实现步骤
  • 进入Copy Data活动的源配置页面,找到「附加列」配置模块
  • 新增自定义列,列名填写和目标表一致的Created,值选择动态内容,按需选择时间函数:
    • 要使用管道触发的时间:@pipeline().TriggerTime
    • 要使用Copy活动执行的实时时间:@utcnow()
    • 需要转换为指定时区(比如东八区):@convertFromUtc(utcnow(), 'China Standard Time')
  • 进入映射配置页面,开启自动映射后,系统会自动将源侧新增的Created附加列与目标SQL表的Created列匹配,未自动匹配时手动关联两个列即可
  • 正常执行Copy Data活动,写入SQL的所有行数据都会自动携带指定的时间戳
不推荐后续Update方案的原因
  • 额外性能损耗:如果同步的数据量较大,批量更新操作会占用大量Azure SQL的CPU、IO资源,执行效率远低于写入时直接赋值
  • 数据一致性风险:如果Copy活动完成后Update环节执行失败,会出现部分数据无Created时间的异常,需要额外开发异常重试、校验逻辑
  • 运维成本更高:新增额外活动会拉长管道执行时长,也增加了故障排查点
特殊场景替代方案

如果因为配置限制无法使用Copy活动的附加列功能,也无需引入额外活动,可以直接给Azure SQL目标表的Created列设置默认值:

  • 执行SQL语句修改表结构:ALTER TABLE <你的表名> ADD CONSTRAINT DF_<表名>_Created DEFAULT GETUTCDATE() FOR Created
  • 配置后需在Copy活动的映射配置中删除Created列的映射,写入时不给该列传值,SQL会自动为新写入的行填充当前时间戳

内容的提问来源于stack exchange,提问作者Kenny_I

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:42:03