反馈已提交

网络繁忙

数据比对后更新目标表时间列

  • 文档创建者:Wendy123456
  • 历史版本:12
  • 最近更新:Roxy 于 2024-06-04
  • 1. 概述

    1.1 应用场景

    用户希望来源表的增删改同步到目标表的同时,目标表的 update 字段能记录数据变化时间。

    「数据比对」算子可以进行增删改标记,通过自动生成 fdl_comparison_type 标记列,记录标识值。但是标记值被记录在 fdl_comparison_type 字段中时,在标记删除数据时,无法同时更新目标表中的 update 字段记录数据变化时间。

    1.2 实现思路

    1)将来源表的增删改同步到目标表。

    使用「数据比对」算子。

    2)目标表的 update 字段能记录数据变化时间。

    使用新增计算列算子,新增 update 字段,值为当次任务运行时间;使用数据分发算子,把标记 Added、Changed 的数据在「DB 表输出」算子中做插入更新;把标记 Removed 的数据在「DB 表输出」算子中做更新操作,以便在标记删除数据的同时,能够把数据变化时间记录在 update 字段中。如下图所示:

    最后效果如下图所示:

    注:如下图黄色区域所示目标表中的删除数据,除逻辑主键、update、fdl_comparison_type 字段外,其他字段值为空(下图 ID 为1005、1006 的数据)。用户根据实际需求选择是否使用本文方案。

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 中定时任务:「数据比对后更新目标表时间列」

    2. 示例

    2.1 场景模拟

    示例数据下载:来源表.xls目标表.xls

    现在来源表中删除了「甘蔗」和「冻梨」的数据,增加了「葡萄」的数据,更新了「菠萝」的数据。希望将最新数据同步到目标表表中,且数据变化的时间更新到目标表的 update 字段。

    2.2 目标表准备

    每次数据更新,是把来源表的数据和目标表中没有删除记录的数据做比较,所以目标表中需要新增一列标记列,标记数据变化。

    由于「数据比对」算子中会自动生成 fdl_comparison_type 标记列,记录标识值,所以目标表中新增一列,字段名为 fdl_comparison_type ,值为空,统一由fdl_comparison_type 记录标识值。如下图所示:

    2.3 取出来源表和目标表数据

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

    2)拖入「DB表输入」算子,算子名称修改为来源表,取出来源表数据。如下图所示:

    3)拖入「DB表输入」算子,算子名称修改为「目标表」,取出目标表中没有删除记录的数据。如下图所示:

    注:本文示例使用的 MySQL 数据库,用户根据实际情况修改 SQL 语句。

    SELECT ID,name,sales FROM `demo2`.`目标表` where fdl_comparison_type != 'Removed' OR fdl_comparison_type is Null

    2.4 设置数据比对

    1)添加一个数据比对算子,并使用线条跟它上游的两个DB表输入算子相连。

    2)数据比对算子中,设置逻辑主键比对字段即可。如下图所示:

    各设置项介绍如下表所示:

    设置项
    说明本文示例
    比对源
    自动生成
    -
    逻辑主键用于在两张表中识别同一条数据,即通过「逻辑主键」将来源表和目标表的数据对应起来,所以「逻辑主键」的值不建议为空或者相同ID
    比对字段

    用于对比两张表中该字段的差异,基于比较结果会自动生成标记列 fdl_comparison_type ,该列可以在「DB表输出」算子的「字段映射」中删除

    若某个字段被设置为比对字段:可以识别出该字段对应数据的新增、更新、删除

    若某个字段没有被设置为比对字段:能识别出该字段的增加和删除,但这个字段若存在更新,将不能被识别

    本文示例中,变化的数据列为 sales 列,所以比对字段设置为 sales 
    标识关系标记列 fdl_comparison_type 的值,用于标记两张表中同一个字段的差异。默认值为:Identical(相同)、Changed(更新)、Added(新增)、Removed(删除),可以自定义标识关系值不做修改,默认即可
    比对表返回字段1)可选项为比对表的所有字段,一般情况下默认为空,无需设置

    2)当「数据比对」算子连接的比对表算子类型为 简道云输入 时,需要设置比对表返回字段的值为_id

    使用场景请参见:简道云输出

    无需设置

    「数据预览」Tab 页如下图所示,可看到数据变化都已被标记字段 fdl_comparison_type 标记出来。


    2.5 新增一列记录当次任务运行时间

    拖入「新增计算列」算子,新增一列 update ,值为 now() ,为当次任务运行时间。如下图所示:

    点击「数据预览」,如下图所示:

    1691134823552215.png

    2.6 设置数据分发

    1)拖入两个「DB表输出」算子,修改DB表输出算子名称。如下图所示:

    2)右键点击新增计算列,点击数据分发,设置标识值不是 Removed 的数据流向DB表输出-新增/更新算子;标识值为 Removed 的数据流向DB表输出-删除算子。如下图所示:

    1691137494216663.png

    2.7 设置数据输出

    2.7.1 设置新增/更新数据的流向

    说明:

    标识值为 Added、Changed 的数据如下图所示:

    1691137664510233.png

    本节设置DB表输出-新增/更新算子,将新增、更新数据更新到目标表中。

    具体设置:

    写入方式选择「插入/更新/删除数据」,选择插入、更新,逻辑主键选择 ID ,标识字段默认为 fdl_comparison_type ,标识值需要与「数据比对」算子的「标识关系」值一一对应。如下图所示:

    2.7.2 设置删除数据的流向

    说明:

    标识值为 Removed 的数据如下图所示:

    1691137892864363.png

    本节设置DB表输出-删除算子,将删除的数据更新到目标表中

    具体设置:

    写入方式选择「插入/更新/删除数据」,选择更新,标识值为 Removed ,逻辑主键选择 ID ,标识字段默认为 fdl_comparison_type 。如下图所示:

    2.8 效果查看

    1)运行任务,任务运行成功后,如下图所示:

    2)目标表数据如下图所示,可看到新增、修改、删除的数据已同步到目标表中,且 update 字段也已更新。

    附件列表


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

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

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

    不再提示

    10s后关闭



    AI

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