帶隱藏格報表的效能優化方案

2021-10-01 18:31:44 字數 1396 閱讀 3614

報表中可以通過隱藏格進行有效的輔助計算,但如果報表攜帶大量隱藏格,又會對效能產生很大影響。這是因為大量隱藏格會占用記憶體、降低運算速度。而且隱藏單元格除了單元格值外,還同時記錄了很多顯示屬性值,比如:字型、顏色、顯示方式等等。雖然隱藏單元格並不顯示,但是這些屬性還在,如果帶著這些屬性計算,同樣也會影響計算速度。

下面這個《1997 年訂單情況統計》報表就是乙個典型的隱藏格影響效能的例子:

這個報表的「比去年同期」是指與去年同月份的比值,無對應月份則為空;要求只顯示本年資料。

實現這個報表需要通過格間計算,將 1996 年的資料讀取到報表單元格中,以便完成比上期、比去年同期的計算,但 1996 年的單元格並不顯示,因此需要隱藏起來。所以,這個報表的實際單元格數量要比客戶看到的多的多。我們可以通過潤幹報表的格間計算來看一下具體的實現:

從上圖可以看到,1996 年的行也在報表中,只是隱藏了起來。另外還有「年」列也是隱藏的。

針對這種情況,可以考慮採用潤幹報表的解決方案,將格間計算轉移到集算引擎,從而避免大量隱藏格和顯示屬性對計算效能的影響。潤幹報表方案和傳統方案在體系結構上的對比如下圖所示:

具體的實現方式如下:

1、先在集算器設計同期比、上期比的指令碼(sales.dfx):

**說明:

a1:連線資料來源 demo。

a2:取出兩年的訂單資料,按照年月彙總、排序,arg_year 是指令碼(及報表)的輸入引數。

a3:關閉資料連線。

a5:按月份排序。

a7:只選出本年資料,通過 a8 為報表返回結果集。

2、再在潤幹報表中定義報表引數和集算資料集:

3、在潤幹報表設計器中設計報表如下:

4、最後執行報表,輸入引數即可得到前面的報表。從上圖中可以看到,設計的報表中沒有隱藏格和複雜的公式,設計變得很簡單,實際執行效能也得到了提高。

帶隱藏格報表的效能優化方案

報表中可以通過隱藏格進行有效的輔助計算,但如果報表攜帶大量隱藏格,又會對效能產生很大影響。這是因為大量隱藏格會占用記憶體 降低運算速度。而且隱藏單元格除了單元格值外,還同時記錄了很多顯示屬性值,比如 字型 顏色 顯示方式等等。雖然隱藏單元格並不顯示,但是這些屬性還在,如果帶著這些屬性計算,同樣也會影...

帶隱藏格報表的效能優化方案

報表中可以通過隱藏格進行有效的輔助計算,但如果報表攜帶大量隱藏格,又會對效能產生很大影響。這是因為大量隱藏格會占用記憶體 降低運算速度。而且隱藏單元格除了單元格值外,還同時記錄了很多顯示屬性值,比如 字型 顏色 顯示方式等等。雖然隱藏單元格並不顯示,但是這些屬性還在,如果帶著這些屬性計算,同樣也會影...

帶隱藏格報表的效能優化方案

報表中可以通過隱藏格進行有效的輔助計算,但如果報表攜帶大量隱藏格,又會對效能產生很大影響。這是因為大量隱藏格會占用記憶體 降低運算速度。而且隱藏單元格除了單元格值外,還同時記錄了很多顯示屬性值,比如 字型 顏色 顯示方式等等。雖然隱藏單元格並不顯示,但是這些屬性還在,如果帶著這些屬性計算,同樣也會影...