1. 概述
在 FineReport 報表進行資料展示或圖表展示時,經常會用到「排序」功能。一般在資料展示中應用比較多,圖表中也會稍微涉及到一點。
本文將介紹 FineReport 支援的各類排序,以及對排序的各種應用進行簡單介紹。
2. 三種排序方式簡介
FineReport 支援的三種排序類型分別為:資料集中的排序、進階排序、擴展後排序。簡介如下表所示:
注:進階排序是在報表執行前進行排序,擴展後排序是報表執行後再進行排序。
排序類型 | 簡介 |
---|---|
資料集中的排序 | 透過 SQL 直接在資料庫查詢時排序 範例:
|
進階排序 | 報表根據某「資料列」設定的公式和排列順序進行的排序。相當於擴展前排序,依賴於「資料列」 |
擴展後排序 | 「擴展後排序」在製作報表程式中可以實現多種排序需求,是最靈活的排序方式,但由於在擴展完成後進行排序,會對所有格子的位置進行調整,因此效能最差,建議在 進階排序 無法實現的情況下再使用「擴展後排序」 |
3. 三種排序方式對比
3.1 效能對比
從效能方面考慮:資料集中的排序>進階排序>擴展後排序。
從改寫場景方面考慮:擴展後排序>進階排序>資料集中的排序。
排序類型 | 優點 | 缺點 |
---|---|---|
資料集中的排序 | 效能最佳 | 1)所有計算都必須要在資料庫中做,會導致 SQL 很複雜,難以維護。因此建議僅使用 SQL 實現一些簡單的,單一的「升冪」或「降冪」 2)有些計算是無法用 SQL 完成的;例如:某一欄是透過其他資料列計算得出的,「資料集中的排序」將不再適用 |
進階排序 | 1)效能中等 2)可以基於「資料列」利用公式做一些稍微複雜些的排序 | 公式必須依賴於「資料列」,並且會導致公式的二次計算 |
擴展後排序 | 最為靈活,滿足目前所有的排序需求 | 由於在擴展完成後進行排序,會對所有格子的位置進行調整,因此效能最差 |
3.2 改寫場景對比
注:這三種排序方式,都可以在普通報表、決策報表以及FVS視覺化看板中使用。
排序類型 | 支援排序的欄位 | 可實現效果 |
---|---|---|
資料集中的排序 | 時間、日期、字串、數字、布爾類型 |
|
進階排序 | 不支援動態排序,即點選表頭進行排序的效果不能實現 1)11.0.3 及之後版本,支援多列排序 2)11.0.3 之前版本,只能實現單列排序,可以實現效果:
| |
擴展後排序 | 1)11.0.3 及之後版本,支援動態排序、支援多列排序 2)可以實現的效果(功能本身可以實現):
3)可以實現的效果(結合其他功能實現的):
|