什么报表工具对大数据量报表的支持最好?

大量数据从数据库里全部查出来,然后再生成报表输出到 web 端,一般需要很长时间,用户体验很差,而且报表一般采用内存计算,全读入的话也容易爆掉内存。所以大数据量报表呈现时都是采用分页的方式,尽量快速呈现第一页,用户也可以随意翻页,每次显示的一页数据量比较小,也就不会内存溢出。

大部分报表工具通常是使用数据库的分页机制。利用数据库提供的返回指定行号范围内记录的语法,即界面端根据当前页号计算出行号范围(每页显示固定行数)作为参数拼入 SQL 中,数据库就会只返回当前页的记录,从而实现分页呈现的效果。

但是这种方式会有两个问题:一个是向后翻页时,需要重新计算 sql,等待感会比较强;另一个是可能会因为在翻页时执行数据库更新操作导致数据不一致。虽然这两个问题可以通过游标取数方式解决,但是游标是一个单向操作,只能向后翻页,不能向前翻页,并不能从根本上解决问题。

润乾报表则提出了完全不同的大数据报表处理方案,采用两个异步线程完成取数和呈现,取数线程发出 SQL 后不断取出数据缓存到本地,由呈现线程从本地缓存中获取数据进行显示。这样,已经取出并缓存的数据就能快速呈现,不再有等待感;而取数线程所涉及的 SQL,在数据库中保持同一个事务,也不会有不一致的问题。同时集文件存储格式支持跳转到任意页访问,从而极大地改善了用户体验。

数据库系统本身并不直接支持这种机制,需要在报表工具层面做大量工作,润乾报表因为其内置的独特计算引擎可以很方便实现这一点,其他报表工具则难以做到。润乾报表中大报表展现设置很简单,例如 sql 数据集可以直接在报表属性里设置大数据集:

什么报表工具对大数据量报表的支持最好?

然后使用 big 标签就可以快速展现报表数据了(在展现的同时后台还在计算中,所以页码是会变化的):

什么报表工具对大数据量报表的支持最好?

导出 excel 时会有进度提醒:

什么报表工具对大数据量报表的支持最好?