效能最佳化之報表與演算法的統一管理
在報表專案中,常常有些複雜的資料計算是一個報表專門使用的,其它報表用不到。通常,此類計算可以在報表資料來源中用 SQL 實現,不過由於 SQL 無法分步計算,需要寫非常複雜難懂的長語句,不利於除錯和維護,因此也會使用 Java 或者儲存過程來實現。但這樣一來,計算程式又會和報表模板分開,不利於組織管理。
使用潤乾報表的指令碼資料集(結合集算器實現)來實現報表專用計算,是解決上述困境的一個有效手段,一方面既可以寫出簡單易懂的分步計算指令碼,另一方面又可以將指令碼和報表模板一起存放,利於管理。
這兩種方式的系統結構對比如下圖所示:
下面透過一個具體的報表例子來看一下潤乾報表指令碼資料集的用法。
下表是一個《年度客戶銷售分析報表》,要求可以選擇年份作為輸入引數:
其中,CLIENT 是客戶,TOTAL 是客戶銷售總額,DATE1 是客戶最後一次銷售日期,AMOUNT1 是客戶最後一次銷售金額,DATE2 是客戶倒數第二次銷售日期,AMOUNT2 是客戶倒數第二次銷售日期。
1、定義報表引數
在潤乾報表中新建報表模板後,要定義報表引數:
2、配置指令碼資料集
定義一個指令碼資料集如下:
指令碼資料集編寫如下:
A | B | |
---|---|---|
1 | =create(client,total,date1,amount1,date2,amount2) |
|
2 | =demo.query(“select * from sales where year(ORDERDATE)=”+year) |
|
3 | =A2.group(CLIENT) |
|
4 | for A3 |
|
5 |
|
>client=A4.m(1).CLIENT |
6 |
|
>total=A4.sum(AMOUNT) |
7 |
|
=A4.sort(ORDERDATE:-1) |
8 |
|
>date1=B6.m(1).ORDERDATE |
9 |
|
>amount1=B6.m(1).AMOUNT |
10 |
|
>date2=B6.m(2).ORDERDATE |
11 |
|
>amount2=B6.m(2).AMOUNT |
12 | result A1 |
|
程式碼說明:
A1:新建一個空序表,準備存放結果資料。
A2:使用報表的資料來源 demo 用簡單的 sql 取出銷售資料,year 是報表的引數。
A3:對銷售資料按照 CLIENT 分組。
A4:開始對分組資料迴圈處理。
B4:-B11:求結果資料,插入 A1 中,這裡不再詳細介紹。
A12:將結果資料 A1 返回給報表。
3、報表設計
回到報表設計器主介面,報表設計如下圖:
儲存為 salary.rpx 即可。可以看到報表設計、計算指令碼編寫都在同一個 rpx 檔案中,管理變得簡單。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2667688/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實現報表與演算法的統一管理演算法
- 效能最佳化之報表資料預先計算
- 大資料交叉報表效能最佳化案例(方案)大資料
- 效能最佳化指南:效能最佳化的一般性原則與方法
- 高效能網站效能最佳化與系統架構網站架構
- oracle大表效能最佳化Oracle
- 前端工程的效能與最佳化前端
- Oracle的表空間的儲存管理與最佳化技術Oracle
- 機房收費系統之結賬與報表(二)週報表製作《一學就會傻瓜版》
- 高效能網站效能最佳化與系統架構(ZT)網站架構
- Enterprise Manager之oracle效能與管理Oracle
- 如何最佳化 RAG 系統的效能表現?10 條實用策略
- SQL效能最佳化之索引最佳化法SQL索引
- 效能最佳化之SQL語句最佳化SQL
- Oracle效能最佳化之SQL最佳化(轉)OracleSQL
- 最佳化系統效能:同步與非同步操作的巧妙平衡非同步
- 表管理之三:表與表結構的管理
- 報表工具對比之潤乾報表與銳浪報表對比
- Oracle效能最佳化之應用最佳化(轉)Oracle
- 談談Java報表之JasperReport改造一,動態報表Java
- Oracle效能最佳化 之 共享池Oracle
- FAT、NTFS檔案系統的大小限制與NTFS的效能及最佳化
- 【SQL 效能最佳化】表的三種連線方式SQL
- Sql最佳化之回表SQL
- Oracle效能最佳化之提升block的效率(轉)OracleBloC
- Oracle效能最佳化之Rollback(undo)Segment最佳化(轉)Oracle
- MYSQL效能最佳化分享(分庫分表)MySql
- cssProcessor.process(css.source, processOptions, 報錯(css壓縮之效能最佳化)CSS
- 【MySQL】效能最佳化之 覆蓋索引MySql索引
- Oracle效能最佳化 之 庫快取Oracle快取
- Oracle效能最佳化之虛擬索引Oracle索引
- mysql效能最佳化之table_cacheMySql
- Oracle效能最佳化之LockContention(轉)Oracle
- Oracle最佳化之單表分頁最佳化Oracle
- 一個 Shell 程式的效能最佳化(轉)
- HP UX H4262S 效能管理和最佳化整理 記憶體管理一UX記憶體
- babel-polyfill使用與效能最佳化Babel
- 安卓效能最佳化—使用ArrayMap與SparseArray安卓