首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Delta Load不会将Epoch时间戳(ms)识别为水印列名

Azure Delta Load不会将Epoch时间戳(ms)识别为水印列名
EN

Stack Overflow用户
提问于 2022-11-04 19:26:29
回答 1查看 82关注 0票数 0

我正在尝试使用Azure Data (从Server到Blob存储)执行增量加载(增量加载)。我的表有一个updateStamp列,它是以毫秒为单位的Epoch时间,数值(19,0)数据类型。当我在ADF中的Copy的configuration部分中选择Watermark列名时,它不是选项之一,它不允许我手动输入列名。它看起来只需要日期时间数据类型或键整数数据类型。我尝试过元数据驱动的复制任务和达美复制从数据库模板没有运气。是否存在转换最大值并使用它的方法(而不是将另一列添加到数亿行)。如有任何帮助或指导,将不胜感激。

我希望能够使用一种数据类型来指示时间点作为增量负载的水印,即使该数据类型不是日期时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 06:28:27

我尝试在我的环境中使用Delta从adf中的数据库模板复制到具有划时代时间戳类型的水印列。下面是步骤。

  • 输入表和水印表如下图所示。(水印表的初始水印值为1657238400000,以便在第一次运行时复制所有记录)

  • 用于更新新水印值的存储过程在SQL server中编写,如下所示。
代码语言:javascript
复制
Create PROCEDURE update_watermark @LastModifyDate numeric(19,0)
AS
BEGIN
    UPDATE watermarktable
    SET [WatermarkValue] = @LastModifyDate
END
  • 在ADF中,采用了来自数据库模板的增量复制,并给出了源表、接收器表和控制表的链接服务。然后,选择使用模板

  • LookupLastWaterMark、LookupCurrentWaterMark、DeltaCopyfromDB活动中的配置没有更改
  • UpdateWaterMark活动中,选择存储过程名称,并导入参数。参数LastModifyDate的类型给出为Int64
  • 对管道运行进行调试,给出了源表、汇表和控制表的管道参数。

  • 复制文件后,水印值将使用最新值进行更新。

Sink文件:

  • 新的行项被添加到源中(下面的图像中的第4条记录是新添加的)。

  • 重新运行管道,以检查是否复制了增量行。

当将时代时间戳作为水印列时,Delta记录被复制到接收器中。

参考资料:MS doc on 数据库模板中的Delta副本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74322065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档