新一代报表工具–报表设计的革命

四、动态格间运算

  所有的报表工具都会提供一些计算列的功能,在原始数据基础上再计算出一些别的列值或统计值,这是报表展现中是不可缺少的功能。但是,传统工具在计算上的机制是有局限的:

  1.传统工具一般只提供同行内的格间运算和针对某组(或全体)的集合运算,对于常见的跨行组运算则相当困难。

  2.个别传统工具提供了简单的跨行能力,如可以引用上一行数据,而跨组则无能为力。

  3.对于集合运算只提供个别固定的函数,如取第一名、算累计值等,无法组合出的通用集合运算则无计可施,如取第二名、算累计的乘积等。

  4.某些带条件的运算更是无法可想,如计算语文成绩在90分以上的同学的数学成绩总和。

  5.除了有规律的跨行组运算外,报表中还可能会有一些随意的独立格运算,其值可能是报表中的任意几个其它格运算出来,甚至还可能会引用到报表外的数据(比如和数据库中的数据再次运算等),这些都很难实现。

  这些问题的根据原因在于,传统工具没有很好的运算后报表数据命名机制(传统工具只能用列名命名设计阶段的数据单元),很难精确描述数据引用关系,只能写出规律性很强的表达式,但随意的独立格运算会就使传统工具无法处理,而报表外的数据引用更是只能借助脚本或外围应用程序,导致代码极为混乱。而在具有动态格间运算的新一代报表工具中,就可以更加灵活地处理很多报表中的运算问题,可以不受上述种种限制,灵活地进行计算。并且,这种计算不仅可以随意地在数据格间进行,还可以在有数据展开的情况下进行动态的引用。

  我们看两个典型的例子:

  上表是个典型的跨行组运算报表,其中有比上期(跨行)和比去年同期(跨组)运算,这种报表在传统工具中常常必须编程准备数据。

  再比如:

  展现了另一些动态格间运算,如计算排名,需要在同组中数出比当前值大的数的个数。下方的几个独立格中又引用了表格中数据,但又非整组全部引用,而是带了某种条件(前三名),最下方的一个格中还会引用到报表外的数据(北京市的全部销售额不在报表中)。

  这两个报表的样式都不复杂,但这些格间运算会让传统工具非常为难,只能再次依靠程序代码,把数据事先计算好直接往报表里填。而在新一代报表工具中,采用动态格间计算的方法,实现起来将非常简单:

  在计算排名时,C4格使用动态层次坐标表达式=count(B4[`0;`0]{B4>$b4})+1算出当前排名。

    在统计部分,简单的使用了统计表达式的数据过滤来完成,如=sum(b4{c4<=3}),计算排名号码在3(包含)一下的销售额,即总计。

 

上一页:三、不规则划分      下一页:五、行列对称