反馈已提交

网络繁忙

简道云数据增删改同步至数据库

  • 文档创建者:Roxy
  • 历史版本:24
  • 最近更新:Roxy 于 2024-08-26
  • 1. 概述

    1.1 背景

    某公司大量使用简道云表单进行业务填报,每天产生大量数据。为了与其他系统数据联合使用,这些数据需要定期同步至指定数据库中。

    根据简道云录入表单数据的增删改情况,有以下几种情况:

    • 表单数据每天有新增和删除,同时也会有修改的数据。

    • 子表单数据中没有固定的唯一标识,但是也需要将数据变化更新到数据库中。

    1.2 思路

    将主表单数据和子表单数据分别放到不同的数据库表中:

    • 主表单数据有新增、修改和删除,使用「数据比对」算子+「DB表输出」算子,每天将变化数据同步到数据库表中。

    • 由于子表单数据无法设置联合主键进行数据更新,可以先删除近一段时间(近七天)的数据,再全量同步近一段时间(近七天)的数据。

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「场景案例>数据开发场景>简道云定时取数至数据库」。

    50.png

    2. 操作步骤

    2.1 场景模拟

    简道云表单「报名表」中存放着课程报名信息,每天数据都有可能变化。现在需要定期将这些数据同步至数据库,方便后续进行数据处理和使用。

    2023-04-20 日,删除赵涵的数据,新增张瑶的数据,王娜报名的跆拳道课程数由 19 节改为 15 节。如下图所示:

    12.png

    2.2 方案说明

    将主表单数据同步到 registration_form 表中,子表单数据同步到 registration_form_s 表中。

    1)对于有唯一主键「报名编号」的主表单数据:

    使用「数据比对」算子+「DB表输出」算子,每天将变化数据同步到数据库表中。对于要删除的数据,不实际删除,而是标记他的删除时间。

    2)对于没有主键的的子表单数据:

    先删除近七天的数据,再全量同步近七天的数据。

    2.3 准备工作

    2.3.1 简道云表单字段处理

    在简道云表单接入前,可提前设置字段别名,否则接入到 FineDataLink 中时会使用字段原始名,不便于在 FineDataLink 中进行业务处理。

    进入需要使用表单的编辑界面,选择「数据推送>扩展功能>设置字段别名」,如下图所示:

    17.png

    2.3.2 新增参数

    1)本文示例:对于删除的数据,不实际删除,而是标记他的删除时间。所以需要新增一个参数 deletetime ,值为数据被删除的时间。

    2)相同步骤,新增参数 time1 ,值为 yyyy-mm-dd-7,代表距离当前时间近七天,便于后续步骤筛选出近七天的子表单数据。如下图所示:

    2.4 主表单数据变化同步到数据库

    2.4.1 获取简道云数据

    1)新建定时任务并拖入「数据转换」节点,进入「数据转换」节点。

    2)拖入「简道云输入」算子,获取简道云数据。如下图所示:

    18.png

    3)拖入「字段设置」算子,删除一些不需要的字段。如下图所示:

    19.png

    首次进行数据同步时,可以先使用「DB 表输出」算子,将全量数据进行数据同步写入数据库。如下图所示:

    registration_form 表数据如下图所示:

    2.4.2 获取数据库表数据

    1)由于本文示例不实际删除数据,而是标记他的删除时间。所以存放主表数据的数据库表中需要新增字段 deletetime ,作为标记字段。

    2)添加「DB表输入」算子,读取存放主表数据的数据库表。如下图所示:

    2.4.3 将变化数据同步到数据库表

    1)添加「数据比对」算子,与「字段设置」算子和「DB表输入」算子相连。

    1681903914435828.png

    2)将简道云数据与数据库表数据进行对比,删除数据的标记值为被删除的时间。如下图所示:

    1681905979726549.png

    2.4.4 将变化数据同步到数据库表

    1)添加「DB表输出」算子,将变化数据同步到数据库表。如下图所示:

    注:本步骤中标识字段的值需要与 2.4.3 节标识字段的值相同。

    2)点击「字段映射」Tab,选择标记列。如下图所示:

    28.png

    2.4.5 运行节点

    1)保存后,运行「数据转换」节点。如下图所示:

    1681904343215340.png

    2)保存主表数据的数据库表 registration_form 表信息如下图所示:

    2.5 子表单数据变化同步到数据库表

    由于子表单没有主键,因此我们先删除近一段时间(近七天)的数据,再全量同步近一段时间(近七天)的数据。

    2.5.1 子表单数据首次同步

    参考本文 2.4.1 节内容,在 2.4.1 节基础上,新增「JSON 解析」算子,解析子表单数据。

    1681955475854989.png

    1)简道云输入算子获取简道云数据后,information 字段是 JSON 格式,需要进行解析。添加JSON 解析算子,解析子表单数据。如下图所示:

    44.png

    2)使用字段设置算子删除不需要的字段。DB 表输出算子将数据输出到 registration_form_s 表中。运行数据转换节点后,registration_form_s 表数据如下图所示:

    2.5.2 删除近七天数据

    拖入「SQL 脚本」节点,删除存放子表单数据的数据库表中近七天数据。如下图所示:

    DELETE FROM `demotest`.`regisration_form_s` 
      WHERE updateTime> DATE_SUB(NOW(), INTERVAL 7 DAY)

    2.5.3 更新近七天数据

    1)拖入「数据转换」节点,进入编辑界面。

    2)新增简道云输入算子,获取简道云数据。如下图所示:

    36.png

    点击数据预览,information 字段是 JSON 格式,需要对他解析。

    37.png

    3)拖入「JSON 解析」算子,对 information 字段进行解析。如下图所示:

    38.png

    4)拖入「字段设置」算子,删除不需要的字段。如下图所示:

    5)拖入「Spark SQL」算子,获取简道云表单中近七天数据。如下图所示:

    6)新增「DB表输出」算子,将简道云表单中近七天数据同步到数据库表中。如下图所示:

    7)右键点击「SQL 脚本」节点,选择运行节点及下游」:

    1681907815482165.png

    registration_form_s 表数据如下图所示:

    2.6 定时执行任务

    在调度计划中设置任务定时执行即可。如下图所示:


    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持