大数据时代的数据不仅数量巨大,还会以各种形式存在,具备多样性。对于报表工具来说,就必须从多种多样的数据源获取数据,计算并展现出来。但是,多数报表工具并没有很好的适应多样性数据源。
常见的报表数据源包括:
1、各种关系数据库:oracle、db2、sqlserver、informix、mysql等;
2、MongoDB,Cassandra等NoSQL数据库;
3、JSON、XML数据源;
4、HTTP数据源;
5、文件,常见文本格式,Excel文件;
6、Hadoop HDFS;
7、结构化和半结构化数据。
报表工具要适应多样性数据源,强大、通用的计算能力是关键。
计算能力是指数据源除了存储数据的功能,还能对外提供计算服务,比如:数据的过滤、排序、分组和连接等。上述这些数据源中,只有关系数据库具备较强的计算能力,可以用SQL或者存储过程编写计算脚本。其他数据源要么没有计算能力,要么比较弱。Nosql数据库的计算能力就比关系数据库弱很多,MongoDB不支持join和子查询,查询结果也不能太大。至于文本文件、excel、hdfs、xml文件、json文件和http数据源就完全没有计算能力了。
当然,报表工具一般都提供自定义数据源接口,可以用Java等高级语言来编写数据源的计算程序。虽然理论上具备较强的计算能力,但是Java处理结构化半结构化数据的类库较弱,所以写起程序来是相当麻烦的。
润乾集算报表是新一代的报表工具,内置了集算器作为计算引擎,提供了脚本数据集,具备强大的数据计算能力,无论数据源自身的计算能力如何,都可以很好的适应。
集算器是专业的结构化和半结构化数据计算工具,支持集合运算、对象引用和有序集合等功能。集算器提供丰富的数据计算函数库,可以完成多步骤、复杂的计算。集算报表的设计器中集成了集算器IDE(集成开发环境),可以单步、断点调试、观察计算结果,有效提高开发效率。
脚本数据集是集算报表的特殊数据集,可以编写遵循集算器语法的计算脚本,在数据集取数之后,完成数据的加工。适合完成步骤不多,比较简单的数据计算。
在数据连接方面,集算报表内置的集算器可以调用关系数据库和nosql数据库的jdbc驱动,也提供了访问其他各种数据源的函数类库。
在数据计算方面,集算报表可以利用脚本数据集使得没有计算能力的数据源具备计算能力,也可以加强计算能力较弱的数据源,实现比较简单的计算。
更进一步,集算报表可以利用内置的集算器对于多种异构数据进行统一的计算,完美的解决数据源计算能力(特别是混合计算能力)不足的问题。集算器从数据源取数之后,转换成统一的数据对象,再利用丰富的函数类库进行多步骤、复杂的计算。最后通过集算数据集提交给报表展现引擎。
利用集算报表支持多样性数据源的特性,可以搭建多数据源的报表系统,发挥各种数据源的优势,规避各自的缺点。一个比较典型的报表系统数据源结构如下图:
图中的SQL DB建设和运行成本较高,可以用来存放少量的实时数据,比如当天或者当月的数据。数据量小、而且在变动中,对数据一致性要求较高。
本地的文件可以用来存放近期的历史数据,比如本年数据。数据量大、不会发生变动,使用率比较高。
HDFS文件可以用来存放长期的历史数据,比如往年数据。数据量巨大,使用率较低。
Nosqldb、json数据、http数据源则可能是外部系统提供的数据接口,用来读取本系统关心的外部数据。
集算报表通过内置的集算器将所有数据源数据读取计算之后,通过数据集提交给展现引擎,生成内容丰富、图文并茂的报表展现给最终用户。
这样的集算报表系统优势在于:既可以具备很好的数据实时性,又能反映历史数据规律;既能保证大数据存储,又不会造成过大的投资;即能展现本应用内部的数据计算结果,又能查看相关应用系统的数据。