首页 > 代码库 > 脚本式计算能力对报表工具的重要性

脚本式计算能力对报表工具的重要性

        在报表项目开发中常常会出现自定义数据源的情况。这是因为有很多结构化计算比较复杂,需要多步骤完成。sql或者报表本身的计算能力并不适合完成这种过程化计算,所以报表程序员会借助于报表API,使用Java程序来完成。

        例如这个《各地区销售情况分析表》:

技术分享

        该报表是根据订单表统计各(预置)时间段内,各地区的订单数量、订单金额汇总。其中各时间段范围为:

        1996年圣诞前:date< 1996-12-25

        1996年圣诞--1997年国庆:1996-12-25 <= date <= 1997-10-1

        1997年国庆--1998年五一:1997-10-1 <= date <= 1998-5-1

        1998年五一以后:date>1998-5-1

        这个分段段界包含关系要求:起始和结束两段不包含段界日期,而中间的各个分段则包含段界日期。这样不规则的计算用SQL、报表的计算公式都比较困难。一般就会采用自定义的Java编程解决。

        但是,java程序在结构化计算方面的类库较少,实现上述计算很复杂。而且,java程序和报表模板是分离的,在代码管理上很麻烦。特别是对数据集的少量调整计算,也要折腾Java的开发环境、代码管理、打包部署等,就太麻烦了。

 

        对于这种情况,脚本式计算能力对报表工具的重要性就很明显了:在报表设计器中直接编写计算脚本,可以很好的处理需要对数据集进行少量的调整计算又不适合在报表中完成的情况,比如不规则运算、需要多个步骤完成的计算等,相比外部的Java编程要轻松很多。

        为此,润乾集算报表提供了脚本数据集方案,实现思路是,在脚本数据集中编辑集算脚本,完成数据计算和处理,将加工后的结果作为数据集提供给报表,从而使报表获得数据源再计算的能力,不必在外部编写Java程序。

        脚本数据集和传统方案的结果对比示意图如下:

技术分享

         《各地区销售情况分析表》可以直接在集算报表中编辑脚本数据集,编写集算脚本数据,如下:

技术分享

        其中arg1值:?<="1996-12-25",?>="1996-12-25"&& ?<="1997-10-1",?>="1996-12-25" &&?<="1998-5-1",?>"1998-5-1";arg2值:1996年圣诞前,1996年圣诞--1997年国庆,1997年国庆--1998年五一,1998年五一以后。

        可以看到报表设计、计算脚本编写都在同一个rpx文件中,编程和管理都要比java程序简单很多。


脚本式计算能力对报表工具的重要性