润乾报表服务器各版本差异中有个重要指标是非线性报表的数量限制,许多用户都很关心非线性报表的具体含义。
非线性报表严格地讲并不是指某种具体的报表,而是一种制作报表的模型算法。有许多复杂报表采用那些传统报表工具制作起来非常困难(需要编写代码或复杂 SQL 准备数据),而这类复杂报表在国内应用中相当普遍,几乎占到一半以上的数量。而采用非线性模型则可以轻松完成,使制作效率提高 5-10 倍,习惯上我们就将这些复杂报表称为非线性报表。
需要注意的是,非线性报表并非必须采用非线性模型才能制作出来,采用传统方式也能完成,只是工作量很大导致制作成本相当高。润乾报表对非线性报表的数量限制也不是说只能做多少张非线性报表,再多的就不能再做了;而是说只有规定数量的报表可以采用非线性报表模型来做(高效),再多的还可以采用传统方案去做(低效),润乾报表提供了非线性报表模型但并不禁止传统处理方案。取消了非线性报表模型支持的润乾报表(即普及版)在制表效率上与传统报表工具相差不太大(但仍有绘制方便、纯 JAVA 集成简单等优势)。
非线性报表规定为含有多数据集或分片扩展(横向纵向均算)或层次坐标计算(非常规的跨行组运算)的统计表及含有多个更新属性的填报表。如果已经熟悉润乾报表数学模型则很容易精确理解这个定义。
下面仔细谈一下这几个条件。
多数据集报表就是常说的多源报表,传统工具的基本表模型只能支持单数据集(见 关于多数据源的支持 ),而润乾报表可以很方便地支持多数据集。某些报表即可用多集方法也可用单集方法制作出来(相比之下多集方法更简单且运算效率更高),而还有一些报表则只能用多集方法完成。润乾报表在设计时会将数据集都统一列出,当有两个或以上的数据集被在单元格数据表达式中使用过则被认为使用了非线性报表模型,注意是在单元格的数据表达式中,在显示值表达式中使用的多数据集则不被认为是非线性报表(一般在这里应用仅是为了查询字典表改变单元格的显示文字)。
分片报表指报表横向或纵向或双向分成了几个相对独立的区域。而分片扩展则指分片报表中同向的多片中至少有两片是自动扩展出来而非静态行列。注意这里说的两个扩展列是并列的而不是层次的,常规的多层分组或交叉表虽有同向多个扩展区,但却是层次的,因而并不算是非线性报表。
润乾报表特有的层次坐标概念可以对扩展完的报表单元格进行精确命名,籍以完成复杂的格间运算,如计算排名或同期比等,含有这种运算的报表被认为采用了非线性报表模型。而常规的组内求和、计数(可带条件)的普通跨行组运算(包括在多层分组或交叉表中的求和计数等集合运算)则不算作非线性报表。
润乾报表的填报表可以同时具有多个回填目标,同一张报表的数据可以同时回写入多个数据表,如主从表的填写,将同时往主表和子表填入数据。只有一个回填目标(即更新属性)的填报表不算作非线性报表,而含有两个或以上的回填目标的填报表被则算作非线性报表。
一些报表例子:
分片(纵向)扩展的非线性报表
多层分组交叉报表(不算非线性报表)
带层次坐标运算(组内排名)的非线性报表
带层次坐标计算(同期比)的非线性报表