报表系统开发初探
2020.6.7
总体思路
1、自研 使用web端可拖拽特性直接生成线上报表,优点是自定义样式,缺点是维护和开发工作量较大。
2、开源系统二次开发 (1)基于BIRT报表或者iReport + JasperReports组合开发。优点是开发和操作较简单,缺点是不支持复杂报表和权限控制,维护性较差。 (2)基于Airbnb 的 Superset,Redash,Metabase等框架做二次开发。优点是界面设计友好,缺点是扩展性较差。
3、付费 如帆软和思迈特报表系统,优点是支持丰富的业务场景复杂报表,维护和开发成本较低。
一、自研
二、开源系统二次开发
(一)java报表工具
1、 BIRT报表 BIRT是一个Eclipse-based开源报表系统。
优点:
(1)开发和操作简单。
(2)能够很方便的将很多数据混合在一个表格中。
缺点:
(1)BIRT没有权限方面的辅助功能,需要自己写实现语句实现权限控制。
(2)BIRT的报表设计界面是传统的条带式界面,在设计报表样式,需要的行和列需要画出;对表头比较复杂的中国式报表来说,各种行列对齐也比较复杂;
(3)不支持excel的行列无限扩展,表现之一是不支持XLS,这对习惯了excel的用户不友好。
(4)没有表单功能,不能对数据做筛选。
(5)没有移动端平台支持。
2、 iReport + JasperReports报表系统
JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。 iReport 和jasperreports是天生一对,是转为后者开发的纯java的可视化报表设计器。
优点:
(1)iReport 允许用户可视化编辑包含charts、图片、子报表等的复杂报表。
(2)iReport 还集成了JFreeChart图表制作包。
(3)允许用户可视化地编辑XML JasperDesign文件。
缺点:
(1)iReport + JasperReports报表设计模式为可视化制表模式,制表界面为条带填入式,对中国式复杂报表的制作友好度比较低;
(2)不支持EXCEL模板导入;
(3)格式对齐非常困难;对字体等其他格式的调整也非常麻烦,一般一个简单的font就要一堆代码来设置;
(4)表格中的表达式也不能随着行列变化而实现自动调整,
(5)不支持移动端报表展现。
(6)iReport版本5.5.0之后,终止新功能的开发,可维护性较差。
(二)java和web混合
3、Airbnb 的 Superset
优点:
(1)可视化的选项较多,比如只要定义了Date字段,可以方便的在不同时间维度做Aggregation(日/周/月)。在显示指标的折线图时,可以与某段时间之前的指标在一张图上做对比。或是在折线图上显示一个指标的rolling averages。这些在做指标分析时挺有用的。
(2)可以在多个时间维度上观察,因为商业分析中的很多问题都是与时间密切相关的。
缺点:
(1)每一张用的表,都需要Sources -> Tables里定义。每一个用到的指标也需要定义。
(2)SQL Lab虽然可以做adhoc query的可视化,但每次都会生成一堆临时table,把Sources -> Tables里面的对象搞得很乱Dashboard不能分类,多了以后很难管理和查找权限系统特别复杂,而且不好用。
(3)Dashboard不能分类,多了以后很难管理和查找。
(4)权限系统特别复杂。
4、Redash
优点:
(1)理念很简单,就是把一个SQL Query的结果可视化。不需要像Superset里定义一堆东西之后才能用。
(2)SQL Query可以定制参数。比如一个App的日活指标,可能有时要按iOS/App切分,有时要按地域切分,或是按新老用户切分。在Superset的Dashboard上我要做三个图。Redash里我可以把Query的groupby做为一个参数,这样就可以在一张图上搞定。用的时候,可以在一个Dropdown List选切分的方式。
(3)数据源方面除了支持SQL以外,还支持ElasticSearch, Google Analytics, Google Spreadsheet, URL (JSON-Format)等。
缺点:
(1)可视化的选项不如Superset多。
(2)Redash对于非技术的人员相对Superset不友好。因为Redash需要报表设计者直接写SQL。不过实际上即使是Superset大部分运营和产品的人也只会看现成的Dashboard,很少有人会自己构建图表。不提供centos安装脚本,内嵌到网页不便。
5、Metabase
Metabase可以帮助你把数据库中的数据更好的呈现给更多人,数据分析人员通过建立一个”查询“(Metabase中定义为Question)来提炼数据,再通过仪表盘(Dashboards)来组合展示给公司成员。
优点:
(1)开源免费。
(2)工具轻量、安装依赖的环境简单、配置简单清楚。
(3)容易上手,操作门槛低,不会sql语句也能使用。
(4)支持对外共享,权限控制。
(5)Question可以便捷地创建图表,Dashboards界面整洁美观。
缺点:
(1)Question每次只能对数据库中的一张表进行查询,切换数据表已有的查询选项会重置。
(2)填写了sql语句的sql查询(Native query)模式不能转到点选查询(Custom)模式。
(3)不能在Metabase中自由转换数据表中字段的属性。
(4)可创建的图表类型较单一。
总结框架二次开发 :
前端框架:React + Redux等相关框架,基于yarn的开发环境,webpack构建
后端开发:metabase后端语言采用clojure,Ring和toucan等开发框架
三、付费系统
1、 帆软报表FineReport 国内报表软件领域发展最成熟也是市场份额最高的。FR报表的设计风格和Excel相似(当然二者本质并不一样),整个设计窗口是格子式的可视化编辑界面。
优势:
(1)零代码开发,web版的类似excel的设计方式,上手简单。
(2)数据填报功能:自认为这个报表的两个核心是填报(往数据库填入数据)和数据展示。填报:避免了excel收集数据混乱,还能开发各种各样的流程表单数据展示:打印、导出、数据报表分析移动端报表+可视化大屏,FR做大屏有先天开发优势。
2、思迈特 目前国内做的比较好的报表开发平台之一,很多金融公司如银行、保险和基金等公司在用。缺点是设计器是excel,有时会需要写脚本,维护较复杂。
3、BDP 个人用户首选,在线web编辑器设计,指标采用拖拽形式,快速生成报表展示界面。企业用户功能不了解。
来源:oschina
链接:https://my.oschina.net/u/4314362/blog/4305913