历史版本2 :数据增量更新同步 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

在数据同步时,为了保证数据时效性,有时我们需要对数据定时进行增量更新,比如每天将新增的一部分数据(来源表)更新至目标数据表中。

数据的增量更新可以根据用户的实际数据情况分为三种:

  • 来源表有时间戳字段;

  • 来源表没有时间戳字段,但是有唯一标识;

  • 来源表没有时间戳字段,并且没有唯一标识。

2. 来源表有时间戳编辑

若来源表有时间戳,可以使用参数赋值获取目标表时间戳最大值,再使用数据同步获取增量数据做增量更新。

例如数仓调度方案设置DW层任务中,需要将 FDLDemo 数据库中 demo_ods_huabeicaiwu 来源数据表新增的数据同步至 FRDemo 数据库的 dw_caiwu 目标数据表中。

由于来源数据表demo_ods_huabeicaiwu包含时间戳订单生成时间,因此可以判断 dw_caiwu 数据中最晚的订单生成时间是否晚于demo_ods_huabeicaiwu 数据表的订单时间,将满足条件的数据取出并通过数据同步同步至 dw_caiwu 目标数据表中。

2.1 获取目标表最晚时间

使用参数赋值,取出 dw_caiwu 中最晚订单生成时间,并将其设置为 time 参数,如下图所示:

2.2 将新增的数据更新至目标表中

新建数据同步节点,将demo_ods_huabeicaiwu数据取出,并使用time参数,如果demo_ods_huabeicaiwu数据中「订单生成时间」晚于 dw_caiwu 数据中最晚订单时间,则将这部分新增的数据同步至 dw_caiwu 数据表中,如下图所示:

3. 来源表无时间戳但有唯一标识编辑

也就是来源表有主键或逻辑主键,但是不能通过时间戳进行增量更新。

例如需要将 FDLDemo 数据库中 jdy_order 来源数据表新增的数据同步至 FRDemo 数据库的 order_mubiao 目标数据表中。

由于 jdy_order 来源数据表时间字段不能作为更新标识,并且该数据表有主键 orderid 字段,因此使用使用参数赋值获取目标表 order_mubiao 内唯一标识 orderid ,再获取来源表中存在但是目标表中没有的 orderid (也就是需要同步至目标表的新增数据)对应的数据,将这部分数据使用数据同步,同步至目标数据库 order_mubiao ,完成增量更新。

来源表数据结构如下图:

3.1 获取目标表中唯一标识字段

使用参数赋值获取目标表 order_mubiao 内唯一标识 orderid,将其作为参数,如下图所示:

3.2 将新增数据更新至目标表

再获取来源表中存在但是目标表中没有的 orderid (也就是需要同步至目标表的新增数据)对应的数据,将这部分数据使用数据同步,同步至目标数据库 order_mubiao ,完成增量更新。

4. 来源表没有时间戳和唯一标识编辑

建议使用数据管道进行实时增量更新,详情参见:数据管道概述