日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

access如何设置定期报表汇总_报表工具选型对比系列 - 大报表

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 access如何设置定期报表汇总_报表工具选型对比系列 - 大报表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有些報表查詢出的數據行數可達千萬甚至上億,這類報表通常被叫做大報表,大多數情況下都是些清單明細數據報表,也有少量分組報表。

針對大報表,如果像常規報表一樣,將數據一次性全取再交給前端呈現是不可行的。一是等待時間太長,用戶體驗差;二是很可能導致內存溢出造成應用崩潰。

那么,目前的報表產品是如何解決這一問題的呢?本文將調研并測試幾款報表產品的大報表解決方案,還是針對這三款產品:潤乾報表、帆軟報表、Smartbi,均為最新版本。

首先了解下各家的解決方式或機制。

解決機制

帆軟

帆軟提供兩種引擎,行式引擎專門解決明細大報表,新計算引擎可解決行式引擎及其不支持的一些情況(如某些數據庫需手寫分頁 SQL 的問題、分組大報表、帶匯總的分組報表等)。

行式引擎

實現原理是借助分頁 SQL 按頁取數,訪問哪一頁數據則取對應數據計算并呈現,所以也只能支持數據庫源了。并且只有少部分數據庫可以不改動 SQL 的情況下支持分頁取數: Oracle,MySQL,HSQL 和 SQL Server 2012 及以上數據庫。像其他的 access、SQL Server 2005 及 2008 等,必須手動編寫分頁 SQL 才能實現按頁取數。可以看個例子感覺難易度:

原始 SQL:select * from 訂單明細

SQL Server 2008 下的分頁 SQL 為:

SELECT * FROM ( SELECT TOP ${ if(fr_pagenumber == int((((fr_rowcount-1)/fr_pagesize)+1)),fr_rowcount - (fr_pagesize*(fr_pagenumber-1)),fr_pagesize) } * FROM( SELECT TOP ${fr_pagesize*fr_pagenumber} * FROM 訂單明細 ORDER BY 訂單ID ASC ) AS e1 ORDER BY 訂單ID DESC ) AS e2 ORDER BY 訂單ID ASC

注:不同的數據庫,寫法不同。

新計算引擎

新計算引擎可以替代行式引擎的功能,使得做報表變的簡單,比如對于 SQL Server 較低版本,不用再單獨寫分頁 SQL,新計算引擎會把原本 SQL 處理成分頁 SQL。但是原理不完全一樣,行式引擎是按頁取數(頁面大小或頁行數),新計算引擎則是每次按 1024 條(不支持自定義)為一個區間分批取數。

報表格式上也能支持分組大報表、帶匯總的分組表。

帆軟這兩個引擎都是借助數據庫分頁機制,僅支持 SQL 數據源。新計算引擎的優勢在于可以讓定義 SQL 時更簡單,如上面所提到的明細大報表按頁取數手寫分頁 SQL 的問題,新引擎不用自己搞了。

使用數據庫分頁有幾個共同的缺點:1、頻繁反復翻頁時效率很差,特別是靠后的頁,對數據庫造成很大壓力;2、可能出現數據不一致(兩次執行取數 SQL 之間有插入、刪除動作);3、不支持其他類型數據源。

Smartbi

Smartbi 只能借助數據庫 SQL 分頁,因此僅支持 SQL 數據源,且報表格式僅支持明細報表,該機制缺點同帆軟。

潤乾

兩階段雙異步線程

可參考下圖

以 SQL 數據源為例,取數和呈現采用兩個異步線程,取數線程發出 SQL 后,游標方式不斷取出數據緩存到本地磁盤,由呈現線程從本地緩存中獲取數據進行顯示。這樣,已經取出并緩存的數據就能快速呈現,不再有等待感;而取數線程所涉及的 SQL,在數據庫中保持同一個事務,也不會有不一致的問題,數據庫分頁機制的兩大問題(SQL 分頁數據不一致、翻頁效率差)都可以完美解決。

采用該機制,首頁可實現秒級響應,緩存是在硬盤,內存占用小,可有效避免內存溢出。

另外,該機制同樣支持非 SQL 數據源,包括文件數據源、noSQL 數據源、接口數據源等。

同時,報表格式上支持明細大報表、帶匯總及分組大報表等,具體做法這里不再贅述,有更詳細的文章介紹: 如何實現海量數據清單和分組報表

用例及測試結果

用例

通過以上了解的各產品支持情況,我們用大家都支持的大數據明細報表做個對比,看看首頁呈現、翻頁等的效率及體驗。

數據庫:MySQL 5.7

“各城市產品銷售表”,620 萬條 *6 列數據。

JVM:可用 1G,數據無法全部加載。

測試結果

報表按照每頁 30 行 *6 列呈現。

從測試結果可以看出,潤乾的首頁加載及翻頁體驗最好,均可做到秒級響應。

帆軟次之,看測試結果的話,新計算引擎體驗上比行式引擎要好,但是目前功能不完善,如分頁僅支持按頁面大小,不支持其他方式等。在后面測試分組報表時也對這些不完善得到了印證,查詢靠后的頁碼時,因 SQL 時間執行過長掛掉了,即便改了系統等待 SQL 執行時間,那也沒法用了,等待時間太長,體驗太差。這些問題在帆軟官方客服那里也能被確認,新計算引擎新推出不久(看文檔,貌似也近一年時間了),功能不完善,很多都是需要優化的狀態。

Smartbi 也是數據庫分頁機制,但表現很差(嘗試降低查詢總數據量到 26 萬,也需要 25s 左右),按測試用例結果來看,幾乎是沒法用的。

分組報表

Smartbi 直接不支持分組大報表,帆軟在翻頁時幾乎沒法用,只有潤乾可以正常實現,這樣就無法實施對比了。潤乾實現方法可參考: 海量清單與分組報表的實現

性能測試結論

本篇之前還有三篇材料:

報表工具選型對比系列 - 多源關聯性能
報表工具對比選型系列 - 容量及相關性能
報表工具對比選型系列 - 頁面渲染性能

我們從四個方面對這三款報表工具進行了深入的性能測試對比。基本上每篇的結論都相同,即潤乾報表的性能和容量最好、內核引擎最優;帆軟次之,每個對比項上均有差距,但大部分項目差距并不算大。這兩款均可以算作第一檔次的報表工具,基本可以勝任大部分大容量和高性能場景。而 Smartbi 在性能容量方對比潤乾和帆軟則有明顯的差距,面對大容量和高性能場景只能勉強甚至無法應對,能力要弱一個檔次。

總結

以上是生活随笔為你收集整理的access如何设置定期报表汇总_报表工具选型对比系列 - 大报表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。