大数据量展现
为了应对海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题。满足大数据量的报表展示需求,为客户提供了大数据量展现(big分页标签发布报表)。
实现原理
把报表根据每页展现行数,以及从数据库里获取的最大行数,分成n页,然后把所有页的报表定义组成一个报表组,利用报表组实现了逐页计算逐页输出功能。
使用big标签建议配置globalReportConfig.xml文件中alwaysReloadDefine为no,启用缓存。此项设置的目的是使得设置的缓存页数cachePageNum生效。实现展现、翻页、打印、导出都是逐页计算逐页输出的。
标签说明
通用展现页面集合了大数据量报表展现标签big标签,直接调用SR设置一些标签参数即可使用SR进行大数据量报表的分页取数展现。
进行如下参数设置:
标签类型:showType=html、报表类型:vrType=big、自动分页:autoBig=yes、总数据条数:totalCountExp、每页显示数据条数:pageCount、缓存页数:cachePageNum、阀值:cellsNum,总数据条数超过该值时,使用big标签展现,不超过时不使用分页标签展现。设置为0时,始终使用big标签展现。
参数的介绍可参考展现设置->参数说明 章节。
注意事项:
- showType=html时,不能使用资源ID展现报表,只能使用报表名进行展现。
- showType=html时不能使用V5数据管理中配置的数据源进行报表计算。只能像V4报表一样配置数据库连接池才能完成报表正常取数展现。
- cachePageNum*pageCount=每次取数条数,这两个参数的乘积建议不要设置太大,例如报表20w条据,设置为100*1000=10w,一次取10w条数据仍然会很慢,失去了分页取数提高性能的效果。
- 目前产品上如果数据超过1w,会自动调用big标签。
Big标签设置
报表展现设置中设置
展现设置更多设置中添加big相关的参数即可:
按照报表的不同,设置不同的标签值就行。
配置文件中设置
通用展现页面提供了使用模式进行报表展现的方法,可以将一组报表展现属性保存为一种展现模式,直接调用模式进行报表的展现。
例如:将以下展现大数据量报表的参数保存为模式:test。在配置文件\mis2\custom\vrsr\SRParamSchema.json 文件中配置,格式如下:
"params":"showType=html&vrType=big&autoMode=yes&totalCountExp=10000&pageCount=50&cachePageNum=40&cellsNum=0
调用方式
- 在报表展现设置中设置模式为test(该模式已经在SRParamSchema.json 文件中配置):展现时就可以调用设置的big标签模式
- 报表展现时在URL后边拼接模式名,报表即可按照指定模式进行展现,示例代码如下:
http://localhost:8800/reportmis/mis2/reportcenter/showReport1.jsp?raq=\test.raq&schemaId=test
- 可以对已包括在模式内的参数再次设置
例如用已设置的模式进行big展现,已有里每次缓存页数是40页,在展现某张数据量较大的报表时需要设置缓存页数为50。
只需要在schemaId=test的基础上增加参数cachePageNum=50即可。示例代码:
http://localhost:8800/reportmis/mis2/reportcenter/showReport1.jsp?raq=\test.raq&schemaId=test&cachePageNum=50
big标签的局限性
big标签不能应用于以下几种情况
分组报表
报表和数据集表达式包含sum(),count(),等统计型函数。
由于autobig标签是通过标签dbType=”unknown”、dsName=”ds1″、 totalCountExp="50000" 、pageCount="10″、cachePageNum="5″做数据集的数据量统计划分,所以不能对数据集数据做分组,汇总等统计
不支持group
group函数需要对数据集所有数据进行排序,big标签是分页取数,无法排序。所以不支持group。
不支持横向扩展
big标签是通过控制每页显示的行数进行分页的,横向扩展会导致big标签分页混乱。