Incremental Data Update and Synchronization

  • Last update: February 14, 2023
  • 1. 概述

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

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

    • 来源表有时间戳字段;

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

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

    本文示例可参见:https://demo.finedatalink.com/ 「02场景案例>更新专题」

    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 数据表中,如下图所示:

    36.png

    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 ,完成增量更新。

    37.png

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

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

    附件列表


    主题: 数据开发
    Previous
    Next
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy