反馈已提交

网络繁忙

FR模板展示FDL定时任务信息

  • 文档创建者:Wendy123456
  • 历史版本:17
  • 最近更新:Wendy123456 于 2023-09-15
  • 1. 概述

    1.1 应用场景

    公司中有许多成员使用 FineDataLink 开发定时任务,若成员 A 修改了定时任务 1 没有通知成员 B,成员 B 运行定时任务 1 的时候运行报错或数据不对,B 不知道是谁做的修改以及修改原因。成员 B 若是对定时任务 1 再做修改,不知道会对成员 A 造成什么影响。

    因此,希望使用看板展示所有定时任务的运行信息,可通过搜索对应的任务名称,查看该任务编辑人员、最近编辑时间。

    1.2 实现思路

    对 FineDB 数据库的 fine_dp_conf_entity_xfine_dp_operate_history 表进行数据处理。

    • 取出 fine_dp_conf_entity_x 表中的定时任务文件相关配置数据( namespace 字段为 DPFileEntityStore),解析 entity_value 字段得到 createTime(定时任务创建时间)字段。其中 createTime 为时间戳格式,为方便查看需转化为日期格式。

    • 取出 fine_dp_conf_entity_x 表中的定时任务定时调度配置数据( namespace 字段为 DPAttributeStore解析 entity_value 字段得到 scheduleOpen(是否开启调度字段。

    • 取出 fine_dp_operate_history 表中编辑定时任务的数据(operate_type 字段为 EDIT),得到 operate_user(编辑人员)、task_name(任务名称)、task_path(任务路径)、operate_time(任务保存或修改时间)字段。其中 operate_time 为时间戳格式,为方便查看需转化为日期格式。

    • 将上面三张表数据关联,筛选出有效数据后,进行输出。

    • 使用最终输出的表数据制作 FineReport 模板。

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 中的定时任务:「FR模板展示定时任务信息」

    26.png

    使用 FDL 输出的数据,制作的FineReport 模板如下图所示:

    1691657715951731.png

    2. 示例

    注:本文第二章步骤适用于下载 4.0.25 及之后版本的安装包的工程,升级到 4.0.25 及之后版本或 4.0.25 之前版本方案略有不同,详情可参考本文第三章。

    2.1 准备工作

    1)由于要读取 FineDB 数据库中的 fine_dp_conf_entity_x、fine_dp_operate_history 表信息,需要有 FineDB 的数据连接使用权限。

    注:FineDB 数据库简介请参见:FineDB 数据库简介

    2)了解 fine_dp_conf_entity_x 字段含义、了解 fine_dp_operate_history字段含义

    2.2 获得任务创建时间字段

    取出 fine_dp_conf_entity_x 表中的定时任务文件相关配置数据( namespace 字段为 DPFileEntityStore),解析 entity_value 字段得到 createTime(定时任务创建时间)字段,由于 createTime 字段为时间戳格式,将他转换为日期格式方便查看。

    2.2.1 取出定时任务文件相关配置信息

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

    2)使用「DB表输入」算子,从 fine_dp_conf_entity_x 表中取出定时任务文件相关配置数据。如下图所示:

    注:根据实际情况修改下方 SQL 语句。

    SELECT * FROM `xiangmu1`.`fine_dp_conf_entity_x` where namespace = 'DPFileEntityStore'

    7.png

    2.2.2 解析 entity_value 字段

    entity_value 字段为 JSON 格式,需进行解析。

    使用「JSON解析」算子解析 entity_value 字段,勾选「解析后保留所有上游输出字段」,若不勾选该按钮,解析后只有 entity_value 字段解析后的数据;JSON 节点选择 id(文件id)、createTime(定时任务创建时间)。

    由于解析的 id 字段与已有字段重名,将覆盖已有字段数据。所以解析后字段名称中,将 id 修改为任务ID

    如下图所示:

    8.png

    2.2.3 转换任务创建时间

    2.2.2 节中,解析后的 createTime 字段为时间戳格式,需要转换为日期格式,方便查看。

    拖入「Spark SQL」算子,将时间戳数据处理为日期格式。如下图所示:

    注:表名为上游节点的名称;语句不能直接复制,「JSON解析」需点击生成。

    select *,from_unixtime(cast(JSON解析.createTime/1000 as bigint),'yyyy/MM/dd HH:mm:ss') from JSON解析

    9.png

    点击数据预览,效果如下图所示:

    1691646524836327.png

    2.2.4 删除不需要字段

    新增「字段设置」算子,将 2.2.3 节生成的日期格式的字段重命名为任务创建时间只保留任务ID字段和任务创建时间」字段。如下图所示:

    注:保留「任务ID」字段,方便与其他表左右关联。

    11.png

    2.3 获取定时任务设置的调度信息

    取出 fine_dp_conf_entity_x 表中的定时任务定时调度配置数据( namespace 字段为 DPAttributeStore),解析 entity_value 字段得到 scheduleOpen(是否开启调度)字段。

    步骤与 2.2 节类似。

    2.3.1 取出定时任务定时调度配置信息

    使用「DB表输入」算子,从 fine_dp_conf_entity_x 表中取出定时任务定时调度配置数据。如下图所示:

    注:根据实际情况修改下方 SQL 语句。

    SELECT * FROM `xiangmu1`.`fine_dp_conf_entity_x` where namespace = 'DPAttributeStore'

    12.png

    2.3.2 解析 entity_value 字段

    entity_value 字段为 JSON 格式,需进行解析。

    使用「JSON解析」算子解析 entity_value 字段,勾选「解析后保留所有上游输出字段」,若不勾选该按钮,解析后只有 entity_value 字段解析后的数据;JSON 节点选择 id(文件id)、scheduleOpen(定时调度是否开启);

    由于解析的 id 字段与已有字段重名,将覆盖已有字段数据。所以解析后字段名称中,将 id 修改为「任务id」;scheduleOpen 字段重命名为是否开启调度

    注:用户根据实际场景,判断下方图片第五步骤时勾选哪些节点。

    如下图所示:

    13.png

    2.3.3 删除不需要字段

    新增「字段设置」算子,只保留「任务id」字段和是否开启调度」字段,其余字段删除。如下图所示:

    14.png

    2.4 取出定时任务编辑数据

    取出 fine_dp_operate_history 表中编辑定时任务的数据(operate_type 字段为 EDIT),得到 operate_user(编辑人员)、task_name(任务名称)、task_path(任务路径)、operate_time(任务保存或修改时间)字段。

    2.4.1 读取 fine_dp_operate_history 表数据

    当 fine_dp_operate_history 表中,operate_type 字段值为 EDIT 时,为编辑定时任务的数据。

    取出 fine_dp_operate_history 表中编辑定时任务的数据。如下图所示:

    16.png

    2.4.2 转换任务编辑时间

    operate_time 字段为保存/修改的时间,是时间戳格式,为后续方便查看,需转换为日期格式。

    拖入「Spark SQL」算子,将时间戳数据处理为日期格式。如下图所示:

    注:表名为上游节点的名称;语句不能直接复制,「DB表输入2」需点击生成。

    select *,from_unixtime(cast(DB表输入2.operate_time/1000 as bigint),'yyyy/MM/dd HH:mm:ss') from DB表输入2

    17.png

    2.4.3 删除不需要字段

    新增「字段设置」算子,删除不需要字段并给某些字段重命名。如下图所示:

    18.png

    字段名
    操作
    id
    删除
    operate_time删除
    operate_type删除
    operate_user重命名为「编辑人员」
    task_id-
    task_name重命名为「任务名称」
    task_path重命名为「任务路径」
    task_type删除
    from_unixtime(CAST((operate_time / 1000) AS BIGINT), yyyy/MM/dd HH:mm:ss)重命名为「任务保存或修改时间」

    2.5 数据关联

    将 2.2 节、2.3 节、2.4 节的数据进行关联。

    拖入「数据关联」算子,「字段设置」与「字段设置1」左关联,生成的表与「字段设置2」左关联。如下图所示:

    19.png

    2.6 筛选有效数据

    2.5 节关联后的数据,部分数据中「任务id1」与「task_id」字段为空,需要筛选出这两个字段非空的数据。

    拖入「数据过滤」算子,设置如下图所示:

    20.png

    2.7 输出数据

    1)拖入「DB表输出」字段,输出数据。如下图所示:

    21.png

    2)点击「字段映射」,删除「任务id1」与「task_id」字段。

    2.8 效果查看

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

    22.png

    2)数据库表数据如下图所示:

    1691654145786894.png

    3)使用数据库表数据做 FineReport 模板,筛选任务名称查看该任务的创建时间、编辑人员、所在路径、保存或修改时间等。如下图所示:

    1691655413295826.png

    3. 注意事项

    本文 2.2 节取出 fine_dp_conf_entity_x 表中的定时任务文件相关配置数据( namespace 字段为 DPFileEntityStore),entity_value 字段在不同版本解析后字段不同。

    4.0.25 及之后版本,entity_value 字段如下图所示:

    1691717699275626.png

    4.0.25 之前版本,entity_value 字段如下图所示:

    1691717610979815.png

    其中,上图中的 id 和 fileId 代表的含义相同,都为文件 id 。

    3.1.1 FDL 为 4.0.25 之前版本

    本文 2.2.2 节步骤中,选择 JSON 节点时选择  fileId 和 createTime 即可。

    3.1.2 FDL 为 4.0.25 之前版本升级到 4.0.25 及之后版本

    此时取出 fine_dp_conf_entity_x 表中的定时任务文件相关配置数据( namespace 字段为 DPFileEntityStore)后,entity_value 字段如下图所示:

    1691718028984762.png

    可以使用两个「数据过滤」算子,分别过滤出包含 fileId 和包含 id 的数据,获得定时任务 id 和 createTime(定时任务创建时间)后,左右关联即可。其余步骤与本文第二章相同。



    附件列表


    主题: 最佳实践
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

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

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

    不再提示

    10s后关闭

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