1. 概述
在 FineReport 报表进行数据展示或图表展示时,经常会用到「排序」功能。一般在数据展示中应用比较多,图表中也会稍微涉及到一点。
本文将介绍 FineReport 支持的各类排序,以及对排序的各种应用进行简单介绍。
2. 三种排序方式简介
FineReport 支持的三种排序类型分别为:数据集中的排序、高级排序、扩展后排序。简介如下表所示:
注:高级排序是在报表执行前进行排序,扩展后排序是报表执行后再进行排序。
排序类型 | 简介 |
---|---|
数据集中的排序 | 通过 SQL 直接在数据库查询时排序 示例:
|
高级排序 |
|
扩展后排序 | 「扩展后排序」在制作报表过程中可以实现多种排序需求,是最灵活的排序方式,但由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差,建议在 高级排序 无法实现的情况下再使用「扩展后排序」。 |
3. 三种排序方式对比
3.1 性能对比
从性能方面考虑:数据集中的排序>高级排序>扩展后排序。
从覆盖场景方面考虑:扩展后排序>高级排序>数据集中的排序。
排序类型 | 优点 | 缺点 |
---|---|---|
数据集中的排序 | 性能最佳 | 1)所有计算都必须要在数据库中做,会导致 SQL 很复杂,难以维护。因此建议仅使用 SQL 实现一些简单的,单一的「升序」或「降序」 2)有些计算是无法用 SQL 完成的;例如:某一列是通过其他数据列计算得出的,「数据集中的排序」将不再适用 |
高级排序 | 1)性能中等 2)可以基于「数据列」利用公式做一些稍微复杂些的排序 | 公式必须依赖于「数据列」,并且会导致公式的二次计算 |
扩展后排序 | 最为灵活,满足目前所有的排序需求 | 由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差 |
3.2 覆盖场景对比
注:这三种排序方式,都可以在决策报表和普通报表中使用。
排序类型 | 支持排序的字段 | 可实现效果 |
---|---|---|
数据集中的排序 | 时间、日期、字符串、数字、布尔类型 |
|
高级排序 | 不支持动态排序,即点击表头进行排序的效果不能实现 10.0「高级排序」只支持单列排序 可以实现的效果:
| |
扩展后排序 | 可以实现的效果(结合其他功能实现的):
|