報表資料外接計算
在報表應用中,針對歷史資料查詢的報表佔比很大,這類報表的特點是:第一,資料變化小,查詢的歷史資料幾乎不會發生變化;第二,資料量大,而且還會隨時間不斷增加。如果這些歷史資料始終存放在資料庫中,由於大多數資料庫的 JDBC 效能都很低下(取數過程的資料物件轉換比從檔案中讀取資料慢一個數量級),當涉及資料量較大或併發較多的時候,報表的效能會急劇下降。顯然,如果能將這些變化不大的歷史資料移出資料庫,採用檔案系統儲存,就可以獲得比資料庫高得多的 IO 效能,從而提高報表的整體效能。
但是,報表並不能直接使用原始資料,都需要運算(比如查詢彙總)之後再進行呈現,而檔案本身沒有計算能力,因此無法提供報表需要的結果。此外,使用檔案儲存的資料量一般都很大,僅靠報表呈現端很難實現高效的計算。
對於潤乾報表來說,這種需求完全可以在內建集算引擎的幫助下做到,稱為庫外檔案計算,或資料外接計算。所支援的檔案型別包括:文字、Excel、JSON 格式檔案等,還支援效率更高的二進位制檔案。
透過資料外接計算,將較大資料量的歷史資料從資料庫中剝離,除了可以滿足歷史查詢類報表的效能需求外,還可以實現混合資料來源(檔案 + 資料庫)的計算,進而實現大資料量的實時資料查詢,比如從檔案系統中讀取往期大量的歷史資料,從資料庫中讀取當期較小量的實時資料進行混合計算。由此,一方面可以避免資料庫的 IO 瓶頸,快速提升報表效能,增大資料查詢範圍;另一方面,將歷史資料移出,資料庫可以專注於保證業務系統資料的一致性,而不是耗費資源在大量的歷史查詢任務上,這也是一種資料庫最佳化的手段。
下面用一個例子說明潤乾報表實現資料外接計算(結合集算器實現)的步驟:
1、 將資料庫中歷史資料匯出到檔案
使用者可以自行選擇適當的方法將歷史資料匯出到檔案,當然這個過程也可以使用集算器來做,比如將資料匯出到文字。如果希望更高的效能,還可以使用比文字能快 2-5 倍的二進位制檔案格式。在集算器中使用以下程式碼可將文字檔案轉換成二進位制格式。
file("E:/訂單明細.b").export@b(file(“E:/訂單明細.txt”.cursor())
2、 使用潤乾報表內建的集算引擎讀取資料檔案
當資料外接後,潤乾報表可將檔案作為資料來源來設計報表,比如根據訂單明細按客戶統計訂單數量和訂單金額,由於原始訂單資料非常大,所以讀入檔案時採用流式(檔案遊標)的方式逐步讀入。
指令碼中使用的引數及其含義如下:
指令碼:
A | |
---|---|
1 | =file(“E:/ 訂單明細.txt”).cursor@t() |
2 | =A1.select(貨主國家 ==county && 貨主地區 ==area && 貨主城市 ==city && 訂購日期 >=begin && 訂購日期 <=end) |
3 | =A2.groups(客戶 ID;count( 訂單 ID): 訂單數量,sum(訂單金額): 訂單總額 ) |
4 | return A3 |
程式碼說明:
A1:透過檔案遊標採用流式處理的方式讀入大文字;
A2:按照指定的多個維度進行資料過濾,結果仍然是遊標;
A3:根據選出的結果,按照客戶 ID 彙總訂單數量和訂單金額;
A4:為報表返回結果集。
前面提到,潤乾報表既可以針對單獨的檔案(匯出的歷史資料)進行查詢計算,還可以進行檔案 + 資料庫的混合運算,進行大資料量實時查詢。
A | |
---|---|
1 | =file(“E:/ 訂單明細.txt”).cursor@t() |
2 | =A1.select(訂購日期 >=begin && 訂購日期 <=end) |
3 | =A2.groups(客戶 ID;count( 訂單 ID): 訂單數量,sum(訂單金額): 訂單金額 ) |
4 | =connect(“cmos”) |
5 | =A4.cursor(“select 客戶 ID,count( 訂單 ID) 訂單數量,sum(訂單金額) 訂單金額 from 訂單明細 where 貨主國家 =? and 貨主地區 =? and 貨主城市 =? and 訂購日期 >? and 訂購日期 <? group by 客戶 ID”,county,area,city,begin,end) |
6 | =[A3,A5.fetch()].conj() |
7 | >A4.close() |
8 | =A6.groups(客戶 ID;sum( 訂單數量): 訂單總量,sum(訂單金額): 訂單總額 ) |
9 | return A7 |
程式碼說明:
A1-A3:與上一個指令碼一樣,彙總歷史資料;
A5:根據指定引數執行 sql,彙總當期資料;
A6:將兩部分彙總資料合併(縱向拼接);
A8:根據合併後的歷史和當期彙總資料再次彙總,得到各客戶的訂單數量和訂單金額。
3 在潤乾報表中呼叫集算指令碼,編輯報表表示式完成報表製作
資料集配置如下:
報表配置如下:
透過以上過程可以清晰的看到,潤乾報表可以透過資料外接提升報表效能,解決對往期歷史 + 當期資料進行查詢時效能不高的問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2667633/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 潤乾報表實現中間資料外接
- 實現報表資料預先計算
- 效能最佳化之報表資料預先計算
- 對oracle資料表空間的計算Oracle
- Prometheus時序資料庫-報警的計算Prometheus資料庫
- 大資料計算生態之資料計算(二)大資料
- 大資料計算生態之資料計算(一)大資料
- 計算機更喜歡清單型資料表!!!計算機
- ACCESS 在資料表中實現簡單計算
- 水晶報表中文資料
- 計算表資料真實行長度獲得表真實大小
- 雲端計算資料
- 計算資料庫中所有表的記錄條數資料庫
- 報表從資料庫中採集相關資料生成報表,資料太少怎麼辦?資料庫
- 報表資料庫4031資料庫
- 怎樣報表資料庫資料庫
- 報表開發工具FineReport報表填報資料校驗
- 大資料計算:結構化大資料計算的理想模式大資料模式
- 全球頂級的超級計算機(附原資料表) 計算機
- 雲端計算和資料
- 大資料workshop:《雲資料·大計算:海量日誌資料分析與應用》之《資料分析展現:視覺化報表及嵌入應用》篇大資料視覺化
- 關於查詢表資料,列與CPU開銷的計算
- 填報表之資料留痕
- 報表資料的可控快取快取
- 報表資料分庫儲存
- 資料分析報表怎麼做
- 通過shell指令碼生成資料統計資訊的報表指令碼
- 透過shell指令碼生成資料統計資訊的報表指令碼
- 資料泵匯入分割槽表統計資訊報錯(七)
- 資料泵匯入分割槽表統計資訊報錯(二)
- 資料泵匯入分割槽表統計資訊報錯(四)
- 資料泵匯入分割槽表統計資訊報錯(三)
- 資料泵匯入分割槽表統計資訊報錯(六)
- 皕傑報表軟體的設計器資料庫部署資料庫
- 資料泵匯入分割槽表統計資訊報錯(五)
- 大資料集報表點選表頭排序大資料排序
- 雲端計算大資料面試題,雲端計算大資料面試題集錦大資料面試題
- 聊天資料表設計