1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 问题描述
FineReport 11.0 采用了帆软全新开发的 Swift 引擎,以便更好的记录分析 LogDB 数据库的性能,但是目前 Swift 引擎未完善对其他数据库的支撑。所以面临这样的现状:
FineReport 11.0的 LogDB 数据库无法直接迁移
直连内置的 LogDB 数据库进行增强分析,有 SQL 语句的限制,有些 SQL 写法不支持。
1.3 解决方案
用户可以通过定时调度的定时填报任务,来实现和 LogDB 数据库迁移一样的效果。
2. 示例
2.1 获取 LogDB 数据库数据
打开设计器,点击「服务器>定义数据连接」,新增一个 JDBC 数据连接,设置信息如下表所示:
选项 | 内容 |
---|---|
数据库 | Others |
驱动器 | com.fr.swift.jdbc.Driver |
URL | jdbc:swift:emb://default(Mac、Windows、Linux通用) |
用户名和密码 | 空 |
设计器设置页面如下图所示:
2.2 新建本地数据库
对照 2.1 节查看到的 LogDB 数据库的表结构,在自己的数据库建立对应的表结构,表结构请参见:报表日志 LogDB 数据库(2.3节)
本文仅示例在本地 MySQL 数据库下fine_record_execute表的建立,如下图所示:
注:由于不同版本的LogDB数据库的字段结构不完全相同,因此请尽量参考需要抽取的工程的LogDB数据库创建,确保一致性。
2.3 数据连接本地数据库
在设计器中建立数据连接,连接 2.2 节创建的迁移数据库,如下图所示:
注:不同数据库对应的连接属性值请参照 数据连接支持范围 。
2.4 新建填报模板
查询内置 LogDB 数据库中的fine_record_execute表数据,并新建如下图所示的报表:
2.5 设置条件属性
用户可根据自己的需求,调整各个字段的展示值,下文仅对time字段进行调整
如下图所示,time字段保存的不是标准日期格式。
将time字段条件属性设置新值,值为TODATE($$$),条件是1=1,保证永远执行,如下图所示:
2.6 设置字段过滤
如需提升性能,可对 time 字段进行过滤,只查询最近一天的数据。过滤公式为TODATE($$$) >= NOW() - 1,如下图所示:
2.7 设置报表填报属性
点击「模板>报表填报属性」,新增「内置SQL」,将单元格与迁移数据库的字段绑定,如下图所示:
注:请勿勾选「未修改不更新」按钮,否则无法填报数据到数据库。
2.8 建立定时调度任务
点击「服务器>报表平台管理」,使用管理账号登录数据决策系统,点击「管理系统>定时调度」,新建LogDB定时抽取任务:
执行频率根据用户需求自行定义,如下图所示:
选择制作的填报模板,类型选择填报,如下图所示:
至此,LogDB 数据库的定时抽取设置就完成啦。