反饋已提交

網絡繁忙

啓用列式引擎執行層式報表

一、概述

1
問題描述。
  1. 有時報表形式非常簡單,只是簡單的單資料源明細報表,但是資料量非常大,百萬、千萬甚至更多。報表取數及計算時間相當長。

  2. 希望能夠提高報表展示速度,對於使用者來說,查詢報表不會有滯後的感覺。

2
解決方案。
  1. 對於單資料集的明細報表,可以啟用列引擎來執行報表,提高報表展示速度,優化使用者體驗。

二、列式引擎簡介

1
原理。

  1. 普通報表:取出全部資料後再執行報表,最後傳回整體的報表結果給瀏覽器,使用者訪問到看到結果的時間=報表取數時間+報表執行時間。

  2. 列引擎報表:邊取數邊執行報表,執行到哪頁使用者就可以看到哪頁,使用者訪問到看到結果的時間=首頁資料讀取時間+首頁計算時間。

2
報表引擎屬性。
  1. 預設報表不啟用列式引擎,當報表資料量大且報表不複雜時,可以啟用該屬性。

  2. 按頁取數執行報表,能夠大大縮短報表執行時間,提高使用者體驗。

  3. 點選選單【範本】→【報表引擎屬性】,會彈出報表引擎屬性介面。如下圖所示。

3
注意事項。
  1. 列式引擎不支援部分功能:列引擎報表注重的是效能,由原理可知,對於列引擎報表,每頁的計算必須是獨立的,即報表不能有儲存格聯動的複雜運算等。為了提高列引擎報表的效能,FineReport 舍棄了一些複雜的功能,如下所示:

    (1)不支援儲存格過濾,不支援儲存格欄位彙總求和。

    (2)不支援重複凍結功能。

    (3)條件屬性不支援列高、欄寬、超級連結、列後分頁、形態、元件。

    (4)僅支援從上到下擴展屬性,其他屬性設定均不支援。

    (5)不支援懸浮元素,層次座標,分欄,sheet 間運算。

    (6)不支援分頁預覽展示圖表,不支援子報表。

    (7)不支援儲存格內容提示使用公式。

    (8)不支援分頁分 sheet 匯出 Excel 。

    (9)不支援資料欄的結果集篩選。

    (10)不支援報表的分組展示。

    (11)不支援使用【$$$】進行傳參。

  2. 列式引擎按頁取數:列式引擎按頁取數只適用於 Oracle,MySQL,HSQL 和 SQL Server 2012 及以上資料庫。如 Sqlite,Access,SQL Server 2005 等其他資料庫必須手動編寫分頁 SQL,才能實現按頁取數。對於需要編寫分頁 SQL 的資料庫,請參考 單資料集分頁 SQL 實現層式報表 章節。

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

    注2:資料量較大時,請勾選【使用按頁運算儲存片執行報表】,以防出現卡頓現象。

  3. 多資料集報表:列式引擎只適用於單資料源報表,對於多資料集報表,列式引擎無法實現對其進行分頁顯示,多資料源的層式報表的實現請查看 多資料集實現層式報表

  4. 新計算引擎:如果使用者所在場景列式引擎無法支援,則可以試用 新計算引擎功能 ,實現多資料源情況下的分頁查詢功能,使用者無需再寫複雜的分頁 SQL 或 JS 按鈕,就可以讓報錶快速完成首頁載入。

    注:該功能支援 Oracle、SQL Server、MySQL、HANA、PostgreSQL、Impala、DB2 等大部分主流 JDBC 資料源。


三、範例

  1. 以 MySQL 資料庫為例,將裏面的 S 訂單明細的資料用列式引擎顯示,每頁顯示 30 列。

1
建立範本。
  1. 建立資料集:建立範本,新增資料集 ds1,連結 MySQL 資料庫,SQL 語句為:【SELECT * FROM S訂單明細】。

  2. 範本設計:將表中的欄全部拖曳至範本主體中,如下圖所示。

2
列式引擎設定。

  1. 選擇【範本】→【報表引擎屬性】,勾選用列式的引擎來執行報表。

  2. 勾選下面的使用按頁運算儲存片執行報表,每頁記錄數使用預設值 30,如下圖所示。

注:資料量較大時,請勾選【使用按頁運算儲存片執行報表】,以防出現卡頓現象。

3
效果預覽。
  1. 點選【分頁預覽】,效果如下圖所示。

四、注意事項

1
Class not found:PageSetChain。
  1. 問題描述

    使用列式引擎,設定按頁運算儲存片執行報表後報錯:【Class not found:PageSetChain】。如下圖所示。

  2. 排查思路:

    參考本文 第二章第3節內容,排查是否使用了列式引擎不支援的功能點。

    查看資料集預覽是否正常,檢查 SQL 語句是否規範正確;若 SQL 語句較複雜,可進行簡化。

    若仍無法解決,建議使用 新計算引擎

    看下 sql 中有沒有引號、分號;看下是不是有重複欄名。

附件列表


主題: 效能優化
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉