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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

润乾报表分组求和_实现报表数据预先计算

發布時間:2023/12/4 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 润乾报表分组求和_实现报表数据预先计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

報表應用中,如果數據量較大或計算過程較復雜,往往會導致報表數據源準備過慢,從而影響報表性能。這種情況下可以預先計算報表需要的數據,在呈現時直接引用,使得用戶在訪問報表時可以迅速地獲得響應。

一、當前的手段及弊端

由于報表在訪問時常常需要參數,因此顯然不可能把所有參數組合對應的報表數據源都準備好,所以預先計算通常只生成中間數據,在呈現時仍然要再進行一些后續的簡單計算(如過濾、分組匯總、排序等)。不過即便如此,也不太可能完全由報表工具在中間數據基礎上完成所有后續運算,因此報表工具通常只能完成一些小數據量的運算。也就是說,存儲的中間數據還需要有有再次計算的能力,所以一般情況下會將中間數據以中間表的形式存儲在數據庫中,以便在呈現時再借用數據庫的計算能力。

采用中間表進行預先計算會存在以下弊端:首先,將過多的計算工作交給數據庫做,無疑會加大數據庫的壓力,甚至反而造成性能不升反降;其次,中間表太多容易導致管理混亂,由于數據庫采用非層次結構(與文件系統的樹形結構不同),因此大量存在的中間表往往會增加數據庫管理難度。此外,從數據庫中讀取較大的中間表還會出現 I/O 瓶頸,同樣會導致報表性能不佳。

二、潤乾報表的解決方案

潤乾報表的預先計算方案(結合集算器實現)不需要使用數據庫中間表,從而可以避免上述弊端。潤乾報表內置的運算引擎擁有完整的計算能力,一方面可以將中間數據存放在文件中,另一方面還可以對文件進行再計算后作為報表數據源,縮短報表計算時間,提升報表性能。

這種方式看上去和使用數據庫中間表類似,都需要事先計算準備數據,但也有很大的不同:第一,不會占用昂貴的數據庫空間,不會增加數據庫負擔;第二,中間數據的組織管理基于文件系統,清晰明了;第三,數據量大時不會出現 IO 瓶頸。

潤乾報表能夠做到這些,得益于內置了專門用于數據計算的集算引擎。集算引擎與文件系統可實現無縫交互(讀入和輸出),可以讀取多種文件格式,如常見的文本、Excel 等,也包括效率更高的二進制文件,從而使文件具備再計算的能力,輕松實現報表預先計算。

下面用一個例子說明潤乾報表進行預先計算的步驟:

1、將需要的中間結果保存成文件

潤乾報表支持常見的文本文件格式,例如可以將訂單明細分組匯總后的數據直接存放在文本(orderDetail.txt)中。如果希望提高性能,潤乾報表還支持更高效的二進制文件格式,比文本能快出 2-5 倍,在集算器中執行如下代碼就能將文本文件轉換成二進制格式文件。

file(“E:/ 訂單明細.b”).export@b(file(“E:/ 訂單明細.txt”.cursor())

當然,生成中間數據的過程本身也可以采用集算器實現,但非本文關注點,此處不再詳述。

2、 基于中間數據文件生成報表源

潤乾報表可以直接基于文件進行再次計算,從而獲得報表數據源,比如下面的過濾算法。

腳本中使用的參數及其含義如下:

其中 cols 為選出列名,where 為過濾條件(參數傳遞時拼接成上述格式),num 為取出的記錄數。

腳本內容:

上述腳本基于文件進行過濾和分組匯總操作,其中:

A1:通過文件游標(流式處理)讀入大文本數據,此處支持選擇列,用戶可以根據參數控制選出的數據列。

A2:按照參數進行條件過濾,結果仍然是游標。

A3:按照參數限制記錄數,取出游標中的記錄。

A4:為報表返回結果集。

上述腳本只處理了一個中間文件,如果需要從多個文件同時查詢數據,腳本可以這樣編寫(以 2 個為例):

其中中間數據文件按年份存儲,每 5 年一個。如果查詢 1996 到 2005 年間的數據,就需要讀取 2 個文件。腳本中 A3 對兩個文件的游標進行了縱向拼接,合并成一個游標,然后采用與第一個腳本相同的方式進行處理。當查詢的數據范圍繼續擴大,需要多個文件的時候,可以通過循環的方式將多個文件游標進行縱向拼接合并。

3、設計報表

這一步包括在潤乾報表中調用集算腳本,編輯報表表達式完成報表制作等等,這些是報表制作的常規動作了,不再贅述。

與一般優化方式類似,使用預先計算來提高報表性能要充分考慮使用場景。對某些計算過程容易拆分的場景特別適合使用預先計算,如大表匯總數據與其他表做連接,這時可以先將大表匯總數據預先存成文件,再與其他表做連接計算。此外,數據的實時性要求也需要充分考慮,比如在歷史查詢類的報表中就比較適合使用預先計算,當然潤乾報表還提供了其他手段來保證數據的實時性要求。

總結一下,由于一般報表工具不具備文件計算能力,因此要實現預先計算往往要借助數據庫進行;而潤乾報表擁有完整的文件計算能力,可以避免數據庫中間表帶來的各種弊端,這一點對用戶極具實用價值。

更多性能優化相關問題請查看:性能優化相關問題分類導航

總結

以上是生活随笔為你收集整理的润乾报表分组求和_实现报表数据预先计算的全部內容,希望文章能夠幫你解決所遇到的問題。

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