在数据同步时,为了保证数据时效性,有时我们需要对数据定时进行增量更新,比如每天将新增的一部分数据(来源表)更新至目标数据表中。
数据的增量更新可以根据用户的实际数据情况分为三种:
来源表有时间戳字段;
来源表没有时间戳字段,但是有唯一标识;
来源表没有时间戳字段,并且没有唯一标识。
本文示例可参见:https://demo.finedatalink.com/ 「02场景案例>更新专题」
若来源表有时间戳,可以使用参数赋值获取目标表时间戳最大值,再使用数据同步获取增量数据做增量更新。
例如数仓调度方案设置DW层任务中,需要将 FDLDemo 数据库中 demo_ods_huabeicaiwu 来源数据表新增的数据同步至 FRDemo 数据库的 dw_caiwu 目标数据表中。
由于来源数据表demo_ods_huabeicaiwu中包含时间戳订单生成时间,因此可以判断 dw_caiwu 数据中最晚的订单生成时间是否晚于demo_ods_huabeicaiwu 数据表的订单时间,将满足条件的数据取出并通过数据同步同步至 dw_caiwu 目标数据表中。
使用参数赋值,取出 dw_caiwu 中最晚订单生成时间,并将其设置为 time 参数,如下图所示:
新建数据同步节点,将demo_ods_huabeicaiwu数据取出,并使用time参数,如果demo_ods_huabeicaiwu数据中「订单生成时间」晚于 dw_caiwu 数据中最晚订单时间,则将这部分新增的数据同步至 dw_caiwu 数据表中,如下图所示:
也就是来源表有主键或逻辑主键,但是不能通过时间戳进行增量更新。
例如需要将 FDLDemo 数据库中 jdy_order 来源数据表新增的数据同步至 FRDemo 数据库的 order_mubiao 目标数据表中。
由于 jdy_order 来源数据表时间字段不能作为更新标识,并且该数据表有主键 orderid 字段,因此使用使用参数赋值获取目标表 order_mubiao 内唯一标识 orderid ,再获取来源表中存在但是目标表中没有的 orderid (也就是需要同步至目标表的新增数据)对应的数据,将这部分数据使用数据同步,同步至目标数据库 order_mubiao ,完成增量更新。
来源表数据结构如下图:
使用参数赋值,获取目标表 order_mubiao 内唯一标识 orderid,将其作为参数,如下图所示:
再获取来源表中存在但是目标表中没有的 orderid (也就是需要同步至目标表的新增数据)对应的数据,将这部分数据使用数据同步,同步至目标数据库 order_mubiao ,完成增量更新。
建议使用数据管道进行实时增量更新,详情参见:数据管道概述
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
Submitted successfully
Network busy