0引言
随着现代信息化技术的飞速发展,报表技术的研究与应用越来越多,如COM组件、ActiveX插件、XML的无插件等技术[1],也涌现出很多成熟的BI工具,如Crystal Report(水晶报表)、Jasper Report、XReport等国外报表工具软件[2],以及用友华表(Cell)、FineBI、SmartBI等国内报表工具软件[2],由以前的C/S模式,发展到现今阶段的B/S模式,用户不再需要安装插件,只需要通过浏览器即可操作,呈现样式也不再是单一的表格,可以进行多样化的图表定制。
本文基于SmartBI,在现有的天然气生产管理系统上设计一套自定义报表工具,用户在浏览器端设计任意格式的报表,通过调用算法库中的函数,获取各类数据,快速配置实现天然气数据的统计分析,并通过权限控制,将统计分析结果共享给相关人员,实现资源共建共享、互联互通。
1自定义报表功能设计要求
基于生产实时数据库,进行自定义报表工具的设计。主要的要求如下:
1) 数据源自定义:自定义报表面向的需求是不可预见的,面向的数据源必须支持市面主流数据库,包括Oracle、Mysql、Clickhouse等,且还需要能通过后台数据查询接口的形式获取数据。
2) 参数自定义:根据数据字段内容,查询的参数可以进行自定义,一般包括数据时间、天然气场站名称、用户名称等。
3) 计算方式自定义:根据度量字段,实现计算方式的自定义,包括合计值、最大值、最小值、平均值、计数、同比值、环比值等。
4) 图表自定义:提供表格、图形多种可视化方式,根据用户的需求自定义选择。
5) 权限自定义:将制作好的报表内容通过自定义权限的形式进行共享,做到权限可控。
2自定义报表技术实现
SmartBI提供了强大的灵活查询与分析能力,丰富的报表展现,业务人员可以快捷的自定义报表,应对需求的不断变化,具有完善的、分层级的权限控制机制,支持大用户数量的访问,提供高性能、高效率的、企业级的灵活查询。支持可视化查询、SQL查询、存储过程查询。系统整体技术架构分为数据层、服务层、展现层,如下图所示。
图 系统整体技术架构图
数据层:支持标准的数据库规范,通过JDBC、XMLA、JAPI与底层数据库交互,支持各种关系型数据库、多维数据库。
服务层:提供系统管理、数据分析、数据查询等服务引擎,形成仪表盘、灵活查询、业务报表、多维分析等,并通过服务总线、API接口对接第三方系统。
展现层:对经过服务层封装后的业务对象进行操作,根据业务需求,业务人员通过简单的页面拖拽操作,可以灵活地使用各种业务元数据,快速地定制可视化查询以实现各种数据逻辑处理。
在技术实现上,SmartBI基于Web2.0技术,前端界面使用html5开发,结合开源的Echarts进行绘图,提供良好的可交互性、终端适应性及技术上的先进性。服务以Tomcat为基础,通过spring技术框架中的hibernate实现与数据库的通信,lucene作为全文检索引擎,以纯JAVA进程的内存缓存框架ehcache实现缓存,通过quartz消息队列进行数据资源的按需消费,有效缓解服务器压力,提高系统稳定性。
3自定义报表功能实现与结果展示
以用户用气数据透视分析为例,主要涉及数据日期、场站全称、客户全称、用气日累、用气旬累、用气月累、用气年累、用气总累。透视分析采用类Excel透视表的方式,任意拖拽字段到行区、列区、度量区、待选列、过滤条件区域等,并支持多维度、多角度钻取、切片、条件筛选、排序、告警、图表联动、复杂逻辑计算等操作。
配置自定义报表关键流程节点如下:
1) 建立数据源:通过业务主题、数据源中的表、数据集将数据库中的数据进行逻辑建模,生成便于业务用户理解的数据,同时设置好数据访问权限。
2) 设置参数:采用拖拽方式,基于数据源包含的字段或业务属性,设置数据查询的参数,达到过滤数据的效果。
3) 行列选择:选择自定义报表需要展现的字段,涉及可选资源区、待选列区、行列度量。其中度量的方式包括合计值、最大值、最小值、平均值、计数、同比值、环比值等。
4) 报表设计:对所选的行列进行排版设计,包括表头、表尾、行头、列头、数据区等内容和样式。
5) 图形设计:图形作为数据的辅助表现而存在,用户可以根据需求酌情选择。可生成柱状图、折线图、线图、饼图等。
6) 定义权限:将定义好的报表进行发布授权,权限的类型分为引用、查看、编辑、再授权、概览,根据实际需求将报表授权给对应的用户。
4结语
自定义报表工具采用Iframe内嵌方式搭建在天然气生产管理系统中,采用B/S模式,利用开源的SmartBI报表工具二次开发,实现集表格、图形为一体的自定义报表。通过业务主题、数据源中的表、数据集将数据库中的数据进行逻辑建模,生成便于业务用户理解的数据,解决大部分用户计算机水平不强的现状,配置简单易操作,呈现形式灵活可修改,大大提高了天然气公司生产运营管理的工作效率。
参考文献
[1] 郭俊佟,基于Web的自定义报表工具研究与实现[D].北京:华北电力大学电气与电子工程学院,2018:6-11.
[2] 崔彦萍,牛智星,司存友 基于算法库的自定义水情报表功能设计与实现[J]. 水利信息化, 2021.06.010.
[3] 唐毅 基于 C#、Grid++ Report 的自定义通用报表模块的设计与实现[J].大众科技,2022.02.24.