大数据量报表-big标签展现
为了应对海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题。满足大数据量的报表展示需求,产品提供了列表式大数据展现方式(big分页),用于清单式列表的展现和输出。
实现原理
为了提升报表展现的效率,将分步从数据库取数并展现,每次取m页、每页n行数据,从而避免同时获取过大数据量造成内存占用过大和速度过慢。
这里的n为报表展现时每页的行数,m为每次生成的报表页数,即一次读取m*n条数据。m*n应远小于该报表的总数据量。另一方面,如果m取值过小,则会造成取数次数过多,效率也会比较低。
一次读取多页数据的另一作用是向后翻页在大部分情况下可以不必重新取数,提升用户体验。
可以参考的值是m*n在1000-10000为宜。根据数据集、报表、系统性能等诸多因素,这一数值也会有差别,可以通过试验来调优。
m对应的实际参数名为cachePageNum,n对应的实际参数名为pageCount。
基于这一实现原理,在以下情况下不能应用本方式:
- 分组统计
报表和数据集表达式包含sum(),count(),等统计型函数。
- group操作
group函数需要对数据集所有数据进行排序,而本方式是分页取数,无法排序。因此本方式对报表表达式中的group函数和sql中的group均不支持。
- 横向扩展
本方式是通过控制每页显示的行数进行分页的,横向扩展会导致分页混乱。
- 报表中排序
本方式是分页取数,每次只取SQL中的部分数据。在报表中排序只能排已经取到的数据,要做排序需要在数据集SQL中进行(并且对效率也会有影响)。
- 非SQL数据集
本方式只支持基于SQL的数据集。
使用方式
通用展现页面集合了大数据量报表展现标签big标签,直接调用SR设置一些标签参数即可使用SR进行大数据量报表的分页取数展现。
在对应报表的展现设置中,设置以下参数:
- 是否采用大数据量展现:选择是,则采用列表式大数据展现(BIG)分页取数。
- 大数据量数据集名称:dsName,用于指定报表中的大数据量数据集,只能指定一个。不设置时,默认使用报表的第一个数据集。
- 总数据条数表达式:totalCountExp,用于计算总数据量,进行分页。不设置时默认通过统计大数据量数据集的条数获得。此设置在某。
- 页显示数据条数:pageCount。
- 每行数据所占行数:rowsPerRecord,每行数据在报表中所占行数。在该数值不为1时应该设置,以保证页数计算正确。即每页显示行数应等于pageCount * rowsPerRecord。
- 报表每次计算页数:cachePageNum。相应地,在全局展现设置中,alwaysReloadDefine需要设为no,否则cachePageNum无效。
- 导出excel时是否分sheet:exportExcelOneSheet=yes时,导出所有内容到同一个sheet页中。
- 导出excel时每sheet页数据条数:countPerExportPage,当exportExcelOneSheet的值不为yes时,本参数才有意义。这时数据会被导出到excel的多个sheet中,每个sheet有countPerExportPage行内容。
注意:在使用列表式大数据展现(BIG)方式时,报表结果缓存不起作用。