报表工具对比选型系列—多样性数据源支持度

本次仍然评测这几款主流的报表工具:润乾报表、帆软报表、Smartbi、永洪 BI、亿信。之前在多源关联分片报表中验证了各个报表工具的多数据源关联功能,这些产品都能支持多数据源,但对不同类型数据源的支持程度并不一样。目前常用的关系型数据库基本上都提供 jdbc 接口,所有报表工具都支持,这里就不做详细说明,下面主要看下几种数据源的支持情况:

1、 文件数据源,如 Excel、txt、csv 等。

2、 webservices 接口数据源,如服务返回的 json 或 XML 格式数据

3、 非关系型数据库,如 mongodb、ElasticSearch、多维数据库等

润乾报表

1、 文件数据源,润乾报表提供文件数据集,可以直接读取 Excel、csv、txt 等格式的文件,读取时还可以设置数据过滤条件、分组聚合字段等。润乾报表内置的计算引擎,不仅可用于报表中的过程计算,还可用于数据文件的读取。比如除了上边介绍的几种类型之外,使用计算引擎还能读取 xml 及 json 格式数据。更重要的是,在计算引擎中提供了分段并行读取、返回游标等功能,当数据量大时,有更高的读取效率,并且能支持远程服务器上的文件。

2、 润乾报表在计算层中提供了读取 http 服务返回的文件,这样 webservices 返回的 json 格式数据可以通过内置的函数直接读取并解析,特别还能支持多层 json 和 XML 格式数据,在实际应用中,http 返回的可能是 excel、txt 等其他格式数据,同样也能够解析并返回给报表使用。

3、 针对非关系型数据库,润乾报表提供了外部库功能,只需要加载匹配的外部库 jar 包以及使用对应的函数,就能实现非关系型数据库的读取,目前支持外部库包括:阿里云、Elasticsearch、hive、spark、hbase、redis、cassandra、informix 数据库、连接 hdfs 文件系统、多维数据库、webservice、sap、kafka 系统、mongodb 数据库、抓取网页数据等。

帆软报表

1、 文件数据集,帆软报表提供文件数据集,支持 Excel、txt、xml 三种文件格式,可以直接读取对应格式文件的数据, 但不能设置过滤规则以及分组汇总等,数据要全部加载到报表内在单元格中处理。帆软报表也支持远程文件数据集,可以将文件放到远程服务上,数据集中可以直接设置文件的 url,也可以自己写个 jsp 的文件下载页面做灵活控制(帆软提供了例子),新建文本数据集时设置这个 jsp 的 url。文件读取解析是比较常用的逐行读取并且不支持过滤等,数据量大时,性能难以保证。

2、 帆软报表解析 webservices 返回的 json 数据,需要下载 json 数据集插件,按照向导下载安装就行,这样就可以使用 JSON 数据集,使用时输入 URL 等参数信息,就可以直接解析 json 数据,不过这样只能解析简单的单层 json 数据,如果 JSON 格式复杂,那么需要使用 JSON 程序数据集,要写 javascript 语句去解析数据返回,这里技术难度较高。相比于文件数据集,json 数据集是支持读取时数据过滤的。而 webservices 返回 xml 数据时,就需要用文件数据集中的远程文件方式,如果需要 post 方式传递参数,就无法使用了。

3、 针对不同的非关系型数据库,提供了对应的插件,需要在设计器中下载安装对应数据集插件,按照向导下载安装就行,然后按照对应数据集的向导设置数据集就行,目前支持的非关系型数据库包括:Redis、Elasticsearch、InfluxDB、MongoDB、Spider、SAP、多维数据库。

Smartbi

1、 Smartbi 支持的文件数据类型为 Excel、csv、txt,使用时需要将数据文件导入到高速缓存库或关系数据源中,目前关系数据源支持:MySQL、Oracle、DB2_V9、MSSQL,实际上是工具里提供了将文件数据导入数据库的功能,适合一些固定文本数据的使用,如果文本更新较为频繁,限制性就太大了。

2、 webservices 返回的 json 数据或者其他格式数据没法直接解析,需要编写 java 程序自己实现,工具中提供了 JAVA 数据源,解析起来难度较大,需要专业开发人员才能处理了。

3、 非关系型数据库,目前只支持 mongodb 和 Tinysoft,支持类型比较少。

永洪 BI

1、 支持 Excel、txt、csv、log 类型文件,使用时按照向导方式选择相应文件就行,选择文件后,可以对数据进行过滤,分组字段、汇总字段、数据类型转换等设置。

2、 不支持 json 格式的数据,也无法接收 webservices 接口数据。

3、 支持多维数据库、mongodb、Elasticsearch 等非关系型数据库,其余数据库更多借助 jdbc 接口的提供。

亿信

1、 支持 Excel、txt、csv 数据源,和 Smartbi 一样,需要将文件上传导入到自带的数据库中才能够使用,局限性较大。

2、 提供接口数据源,可以配置接口地址,读取 webservices 返回的 json 格式数据,不过这里只能解析单层 json 数据,多层 json 格式数据无法解析。

3、 目前只支持 jdbc 方式连接数据库,没有 jdbc 接口的非关系型数据库暂时还不支持。

总结

从结果来看,对于比较常见的文件数据源,各家工具基本上都支持,不过 Smartbi 和亿信是需要将文件数据导入到相应的数据库中,本质上并不是自行处理的,如果数据变化的话,那么还需要更新数据库中的数据,否则造成数据的不准确,实用性较差。而其余三家都是直接读取文件方式,能够实时读取数据。润乾读取文件还支持有流式和并行读取,数据量大时,效率更高。润乾报表和永洪使用文件数据源时,可以直接基于文件进行数据过滤和汇总等操作,执行效率更高,易用性也更好;帆软只能读入文件,剩下的要在报表中进行设置,易用性和性能上都会差一点。

润乾报表借助于独立的计算引擎,在处理 webservices 返回的接口数据时处理单层和多层 json 格式数据时,只需要通过几个函数就能够实现,而帆软和亿信默认方式只能处理单层的 json 数据,如果要处理多层数据,帆软需要在 javascript 代码中处理,这个有一定技术难度。Smartbi 提供接口方式,要通过 java 程序解析数据,难度更大。永洪更偏向于数据分析,暂时不支持 json 格式数据源。

非关系型数据库目前使用比较广泛,所以也要求报表工具能够连接非关系型数据库,这里润乾和帆软支持最好,实现理念也类似,润乾提供了外部库功能,需要什么库拿相应的更新文件和对应的函数使用就行,帆软是提供了对应的数据集扩展插件,选择对应的库安装使用就行,而其他三家工具更多的是借助 jdbc 方式,虽说现在一些非关系型数据库也封装了 jdbc 接口,但是从实用性和稳定性上来说目前还有待考验。

总体来讲,这方面的能力还是润乾最强,明显胜过其它产品;帆软其次;其它三家都相对较弱,这和之前对复杂报表的评测结果也是类似的。