反馈已提交

网络繁忙

按日期分表,每天保存当天数据

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

    1.1 应用场景

    API 接口中每天有 20 多万的数据,若落库到同一张表中,随着时间该表数据不断累积,可能造成查询慢的问题。

    希望能按日期分表,每天创建一个新的数据表,保存该天数据。

    1.2 实现思路

    • 根据实际需要从 API 接口中取出今天数据,将数据落库到临时表中。

    • 自定义每天的表名,创建表结构,将临时表中的数据写入新创建的表中。

    • 清空临时表,设置调度频率。

    38.png

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/「API取数-数据每日落库」。

    2. 操作步骤

    2.1 场景模拟

    API 接口中保存着订单数据,且每天新增;希望每天从 API 接口中取出当天包含部分「客户ID」的数据,每天的数据单独保存。

    本文示例中,使用 数据服务 创建的 API 模拟 API 接口,可以通过开始时间、结束时间、客户ID从 API 接口取数。如下图所示:

    1704938642237763.png

    2.2 将每日数据落库到临时表中

    本节步骤,用户可根据实际情况,从 API 接口中取出每天数据,保存到临时表中。

    2.2.1 参数准备

    本文示例中,是取出每天包含部分「客户ID」的订单数据,所以需要向 API 接口中传入每天的开始时间、结束时间、客户ID参数。

    1)新建定时任务,拖入「参数赋值」节点,取出当天的开始日期和结束日期。如下图所示:

    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00') AS start_time,DATE_FORMAT(NOW(), '%Y-%m-%d 23:59:59') AS end_time;

    14.png

    输出参数start_time、end_time。如下图所示:

    1704875219282661.png

    2)由于要从 API 接口中取出当天特定客户ID对应的订单数据,需要将客户ID取出,输出为参数。

    再次拖入「参数赋值」节点,将客户ID输出为参数。如下图所示:

    35.png

    2.2.2 从API中取出数据输出到临时表中

    1)拖入「循环容器」节点,循环容器节点中拖入数据转换节点。

    循环遍历客户ID,从 API 接口中取出客户ID对应的当天数据。「循环容器节点设置页面如下图所示:

    1704858246273526.png

    2)「循环容器」节点中拖入数据转换节点,进入数据转换节点。

    拖入API输入算子,使用 2.2.1 节准备的参数,从 API 接口中取数,每次取出当天某客户ID对应的订单数据。

    1704872510903767.png

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

    可发现,取出的订单数据在 data 字段中。

    31.png

    3)拖入「JSON解析」算子,解析 data 字段,如下图所示:

    21.png

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

    32.png

    4)由于使用客户ID」通过循环容器节点遍历订单数据,若当天订单数据中没有该客户ID对应的数据,临时表中会新增一条空数据,需要把空数据删除。

    拖入数据过滤算子,过滤出订单ID非空的数据。如下图所示:

    1704877138769954.png

    5)拖入「DB表输出」算子,将取出的数据输出到临时表中。如下图所示:

    1704872966410375.png

    写入方式选择追加写入数据。点击右上角保存按钮。

    2.3 创建表名并输出为参数

    准备保存每天数据的表名。

    1)拖入参数赋值节点,自定义表名并输出为参数。

    本文示例中,每天的表名是:test+当天日期,比如今天日期是2024-01-10,表名为:test20240110。

    SELECT CONCAT('test', DATE_FORMAT(NOW(), '%Y%m%d'));

    24.png

    2)将表名输出为参数。如下图所示:

    1704875586912862.png

    2.3 创建表结构

    创建表,表名称为${tablename}表结构与 2.2 节临时表的表结构一样,建议字段顺序也与临时表的相同。

    拖入「SQL脚本」节点,创建表结构。如下图所示:

    1704875627488014.png

    2.4 将临时表数据插入到新建表中

    使用SQL脚本节点,将 2.2 节临时表数据,插入到 2.4 节新建的表中。如下图所示:

    INSERT INTO ${tablename}
    SELECT * FROM linshi

    1704874332659173.png

    2.5 清空临时表

    每天需要将临时表中的数据插入到每天新建的表中,所以每天数据落库后,要清空临时表,方便下次数据落库。

    拖入SQL脚本节点,清空临时表数据。如下图所示:

    TRUNCATE TABLE linshi

    1704874519145913.png

    2.6 效果查看

    点击右上角保存并运行按钮,任务执行成功后,今天特定客户ID的订单数据已被取出,如下图所示:

    1717660205726416.png

    2.7 设置执行频率

    点击任务控制,在调度配置Tab下配置执行频率。如下图所示:

    1704940483440813.png





    附件列表


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

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

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

    不再提示

    10s后关闭



    AI

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