反馈已提交

网络繁忙

FDL触发BI数据集更新

  • 文档创建者:Wendy123456
  • 历史版本:5
  • 最近更新:Wendy123456 于 2026-03-10
  • 1. 概述

    1.1 应用场景

    当前上游数仓(由第三方搭建,非 FDL 搭建)无法保证每日在固定时间完成数据同步。若 BI 数据集采用定时抽取机制,可能获取到未更新的历史数据。

    用户希望上游数仓更新后,再更新 BI 数据集,而不是只能主观设置一个时间点来开始。

    1.2 实现思路

    使用定时任务来监控数仓表是否完成更新,如果已经完成更新,调用 BI 数据集更新接口,触发 BI 公共数据集进行更新。

    注:本方案的前提是数仓表有标识列能识别出数据已经完成更新。

    2. 操作步骤

    2.1 场景模拟

    数仓来源表:

    1773121443370442.png

    数仓目标表:

    1773121549832618.png

    BI数据集:

    7.png

    从上图我们可以得出,数仓表已更新完成,但 BI 数据集尚未更新。

    2.2 方案说明

    8.png

    通过对比数仓来源表的最大时间戳、数仓目标表的最近一次更新时间、BI 数据集的最近一次更新时间,确认是否数仓是否完成更新、BI 数据集是否进行过更新。

    1)获取三个表的时间进行比较

    • 获取数仓来源表最大时间戳,并设置为参数 max_order_timestamp。

    • 获取数仓目标表的最近一次更新时间,并设置为参数 max_etl_time。

    • 获取BI数据集的最近一次更新时间,并设置为参数max_BI_etl_time。

    3 个时间做比较,当max_etl_time>=max_order_timestamp且max_etl_time>=max_BI_etl_time的时候,说明数仓完成更新,且 BI 未更新,此时需要触发 BI 更新。
    2)调用 BI 数据集更新接口触发更新。

    2.3 确定 BI 数据集是否已更新

    2.3.1 获取三个时间值

    1)新建定时任务,拖入「参数赋值节点,获取数仓目标表的最近一次更新时间,输出为参数max_etl_time。如下图所示:

    1773122320733295.png

    2)再拖入「参数赋值节点,获取数仓来源表最大时间戳,输出为参数max_order_timestamp。如下图所示:

    1773122448715756.png

    3)拖入「参数赋值节点,获取BI数据集的最近一次更新时间,输出为参数max_BI_etl_time。如下图所示:

    1773122580998305.png

    2.3.2 判断 BI 数据集是否更新

    当max_etl_time>=max_order_timestamp且max_etl_time>=max_BI_etl_time的时候,说明数仓完成更新,且 BI 未更新,此时需要触发 BI 更新。

    拖入「条件分支节点,再拖入一个「数据转换」节点和一个「虚拟节点,若 BI 数据集未更新,执行「数据转换」节点所在的分支,若 BI 数据集已更新或者数仓未同步,执行虚拟节点。

    32.png

    2.4 更新BI数据集

    1773123269606414.png

    更新 BI 数据集需要调用的接口是 触发单表/文件夹更新 接口,该接口调用时需要填入:

    • 请求参数 info :参数值格式为JSON,使用时需要进行编码 encodeURIComponent()。

    • fine_auth_token:需要传递 token 参数。

    2.4.1 获取 token

    进入「数据转换」节点,拖入「API输入算子,调用 前台单点登录接口,获取 token。如下图所示:

    14.png

    由于获取到的数据非标准的 JSON 格式,不便于解析,所以需要处理下。

    2.4.2 获取标准 JSON 格式

    1)拖入「新增计算列算子,新增一个字段,去除 2.4.1 节结果中的 callback 字符串及()

    MID(responseBody,FIND("(",responseBody)+1,FIND(")",responseBody)-FIND("(",responseBody)-1),responseBody为点击输入。

    15.png

    2)点击「数据预览」,可看到新增的字段是标准的 JSON 格式。

    16.png

    2.4.3 解析数据

    拖入「JSON解析」算子,解析字段,获取accessToken、status字段值。如下图所示:

    17.png

    2.4.4 输出为参数

    拖入「参数输出」算子,将accessToken、status字段值输出为参数。

    • accessToken:调用 BI 数据集更新接口时需要用到。

    • status:异常情况下,token 可能获取不成功,需要推送消息通知。

    1773125685379480.png

    2.4.5 判断 token 是否获取成功

    根据 status 参数的值,判断 token 是否获取成功,若获取成功,调用更新 BI 数据集接口,若获取失败,给专人进行通知。

    1)拖入「条件分支节点、数据转换节点、消息通知节点,若 status 参数值为成功,执行数据转换节点所在的分支,否则,执行消息通知节点。

    1773126025491554.png

    2)若 token 获取失败,可通知给对应负责人。

    1773126093687554.png

    2.4.6 对需要更新的数据集进行编码

    更新 BI 数据集需要调用的接口是 触发单表/文件夹更新 接口,该接口调用时需要填写 info 参数。

    1773126205884821.png

    「文件夹ID获取方法:点击BI数据集所在的文件夹,在标签页中可看到文件夹ID。

    22.png

    1)进入「数据转换1节点,拖入「DB表输入算子,为生成 info 参数做准备。

    23.png

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

    1773126443263381.png

    2)拖入 Spark SQL 算子,对 info 参数进行编码。

    1773126519584539.png

    3)拖入「参数输出」算子,将编码后的参数输出。

    1773126580337109.png

    2.4.7 调用 BI 数据集更新接口

    1)拖入「数据转换」节点,进入数据转换节点后,拖入API输入算子,调用 触发单表/文件夹更新 接口。

    27.png

    2)拖入「新增计算列算子,输出当前时间和BI数据集名称:

    注:该步骤和后续步骤可不做,API输入算子后可后接一个参数输出算子,任意输出一个参数即可,用户根据实际情况判断是否需要一张表记录BI数据集的更新时间和数据集名称。

    • 触发更新时间:可作为 BI 数据集更新时间,该字段可在 2.3.1 节用到。

    • 表名:记录BI数据集的名称。

    29.png

    3)拖入「DB表输出算子,将当前时间和BI数据集名称输出到一张数据库表中。

    30.png

    2.5 效果查看

    可为该定时任务设置执行频率,比如每五分钟执行一次。

    当数仓目标表同步完成,且BI数据集未更新时,会更新BI数据集。

    31.png






    附件列表


    主题: 最佳实践
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭



    AI

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