启用行式引擎执行层式报表

  • 文档创建者:文档助手1
  • 编辑次数:31次
  • 最近更新:Wendy123456 于 2021-03-15
  • 1. 概述

    1.1 问题描述

    有时报表形式非常简单,只是简单的单数据源明细报表,但是数据量非常大,百万、千万甚至更多。报表取数及计算时间相当长。

    希望能够提高报表展示速度,对于用户来说,查询报表不会有滞后的感觉。

    1.2 解决方案

    对于单数据集的明细报表,可以启用行引擎来执行报表,提高报表展示速度,优化用户体验。

    2. 行式引擎简介

    2.1 原理

    • 普通报表:取出全部数据后再执行报表,最后返回整体的报表结果给浏览器,用户访问到看到结果的时间=报表取数时间+报表执行时间。

    • 行引擎报表:边取数边执行报表,执行到哪页用户就可以看到哪页,用户访问到看到结果的时间=首页数据读取时间+首页计算时间。

    2.2 报表引擎属性

    默认报表不启用行式引擎,当报表数据量大且报表不复杂时,可以启用该属性。

    按页取数执行报表,能够大大缩短报表执行时间,提高用户体验。

    点击菜单「模板>报表引擎属性」,会弹出报表引擎属性界面,如下图所示:

    1574750258178431.png

    2.3 注意事项

    1)行式引擎不支持部分功能

    行引擎报表注重的是性能,由原理可知,对于行引擎报表,每页的计算必须是独立的,即报表不能有单元格关联的复杂运算等。

    为了提高行引擎报表的性能,FineReport 舍弃了一些复杂的功能,如下所示:

    • 不支持单元格过滤,不支持单元格字段汇总求和。

    • 不支持重复结尾行。

    • 条件属性不支持行高、列宽、超级链接、行后分页、形态、控件。

    • 仅支持从上到下扩展属性,其他属性设置均不支持。

    • 不支持悬浮元素,层次坐标,分栏,sheet 间运算。

    • 不支持分页预览展示图表,不支持子报表。

    • 不支持单元格内容提示使用公式。

    • 不支持分页分 sheet 导出 Excel 。

    • 不支持数据列的结果集筛选。

    • 不支持报表的分组展示。

    • 不支持使用「$$$」进行传参。

    2)行式引擎按页取数

    行式引擎按页取数只适用于 Oracle,MySQL,HSQL 和 SQL Server 2012 及以上数据库。

    如 Sqlite,Access,SQL Server 2005 等其他数据库必须手动编写分页 SQL,才能实现按页取数。

    对于需要编写分页 SQL 的数据库,请参考 单数据集分页 SQL 实现层式报表 章节。

    注:SQL Server 2012 及以上是支持行式引擎的,但是 SQL 中一定要写 order by。

    注:数据量较大时,请勾选「使用按页运算分段执行报表」,以防出现卡顿现象。

    3)多数据集报表

    行式引擎只适用于单数据源报表,对于多数据集报表,行式引擎无法实现对其进行分页显示,多数据源的层式报表的实现请查看 多数据集实现层式报表

    4)引擎插件

    如果用户所在场景行式引擎无法支持,则可以试用 新计算引擎插件 ,该插件实现了多数据源情况下的分页查询功能,用户无需再写复杂的分页 SQL 或 JS 按钮,就可以让报表快速完成首页加载。
    注:该插件支持 Oracle、SQL Server、MySQL、HANA、PostgreSQL、Impala、DB2 等大部分主流 JDBC 数据源。

    3. 示例

    以 MySQL 数据库为例,将里面的 S 订单明细的数据用行式引擎显示,每页显示 30 行。

    3.1 新建模板

    3.1.1 新建数据集

    新建模板,新增数据集 ds1,连接 MySQL 数据库,SQL 语句为:SELECT * FROM S订单明细

    3.1.2 模板设计

    将表中的列全部拖曳至模板主体中,如下图所示:

    1574750164224341.png

    3.2 行式引擎设置

    选择「模板>报表引擎属性」,勾选用行式的引擎来执行报表。

    勾选下面的使用按页运算分段执行报表,每页记录数使用默认值 30,如下图所示:

    注:数据量较大时,请勾选「使用按页运算分段执行报表」,以防出现卡顿现象。

    1574750258178431.png

    3.3 效果预览

    点击「分页预览」,效果如下图所示:

    1574754361420812.png

    4. 注意事项

    4.1 Class not found:PageSetChain

    问题描述

    使用行式引擎,设置按页运算分段执行报表后报错:Class not found:PageSetChain。如下图所示:

    2 (2).png

    排查思路

    • 参考本文 2.3 节内容,排查是否使用了行式引擎不支持的功能点。

    • 查看数据集预览是否正常,检查 SQL 语句是否规范正确;若 SQL 语句较复杂,可进行简化。

    • 若仍无法解决,建议使用 新计算引擎插件

    附件列表


    主题: 性能优化
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526