1. 概述
1.1 版本介紹
報表服務器版本 | JAR 包版本 | 插件版本 |
---|---|---|
10.0 | 2019-11-07 | V1.0.4 |
注:新計算引擎插件不支持 IE8 及以下浏覽器。
1.2 應用場景
新計算引擎引入了一種新的模板格式 cptx,該模板格式主要用於提升大數據量場景下分組明細、過濾、彙總等簡單模板的性能,可以明顯提升這些模板的展現速度。
1.3 實現原理
cptx 類似於一個壓縮包,其中除了存儲了原先的 cpt 文件之外,還包含了一些模板關系的編譯結果。
通過對模板的預處理(編譯),将一些模板中的設置編譯爲 SQL 語句,交由 SQL 處理,同時按需取數,一次只取出部分數據,同時後台分頁計算。
這是一種可以規避大數據量帶來的壓力,優先确保首頁快速加載展現的一種計算方式。
1.4 功能介紹
支持将 cpt 模板轉換爲 cptx 模板。
報表預覽方式新增新分頁預覽。
支持批量轉換及檢測生成的模板是否支持新計算引擎。
1.5 支持的功能
相比行式引擎,新計算引擎新增支持的功能:
支持單元格過濾及彙總求和。
支持條件屬性行高列寬,超級鏈接。
支持自适應。
支持單元格内容提示使用公式。
支持使用多個互相無過濾關系的數據集
新增數據源支持。
注:支持的數據源有 MySQL、ADS、huaweiHive、CUBRID、Apache Derby、Firebird、H2、SQLite、HSQL、MariaDB、PostgreSQL、SAP HANA、Oracle、Teradata、SQL Server、SQL Server2000、SQL Server2008、Access、ASE、Informix、Ingres、Amazon Redshift、Vertica、Apache Phoenix、Apache Kylin、Impala、GBase 8s、Transwarp、DB2、Sybase。
1.6 暫不支持的功能
由於後台分頁取數計算邏輯限制,新計算引擎暫不支持部分功能在參數面板以外使用:
不支持非 JDBC 數據源
不支持樹數據集、關聯數據集、存儲過程
不支持擴展後排序
不支持層次坐标、SQL 公式和“報表函數”類型公式
條件屬性不支持行後分頁和控件。
不支持懸浮元素、分欄、sheet 間運算
不支持分頁預覽展示圖表
不支持單元格插入子報表,詳情可參見:嵌入式主子表
不支持不同數據集間過濾
包含 年份選擇控件 的 cpt 模板,轉換爲 cptx 格式後,年份選擇控件将失效
注1:目前不支持上述功能, cpt 轉 cptx 時,日志中會有 error 的報錯提示 unsupported feature。此時爲避免 cptx 預覽報錯,會自動走老引擎的後台計算(即這些模板不會有性能上的提升)
注2:新計算引擎支持了分組,但整體上分組展示的性能要遜色於列表展示,爲了更好的性能,如無分組需求,建議将模板首列設置爲列表。
2. 插件介紹
2.1 插件安裝
點擊下載插件:新計算引擎
設計器插件安裝方法參照 設計器插件管理
服務器安裝插件方法參照 服務器插件管理
推薦配合大數據集導出使用,詳細内容參見文檔:新計算引擎大數據集導出
2.2 新舊引擎對比
舊引擎和新引擎的後台計算邏輯區别如下表所示:
注:這裏的新引擎指的是 cptx 模板,舊引擎指的是 cpt 模板。
計算邏輯 | 舊引擎 | 新引擎 |
---|---|---|
數據列( 篩選、過濾、排序等 ) | 将數據集數據抽取到服務器内存,在内存中篩選和過濾 數據量較大時,有内存溢出風險 | 将設置編譯爲 SQL 語句,由數據庫執行 速度較快,數據量越大越明顯 |
按需計算 | 不支持,只能全量計算所有 | 支持,同時提供全量計算選項 |
公式解析計算 | 性能較慢,不支持動态參數緩存 | 通過預編譯提前确定單元格關系,避免計算時遞歸遍曆 支持動态參數緩存 |
序列化存儲 | 模板爲單個 XML,資源文件轉爲字符串存儲 存在大量資源文件時,讀取與保存模板會比較慢 | 模板爲 zip 格式,裏面内容爲元數據對象,無需将資源文件轉爲字符串存儲 模板體積較大時,讀取與保存不會出現卡頓 |
前端渲染 | 支持新前端渲染 | 支持新前端渲染 |
新引擎是流式計算的,具有首屏快速展現的功能,可以在首屏出來後進行點擊翻頁查看數據,無需等待所有數據處理完。新舊引擎報表展現速度對比如下圖所示:
左邊爲舊引擎,右邊爲新引擎。
3. 操作方法
3.1 模板格式轉換
打開 cpt 模板,設計器上方工具欄會出現一個轉換按鈕,點擊該按鈕,彈出提示框信息“轉換成功,請查看設計器目錄同名文件”,即表示 cptx 成功生成。
注:cptx 生成後,不需要刷新目錄樹,cptx 模板會自動出現在同名 cpt 模板的同級目錄下。
3.2 新分頁預覽
插件安裝後,報表預覽按鈕下拉選擇項新增新分頁預覽,如下圖所示:
注:cpt 和 cptx 都可以使用新分頁預覽。
新分頁預覽跟分頁預覽的區别在於報表 Web 預覽前端效果的改變,如下圖所示:
新分頁預覽的新前端效果:
分頁預覽的舊前端效果:
目前 cpt 和 cptx 格式的模板分别在新分頁預覽和分頁預覽時,所使用的引擎和前端展現效果如下表所示:
注:目前 cptx 優先對分頁預覽做支持,所以 cptx 模板選擇其他預覽方式時,比如填報預覽之類,由於暫未支持,效果和分頁預覽是一緻的。
模板格式 | 分頁預覽 | 新分頁預覽 |
---|---|---|
cpt | 舊引擎,舊前端 | 舊引擎,新前端 |
cptx | 新引擎,新前端 | 新引擎,新前端 |
3.3 計算屬性
新引擎設置計算屬性的操作步驟:打開一張 cptx 模板,設計器菜單欄選擇「模板>計算屬性」。計算屬性設置界面的介紹如下:
查詢緩存:就是數據集緩存,勾選後可緩存查詢結果,從而降低服務器壓力,提升報表的展現速度。
實驗性功能:實驗功能,不建議用戶直接使用,如果想要使用可以聯系技術支持,技術支持 QQ :800049425。
注:插件安裝後,只有 cptx 模板的菜單欄模板下才會顯示計算屬性這個功能。
4. 批量轉換
4.1 應用場景
主要面向有較多老模板需要驗證新引擎是否能夠支持的用戶。
提供可批量選擇模板的設置,并對所選擇的模板進行批量轉換,解決只能一張張轉換的問題。
轉換過程中同時進行是走新引擎還是老引擎的檢測,明确是否支持及原因,報錯是預期外情況,主要是做記錄或用於反饋。
注:V1.0.3 及之後版本新增批量轉換功能。
4.2 功能入口
安裝插件之後,設計器菜單欄文件下,新增批量轉換的入口批量格式轉換。如下圖所示:
4.3 功能面板
功能面板主要由 3 部分組成,如下圖所示:
4.3.1 模板選擇區
模板選擇區以樹的形式展示工程内的模板,只能顯示 cpt 模板(無法選擇被鎖定了的模板)。
注:批量轉換模板的模板選擇區也要受到遠程設計權限的控制,無權限的模板不顯示。
4.3.2 待轉換模板區
1)在待轉換模板區中,被勾選了的模板會在其中顯示,如下圖所示:
2)選擇完成模板後點擊「開始轉換」即開始批量轉換所選模板,模板按順序進行轉換。在原窗口基礎上彈窗顯示如下(進度條爲真實進度):
注:未完成情況下點擊中止則返回到原窗口,待轉換模板區清空,已完成轉換的模板顯示在轉換結果區。
4.3.3 轉換結果區
點擊模板轉換區中已經完成轉換的模板,可在下面的轉換日志處看到模板對應的轉換信息。
轉換結果由 3 種,分别如下:
轉換成功走新引擎:轉換日志爲“轉換成功”,模板右側的提示圖标爲
轉換成功走老引擎:轉換日志顯示相應報錯信息,模板右側的提示圖标爲
轉換失敗:轉換日志顯示相應報錯信息,模板右側的提示圖标爲
注1:成功轉換的數量包括轉換成功走新引擎和轉換成功走老引擎的兼容模式模板。
注2:批量轉換中的轉換邏輯和單個模板轉換保持一緻,轉換後的文件将生成在原文件同一目錄下,如已存在此文件則進行覆蓋。
4.4 兼容性模式
當模板轉換成了 cptx,但因爲功能不支持所以要走老引擎時,其實是不影響用戶使用的。
但是此時無法發揮新引擎對模板性能的優化,走老引擎的 cptx 模板會在模板名稱後,顯示兼容性模式(預覽模板無額外變化,和原本一緻),如下圖所示:
注1:兼容性模式是指模板能夠支持正常的訪問及編輯保存,但是無法使用新引擎對其性能進行優化。
注2:當兼容性模式的 cptx 模板在修改保存後不再有新引擎不支持功能,此時保存後兼容性模式的顯示消失,變爲正常的新引擎 cptx 模板。
5. 注意事項
5.1 編譯所有模板
V1.0.3 及之前版本的插件安裝後,在設計器菜單欄文件下,會新增一個功能按鈕「編譯所有模板」,如下圖所示:
這個按鈕是批量轉換最初的簡化方案,它會轉換當前報表工程下的所有 cpt 模板,但是存在一些使用上的問題。
建議用戶直接升級到 V1.0.3 及之後的版本,使用最新的批量轉換功能。
5.2 行式引擎報錯
問題描述
如果報表使用了「模板>報表引擎屬性」下的行式引擎,如下圖所示:
cpt 轉 cptx 後,預覽模板時,會有報錯信息:警告:18:01:44 Thread-13 ERROR [standard] 錯誤代碼:11300001 數據集配置錯誤。
原因分析
報表的數據設置爲列表,跟行式引擎沖突,如下圖所示:
解決方案
不使用行式引擎即可,不勾選行式引擎。
5.3 日期控件設置的控件值無效
問題描述
cptx 模板中,日期控件的控件值爲數據列中的數值,設置控件值的格式爲yyyyMM,預覽後設置的控件值未生效,提示:無限制。如下圖所示:
原因分析
控件值對應的數據列中,日期格式爲 YYYY-MM,日期控件控件值設置的格式爲 yyyyMM ,兩者設置的格式不相同導緻的。
解決方案
數據列中的字段格式需與控件設置的字段格式相同。