計算通過
如果可能, Essbase 會以一次計算的方式計算區塊儲存資料庫。在某些情況下, Essbase 必須進行多次傳遞。
通常, Essbase 會在一個計算傳遞中計算 BSO 立方體,且每個必要的資料區塊只會讀取至記憶體一次,然後計算並儲存。不過,在某些情況下, Essbase 可能需要執行多次計算通過。後續階段, Essbase 會將資料區塊帶回記憶體中,對其執行進一步的計算,然後再次儲存。
當您執行資料庫的預設完整計算 (CALC ALL) 時, Essbase 會嘗試一次計算資料庫。如果您有標記為帳戶或時間的維度, Essbase 可能必須透過資料庫進行多個計算。
下表顯示如果您有標記為時間或科目的維度,而且帳戶維度上至少有一個公式,計算通過 Essbase 的數目會執行:
表格 19-11 帳戶與時間維度的計算通過
| 標記為帳戶的維度 | 標記為時間的維度 | 計算通過 | 每次計算通過時,Essbase 會根據下列各項進行計算: |
|---|---|---|---|
|
密集或稀疏 |
無。 |
1 |
所有維度 |
|
密集 |
密集 |
1 |
所有維度 |
|
密集 |
稀疏 |
2 |
傳送 1:帳戶與時間維度 Pass 2:其他維度 |
|
稀疏 |
稀疏 |
2 |
傳送 1:帳戶與時間維度 Pass 2:其他維度 |
|
稀疏 |
密集 |
2 |
Pass 1:帳戶維度 Pass 2:其他維度 |
如果您使用標記為「雙階段」的公式,則 Essbase 可能需要執行額外計算傳遞,才能計算這些公式。
當您使用計算命令檔來計算資料庫時,計算的數目會通過 Essbase 執行,視計算命令檔而定。
Essbase 會寫入應用程式記錄每個階段的維度計算順序,以及已執行多維資料庫的週期數。
對於每個區塊, Essbase 會根據區塊中的值類型,決定是否執行密集或稀疏計算。當您執行預設計算 (CALC ALL) 時,會根據區塊號碼,依序處理每個區塊。
Essbase 會使用此程序來計算區塊:
-
如果您已開啟「智慧型計算」,而且不需要計算區塊 (如果標示為 clean), Essbase 會略過區塊並移至下一個區塊。
-
如果區塊需要重新計算, Essbase 會檢查區塊是否為層級 0、輸入或上層區塊。
-
如果區塊是層級 0 區塊或輸入區塊,則 Essbase 會對區塊執行密集計算。系統會計算區塊中的每個儲存格。
-
如果區塊是上層區塊,則 Essbase 會合併值或對區塊執行稀疏計算。
每個上層區塊的稀疏成員組合至少包含一個父項成員。Essbase 會根據父項成員的維度來合併或計算區塊。例如,如果上層區塊是來自 Sample.Basic 資料庫的 Product -> Florida,則 Essbase 會選擇 Product 維度。
如果區塊的稀疏成員組合具有多個父項成員, Essbase 會在包含父項成員的計算順序中選擇最後一個維度。例如,如果區塊是用於「產品」->「東部」,而且您在 Sample.Basic 資料庫上執行預設計算,則 Essbase 會選擇包含 East 的 Market 維度。Market 維度是預設計算順序中的最後一個維度,因為它放置在資料庫大綱中的 Product 維度之後。請參閱成員計算順序。
根據選擇的稀疏維度, Essbase 會合併值或對區塊執行稀疏計算:
-
如果公式套用至所選稀疏維度上的區塊成員,則 Essbase 會對稀疏維度執行公式計算。Essbase 會評估區塊中的每個儲存格。公式只會影響稀疏維度上的成員,因此整體計算效能不會受到重大影響。
-
如果選擇的稀疏維度是預設整合,則 Essbase 會合併值,並採用先前計算的子區塊值。
-