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

目录:

1. 概述编辑

1.1 应用场景

本文适用于新增数据的场景,若数据被修改、删除,需参见文档:数据比对

更多数据同步方案请参见:数据同步方案概述

1.2 方案简介

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

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

场景
更新方式

来源表有时间戳字段

定时同步(本文第二章)
来源表没有时间戳字段,但是有唯一标识定时同步(本文第三章)
来源表没有时间戳字段,并且没有唯一标识实时同步(本文第四章)

本文示例可参见:https://demo.finedatalink.com/ 「数据增量同步更新」

2. 来源表有时间戳编辑

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

2.1 示例说明

来源表为 demo_ods_huabeicaiwu ,目标表为 dw_caiwu ,都包含时间戳订单生成时间」。如下图所示:

1710819174723685.png

若目标表中订单生成时间」的最大值,小于来源表的订单生成时间」,说明来源表存在新增数据,需要将新增数据同步到目标表中。

2.2 获取目标表最晚时间

使用「参数赋值」节点,取出目标表中「订单生成时间」的最大值,将其设置为 time 参数。如下图所示:

select max(订单生成时间) from `demo2`.`dw_caiwu`

3.png

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

1)拖入一个「数据同步」节点,与参数赋值」节点相连。

2)数据同步节点中,将来源表「订单生成时间」大于 time 参数的数据取出,同步到目标表中。如下图所示:

select * from `demo1`.`demo_ods_huabeicaiwu`  where 订单生成时间 > '${time}'

4.png

3)由于同步的数据是新增数据,追加写入数据即可;逻辑主键可不设置,为空表示直接追加写入数据。如下图所示:

注:写入方式更多介绍请参见:数据同步-写入方式

1710828670555004.png

4)可设置定时任务的执行频率,例如若希望每天将新增数据同步到目标表中,可设置一天执行一次。

点击右上角调度计划按钮,设置执行频率。如下图所示:

1710819951659833.png

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

适用场景:来源表有主键或逻辑主键,但是不能通过时间戳进行增量更新。

3.1 示例说明

来源表为 jdy_order ,目标表为 order_mubiao 。

由于来源表中没有时间字段,或者时间字段不能作为更新标识,但有逻辑主键 orderid 字段。如下图所示:

1710827274948141.png

增量同步方案说明:

  • 使用「参数赋值」节点获取目标表内唯一标识 orderid。

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

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

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

1710827679552965.png

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

1)拖入一个「数据同步」节点,与参数赋值」节点相连。

2)「数据同步」节点中,获取来源表中存在但是目标表中没有的 orderid (也就是需要同步至目标表的新增数据)对应的数据,将这部分数据使用「数据同步」节点同步至目标表,完成增量更新。如下图所示:

9.png

3)由于同步的数据是新增数据,追加写入数据即可;逻辑主键可不设置,为空表示直接追加写入数据。如下图所示:

注:写入方式更多介绍请参见:数据同步-写入方式

1710828580246639.png

4)可设置定时任务的执行频率,例如若希望每天将新增数据同步到目标表中,可设置一天执行一次。

点击右上角「调度计划」按钮,设置执行频率。如下图所示:

1710828116120110.png

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

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