报表是很多 web 应用系统不可缺少的模块,仍然是绝大多数 BI 项目的基础功能。随着数据时代的到来,数据来源越来越多样 (text,excel,monogdb,redis,es…),为报表数据准备带来了挑战,传统做法还是先将库外数据到数据库里,再利用数据库的计算能力(写 SQL 或存储过程)为报表准备数据。因依赖前置导入,报表实时性得不到保障,报表开发流程也被拉长,随着报表需求与日俱增,数据库也越来越臃肿,管理成本不断升高。

但如果直接使用这些库外数据做报表开发,总是费时费力,最终完成的报表,性能往往也不够好。究其原因,熟悉报表开发的程序员都知道,报表工具内只提供运算这类库外数据的几种简单能力,当计算需求复杂时,需要扩展到报表工具外部,用户自定义方式去实现,这类计算通常用高级语言 (Java,.net) 硬编码实现,需要很强的数据编程经验,经常超过了普通报表开发人员的能力范围,用高级语言实现的开发成本很高,并且不可复用。

即便数据在数据库里,计算复杂报表经常需要通过好用的高级窗口函数或存储过程才能实现,这些都是开源数据库(mysql,hive…)的短板,商业数据库这方面要好很多,但实现起来也并不轻松,通常都需要用到 SQL 的高级扩展,各数据库厂商对 SQL 扩展都不尽相同,这就需要精通某种数据库高手才能完成。熟悉各种数据库,进阶成 SQL 高手,并非易事,如何让普通报表开发人员,用相同的方式,轻松搞定这类问题呢?另外,存储过程和数据库耦合在一起,大量使用会给数据库运行带来巨大开销,维护也非常麻烦。

如果能有一种计算引擎,具有和数据库相同的计算能力,不必导入数据,直接计算各种来源的数据,提供通用的高级窗口函数和存储过程,独立为报表准备数据,解决上述难题,将会极大提升报表的开发进度和应用效果。

上述内容就是集算器集成版的设计初衷,下面通过介绍其应用结构,举例说明其易用性,结合开源报表工具展示该产品在报表应用场景下的实用价值。

更多精彩内容,请参阅文档:

提效报表开发的通用工具