潤幹報表5 巧用集算器資料集

2021-08-27 23:55:13 字數 1094 閱讀 4770

看如下圖所示報表:

這個報表從樣式來看,可以看作是乙個簡單的網格式報表,統計著各種收支金額,但因為取數負責,每個格仔的資料都來自乙個負責的sql資料集,並且涉及十幾個,乃至幾十個資料集,藍色區域裡每個格仔都需要從各自的資料集裡檢索遍歷,查詢與左表頭關聯的記錄。為了方便體會這一點,我們將上圖報表簡化一點,如下圖所示:

c1,d1 單元格都分別從ds2,ds3中取數,並通過關聯條件與b1關聯,諸如這樣十幾個資料集在報表端的遍歷、關聯,如果遇到大資料量,大的併發,速度就會受到影響,並且這也只適合一對一的情況,如果遇到一對多的情況,就無法如此運用了。

所以,如果這些資料集能集成為乙個資料集,所有的關聯都放在資料集裡去處理,那麼報表端的計算就變得靈活簡單的多,但是sql資料集去完成這個拼接比較困難,也會很慢,集算器資料集正好能完成這個工作,速度也會大幅度提公升,解決思路如下:

1. 通過  fork  多執行緒取數,並行堵出每乙個資料集

2. 通過 join/align 完成每個資料集的橫向拼接

eg: =join@l(a3(1):amount1,訂單id;a3(2):amount2,訂單id;a3(3):amount3,訂單id)

3.  通過 new 返回乙個資料集

eg: =a5.new(amount1.訂單id,amount1.訂單金額,amount2.數量,amount3.回款額)

以上只是提供乙個思路,具體運用哪個函式,哪個選項,還需要根據實際資料合理選擇,集算器函式具體用法請參考《集算器函式參考》。

除此之外,像常見的需要用於匯**計的原始資料量非常大,報表並不大的情況,如果每次生成報表都需要現算,一方面非常慢,另一方面資料庫的壓力會很大,此時傳統辦法可以採用儲存過程資料集對資料預先進行一次壓縮,生成中間表,然後再基於中間表生辰報表,可以大大提高運算速度並減輕資料庫的壓力。但是儲存過程如果指令碼過於複雜,那麼後期維護比較麻煩,而且資料處理的靈活性也受限,這個時候用集算器資料集或者指令碼資料集來處理資料,就方便的多。

巧用集算器資料集

看如下圖所示報表 這個報表從樣式來看,可以看作是乙個簡單的網格式報表,統計著各種收支金額,但因為取數複雜,每個格仔的資料都來自乙個複雜的 sql 資料集,並且涉及十幾個,乃至幾十個資料集,藍色 區域裡每個格仔都需要從各自的資料集裡檢索遍歷,查詢與左表頭關聯的記錄。為了方便體會這一點,我們將上圖報表簡...

潤幹報表V5 Api設定內建資料集

內建資料集是指資料集的結構和資料都存入報表模板,運算報表的時候不再需要從資料來源取數。一般情況下,主要滿足以下兩種需要 1 可以讓使用者快速的體驗建立報表的過程,只需在報表設計器中定義乙個內建資料集,錄入一些模擬資料就可以在報表中使用了,這樣給使用者的體驗過程帶來了極大的方便。2 可以用於報表的跟蹤...

潤幹報表如何使用動態xml資料集

需求描述 用xml檔案作為報表資料集的資料 並且xml檔案是程式自動生成的,每月根據日期生成xml檔案,需要能動態改變報表資料集引用的xml檔名。實現方法 潤幹報表的資料集可以通過指定的xml檔案,但是如果該xml檔案需要根據某個引數 比如月份 來動態的獲得,在定義資料集時就無法設定了。目前xml檔...