Tapdata 技术博客
Tapdata 技术博客

数据实时同步之多表同步-宽表同步操作指南 | Tapdata

2021-11-09 21:04 Tapdata

在数据实时同步时,经常需要把多张相互关联的表,合并到一张宽表中,以下是利用 Tapdata 进行多表同步的操作指南。

多表同步的场景:


  • 一个车险客户(CAR_CUSTOMER)对应多份车险保单(CAR_POLICY);

  • 一份车险保单(CAR_POLICY)对应多份车险理赔(CAR_CLAIM);

  • 把这三张表,合并成一份车险理赔的宽表 CAR_CLAIM_V1;

  • 源表在Oracle数据库中,目标宽表CAR_CLAIM_V1在MongoDB数据库中。


多表合并成一张宽表


多表同步的步骤:


步骤一:建立主表同步


  1. 从Oracle库中选择CAR_CLAIM表作为【源数据节点】;

  1. 在MongoDB数据库中命名一张车险理赔宽表CAR_CLAIM_V1,作为【目标数据节点】;

  1. 从源数据节点,拉出一条【连接线】连向目标数据节点。

    • 【连接线】-【数据写入模式】:更新已在存或插入新数据。

    • 【连接线】-【关联后写入路径】为空。

    • 【连接线】-【关联条件】:源字段(CLAIM_ID),目标字段(CLAIM_ID)。


{% hint style="info" %}
目标表是在MongoDB中,因为MongoDB的特性,所以不必预先定CAR_CLAIM_V1的表结构
{% endhint %}


使用 tapdata 进行多表同步的操作界面1


步骤二:合并保单表和客户表


  1. 参照上述步骤一,建立车险保单表同步,从Oracle源库CAR_POLICY表,同步到MongoDB目标库CAR_POLICY_V0表。【连接线】设置如下:

    • 【连接线】-【数据写入模式】:更新已在存或插入新数据。

    • 【连接线】-【关联后写入路径】为空。

    • 【连接线】-【关联条件】:源字段(POLICY_ID),目标字段(POLICY_ID)。

  1. 把Oracle源库CAR_CUSTOMER客户表,合并到CAR_POLICY_V0表中。从CAR_CUSTOMER表拉出一条【连接线】连向CAR_POLICY_V0表。【连接线】设置如下:

    • 【连接线】-【数据写入模式】:更新写入。

    • 【连接线】-【关联后写入路径】为空。

    • 【连接线】-【关联条件】:源字段(CUSTOMER_ID),目标字段(CUSTOMER_ID)。


使用 tapdata 进行多表同步的操作界面2


步骤三:合并成理赔宽表


  1. CAR_POLICY_V0是MongoDB的数据集,会自动生成【_id】字段,会与CAR_CLAIM_V1数据集中的【_id】字段产生冲突。所以通过【JS处理】节点,去掉【_id】字段。

  1. 【JS处理】节点脚本如下:


function process(record){ // Enter you code at here record.remove("_id"); return record; }


3.   从CAR_POLICY_V0表,拉出一条【连接线】连向上述【JS处理】节点进行处理


4.   从【JS处理】节点拉【连接线】连向CAR_CLAIM_V1表,【连接线】设置如下:


  • 【连接线】-【数据写入模式】:更新写入。

  • 【连接线】-【关联后写入路径】为空。

  • 【连接线】-【关联条件】:源字段(POLICY_ID),目标字段(POLICY_ID)。


使用 tapdata 进行多表同步的操作界面3


Tapdata Real Time DaaS 是集数据实时同步,可视化 ETL 及数据开发、数据治理及低代码 API 发布为一体的实时数据服务平台,支持私有化部署。免费试用tapdata.net‍  

查看完整产品文档:https://tapdata.net/docs-tapdata-enterprise.html


推荐阅读