报表工具选型那点事

数据信息化的应用项目中,大都会有报表需求,也通常都要用到报表工具,市面上相关的产品有很多,报表工具,BI 自助报表,大屏可视化,都和报表有关,怎样选对工具,一直是个难题

上网搜索报表工具选型,会出来一堆这样的推荐,其中大多数一看就是广告

imagepng
这些大都写的都很浅,有些甚至是错的,比如对某些产品的功能描述有误,还有的把早已淘汰的工具列出来分析,看了不仅没有帮助,还会被误导,而且很多都是厂家自己的宣传,搞不清楚是否客观,看完以后还是不知道怎么选,重点要考察什么。

其实,业界并没一个权威机构来出这种东西,能找到的选型对比报告,都是有倾向性的。厂家的自不必说,最后肯定是说自己好,用户写的也有倾向,因为需求不同重点不同,而且大部分所谓用户写的选型日记和经验,也都是厂家的马甲
所以,要想客观详实只能自己测,这可能有点费事,但没办法

这里,我们就以前的经验对报表工具选型做一个客观的分析,把一些常见的问题和误区列
出来,看看到底该怎么选,应该注意些什么,参考这些就能自己做出准确的对比了
内容比较多,因为这东西真地也有点复杂

需求要列细致

选型之前,我们要先明确自己的需求,不同需求,可能用的工具不同,考察重点也不同

这里常见的问题是,很多人需求整理的不够细致,只是大概想了下,或者从网上找了点东西,列出来的内容就很粗泛,比如像这样的

imagepng

粗泛带来的问题是没有可考察性,用上面这个列表去考察得到的答案就是谁都支持,没有区分度,那选型也就没有意义了

所以要根据自己的实际情况去深度挖掘需求,尽量细致才可以
比如复杂报表到底有哪些,是格式复杂还是计算复杂,能不能拿着表样去问厂家,而不是简单写一句能做中国式复杂报表
填报是怎么个填法,从 A 表来填回 A 表,还是从 AB 来,填到 CD 呢
数据源具体又会用到什么,厂家是能直连还是提供接口,是否要另外收费呢
只有细致了,才有考察性和区分度,才能选到自己合适的

明确了需求后,我们再继续看怎么选

开源报表能做什么

选工具软件,搞 IT 的首先想到的肯定是不花钱,也就是用开源,看开源能不能做
业界对开源报表工具的态度有点两极分化,较多人都持否定态度,认为开源报表能力太差。但实际上开源报表仍有它的市场,不能一棍子打死
我们来看看它适合做什么

imagepng

简单报表它基本都可以胜任,比如列表,分组,交叉这些格式简单的,计算也简单的,单数据来源,没有跨行跨组这些复杂计算,不需要填报,也没有复杂的打印导出需求,那可以用开源的,能解决问题,还能省一笔费用
但遇上复杂的,尤其是中国式复杂报表,它就基本无能为力了,比如下面这些:
多源分片做不了

imagepng

自由格式的也支持的不好,多层分组交叉,自由同值合并都做不了

imagepng

特殊格式也做不了,比如这种座位蛇形分布图

imagepng

数据跨行跨组计算也不太好做,比如同比环比,总排名,组内排名等

imagepng

归并分组也不支持,比如这种其他项的分组合计

imagepng

数据按段统计也不支持,比如五百元以下,五百元到一千元这些区间段的统计

imagepng
分栏报表也不好做

imagepng

这种 word 报告式的报表也做不了

imagepng

需求中如果有这些复杂报表,那开源报表就搞不了,只能选专业的商用报表工具了

BI 自助报表能做啥

BI 自助报表和开源报表情况类似,如果只有简单报表的需求,是可以做的
比如这些分组,交叉,汇总,平均等简单格式和简单计算的报表,自助报表都可以做

imagepng

而且是业务人员拖拖拽拽就可以做出来,很方便灵活,似乎会非常省事

但是,如果想着有了自助报表功能,就可以不需要技术人员了那也不现实,那很可能是想多了
因为如果需求里有刚才提到的那些复杂报表,BI 自助报表就做不了

做不了就得用专业的报表工具才行

复杂报表都得用专业报表工具才可以,那报表工具都专业吗?

报表工具都专业吗

现在大部分工具都宣称自己能解决中国式复杂报表,但真正能做的,估计都不到一半
如果再考虑制作效率的因素,那就更少了

别人俩小时你得用两天,累积下来会极大的浪费人工成本

所以选型时一定要去实际验证,而不能只听厂家去说,拿自己最难的表去做一下,看看多长时间能做出来,也挨个看看刚才提到的复杂报表能不能做,一般年头比较久的报表工具这个能力会强很多

开发效率很重要

开发效率上商用工具普遍要比开源工具好,因为商用工具大都采用的是类 EXCEL 的设计方式,比开源报表的控件堆叠的方式要高效很多
但商用工具之间效率差异也挺大,而且验证起来挺麻烦,没有捷径,只能是用复杂报表去测试,找格式复杂的,和计算复杂的报表来对比,这个懒还不能偷,因为如果选不好,一个报表慢一个小时,项目多了累积下来就会极大的浪费人工成本,而且还是无形的不易发现
怎样考察报表工具的开发效率?
如果一时找不到测试报表,这里有一套测试案例可供参考

另外开发效率重点要避免这个误区

有些工具会刻意宣传零编码,把很多操作做成可视化编辑,这确实会降低学习门槛,新手体验好,容易上手
imagepng

但是,事后大量开发报表都是熟练工种,面对可视化操作反而会嫌烦,直接在报表内键盘输入表达式的效率要高得多。更关键的是,有些复杂的运算没法可视化编辑,而为了适应可视化编辑又不能让人直接输入表达式,结果反而添乱

移动报表难做吗

现在手机上的应用很多,那么报表工具是不是要专门提供制作移动报表的功能?

imagepng

确实有的报表工具会喊自己特别适合做移动报表,但事实上几乎所有工具都一样,并没有谁更适合。因为移动报表和 PC 端的报表只是分辨率不同而已,只要做的时候控制好分辨率,再加上自适应功能就行。谁都可以做并不需要太多去关注

有些厂商还提供报表 APP,这也没多大用
因为报表都是放到应用系统中看的,如果需要 app,那应用系统就会做 app,报表都符合 H5 标准,直接放到 app 里就可以看,不需要单独再弄个报表 app

统计图要考察什么

报表中除了表格,还有图形可视化,那图形需要考察什么?
统计图,主要是看支持的种类是否全面,以及是否美观

imagepng

不过这个在近几年也没啥可考察的了,因为现在很多报表工具都直接集成第三方的图形包了,比报表厂商自己做的要好很多,比如 echarts,种类齐全,而且非常美观,还不要钱。这一下子就把报表统计图的差异给拉没了。用了 echarts,谁家的都挺好

大屏和报表什么关系

大屏和报表是什么关系,也是一个常见的容易让人犯晕的问题

现在很多报表工具的宣传页常常把这种美观的大屏作为重点宣传项,以此来推荐自己的大屏制作工具
很多人看了就会有疑问,报表和大屏工具是什么关系,大屏工具是必须的吗?

其实,大屏的各个组件都是报表做的

imagepng
比如这个图里的地图和各个统计图,就是一个个组件,先用报表做好,再放到大屏里
大屏工具的作用主要在于页面框架,多少有点用,但并不很重要,而且这事可以手工做,图中这个大屏框架就是

而且大屏工具大都挺贵,如果项目上做的大屏多,买一个确实能提升效率,也比较值,如果只有一两个,那就要考虑性价比了

打印导出注意什么

国内应用项目中,除了纯移动应用外,大多数对打印和导出都会注重,这个考察项需要特别注意
所有报表工具都支持打印和导出,但支持力度却是个问题

不同场景的要求不同,需要的打印导出方式也各式各样,比如 applet 打印虽然快,但有些环境装不了 java,或者浏览器不支持,那就用不了,只能用其他的,有些场景不能用 flash 打印,有些场景必须用 pdf 打印,那就要求报表工具得有完备的能力才可以,比如这些都有没有,不是简单一句支持打印导出就行。自己选型也要调研清楚应用中都需要怎么打印才可以
另外前面提到的图形可视化,很多报表都集成了第三方的统计图,这些非报表工具原生的东西是不是也能正常打印和导出就是个问题了,如果只能看不能打印导出,有可能导致后期的被动尴尬

填报采集考察什么

数据填报采集一般商用工具都会有,需要注意什么呢。
像这些下来日历,树,列表等辅助输入功能,以及各种校验的功能,其实不用太去费心,基本都有

imagepng

重点要看的是处理数据的能力,很多报表工具只支持简单填报,比如从一个关系数据库取数,在填回去,就是一来一去,哪来哪去

但是大数据时代的填报场景的数据来源和去向常常并不这么简单,很可能会要求来源和去向不一致,甚至可能有多个去向

比如报表不同区域从不同库和表取数,然后再填到新的不同库表中
这个功能就不是任何报表工具都有的了,选错了型碰上了就会很头疼

数据准备能力有吗

然后还需要看数据准备能力,就是做表以前为报表准备数据,这是一个很容易被忽略的点

简单报表的数据准备一句 SQL 就搞定了。
但现代报表的数据越来越复杂,常常需要高级工程师写很长的多层嵌套 SQL 、或者用存储过程、中间表甚至是 JAVA 才能搞定,这种手工硬编码的方式会耗费很多的工作量

所以,如果报表工具能提供便捷的数据准备能力,就是一个重要的加分项,用工具取代手工做数据准备,让报表制作过程全部工具化,才能让报表开发的又快又好

多数据源怎么考察

Oracle、DB2、SQL Server、MYSQL、INFORMIX 达梦 金仓 Gbase 等等 列一大堆其实没啥意义,因为只要是关系数据库,写上的没写上的统统都会支持,因为这是世界标准

重点要去看非关系数据库的支持程度,自己用的它是否支持,支持哪些,怎么支持,是直接做好读取功能,还是只给个二次开发的接口,这二者完全不同

支持多源还要支持混合运算,这是刚才提到的数据准备阶段的任务

如果报表工具的数据准备能力太弱,就常常要硬编码或者先用 ETL 处理,都很麻烦

系统功能看什么

软件开发商通常并不需要报表厂商提供平台,因为软件开发商就是做系统的,做平台的

终端用户,或者有些想急着上马来不及搞开发的软件开发商,是有可能需要一个现成平台的
平台的用户组织、权限、调度这些功能其实不用考察,因为只要是报表平台,这些功能一定有
重点要看的是能不能定制开发,甚至是不是开源
因为这些功能与行业习惯和用户需求密切相关,这些统一标准的功能肯定不能完全满足用户需求,都得去改,去完善,所以如果需要系统,能否定制,是否开源让自己改,这些才是考察重点

性能考察哪里

性能是一个比较难考察的项,都说自己好,但又不好验证,该怎么办?

imagepng
报表的呈现周期,大致有这 4 个环节,报表性能问题,其实只有 20% 发生在报表内,也就是后两个环节,80% 都在报表外,也就是前两个环节,所以考察要分两部分,一是看报表本身的性能,二是看它在数据准备和传输环节有没有提速方案。后者才是重点

报表的性能可以用这两个表样来测试

一个是带明细的分组汇总表

imagepng

一个是多数源关联的多源分片表

imagepng
数据量要大一些,这俩报表需要由报表工具实现分组和关联对齐的动作,就会考查出报表本身的计算性能
怎样评测对比报表工具的性能?
这里有更详细的解释

报表外的数据准备和传输性能,首先要看报表有没有数据准备的能力了,没有那就无从谈起了

有的话那就再具体看有没有什么更高效的算法让准备过程计算更快,有没有并行取数能力让传输更快了。有了这些才能保障性能

这些就是报表工具选型的注意事项,希望能对大家有所帮助,也祝大家按照这些重点项,都能选到合适自己的工具