儲存格計算順序
Essbase 計算每個資料區塊內儲存格的順序,取決於您設定資料庫的方式。
每個資料區塊都包含其稀疏維度成員唯一組合的所有密集維度成員值。每個資料值都包含在資料區塊的儲存格中。
設定資料庫的方式決定密集維度成員在每個區塊內的計算順序,以及代表稀疏維度成員之區塊的計算順序。
請參閱下列範例:
儲存格計算順序:範例 1
在此範例中,這是最簡單的情況,這些條件為真:
-
沒有維度具有時間或科目標記。
-
合併 #MISSING 值的設定已開啟。
-
Market 和 Year 是密集維度。
Essbase 會依照資料庫大綱中定義的順序來計算密集維度。假設 Year 維度位於 Market 維度之前的資料庫大綱中,且會先計算。
下列方格顯示截塊 (資料區塊中儲存格的子集)。在方格中,時段儲存格的計算順序以數字 1 - 6 表示。
表 19-3 計算順序範例 1:輸入儲存格與計算儲存格
| 年度市場 | New York | 馬薩諸塞州 | East |
|---|---|---|---|
| 一月 | 112345 | 68754 | 3 |
| 二月 | 135788 | 75643 | 4 |
| 三月 | 112234 | 93456 | 5 |
| Qtr1 | 1 | 2 | 6 |
已將資料值載入下列輸入儲存格:
-
Jan -> 紐約
-
二月 -> 紐約
-
Mar -> 紐約
-
Jan -> 麻薩諸塞州
-
二月 -> 麻薩諸塞州
-
Mar -> Massachusetts
Essbase 會依下列順序計算儲存格。
-
第 1 季 -> 紐約
-
Qtr1 -> 麻薩諸塞州
-
Jan -> 東部
-
二月 -> 東部
-
Mar -> East
-
第 1 季 -> 東部
Qtr1 -> East 具有多個整合路徑;可以在 Market 或 Year 上合併。在「市場」上進行合併時,即為 Qtr1 -> New York 與 Qtr1 -> Massachusetts 的合併。在「年度」上進行合併時,會合併 Jan -> East、Feb -> East,以及 Mar -> East。
Essbase 知道 Qtr1 -> East 具有多個整合路徑。因此,它只透過合併 Qtr1 的值來計算 Qtr1 -> East 一次,並使用最後計算的維度的整合路徑 (在此範例中為 Market 維度),如下所示。
表 19-4 計算順序範例 1:結果
| 年度市場 | New York | 馬薩諸塞州 | East |
|---|---|---|---|
| 一月 | 112345 | 68754 | 181,099 |
| 二月 | 135788 | 75643 | 211,431 |
| 三月 | 112234 | 93456 | 205,690 |
| Qtr1 | 360,367 | 237,853 | 598,220 |
根據計算順序,如果您將成員公式放在 Qtr1 上,則在計算 Qtr1 -> East 時, Essbase 會忽略該公式。如果您將成員公式放置在 East 上,則會在 Essbase 合併 Qtr1 -> East with Market 時計算公式。
如有需要,您可以使用計算命令檔,依您選擇的順序計算維度。
儲存格計算順序:範例 2
在此範例中,這些條件為真:
-
沒有維度具有時間或科目標記。
-
合併 #MISSING 值的設定會關閉 (預設值)。
-
Market 和 Year 是密集維度。
Essbase 會依照資料庫大綱中定義的順序來計算密集維度。假設 Year 維度位於 Market 維度之前的資料庫大綱中,且會先計算。
下列方格顯示截塊 (資料區塊中儲存格的子集)。在方格中,時段儲存格的計算順序以數字 1 - 7 表示。
表 19-5 計算順序範例 2:輸入儲存格與計算儲存格
| 年度市場 | New York | 馬薩諸塞州 | East |
|---|---|---|---|
| 一月 | 112345 | 68754 | 4 |
| 二月 | 135788 | 75643 | 5 |
| 三月 | 112234 | 93456 | 6 |
| Qtr1 | 1 | 2 | 3 月 7 日 |
已將資料值載入下列輸入儲存格:
-
Jan -> 紐約
-
二月 -> 紐約
-
Mar -> 紐約
-
Jan -> 麻薩諸塞州
-
二月 -> 麻薩諸塞州
-
Mar -> Massachusetts
Essbase 會計算 1 月、2 月和 3 月之紐約、麻薩諸塞州和東部和東部儲存格的 Qtr1 儲存格。
-
第 1 季 -> 紐約
-
Qtr1 -> 麻薩諸塞州
-
第 1 季 -> 東部
-
Jan -> 東部
-
二月 -> 東部
-
Mar -> East
-
第 1 季 -> 東部
Qtr1 -> East 是在「年度」和「市場」整合路徑上計算的。首先,Qtr1 -> East 計算為 Qtr1 -> New York 與 Qtr1 -> Massachusetts 的合併。第二季 -> 東部是以一月 -> 東部、二月 -> 東部及三月 -> 東部的合併計算。
結果與範例 1 的結果完全相同。不過,已計算兩次 Qtr1 -> East。當您需要在父項層次載入資料時,此事實非常重要。
根據計算順序,如果您將成員公式放在 Qtr1 上,當 Essbase 合併 Qtr1 -> East with Market 時,會覆寫其結果。如果您將成員公式放置在 East 上,結果會保留,因為 Market 是最後計算的。
表 19-6 計算順序範例 2:結果
| 年度市場 | New York | 馬薩諸塞州 | East |
|---|---|---|---|
| 一月 | 112345 | 68754 | 181,099 |
| 二月 | 135788 | 75643 | 211,431 |
| 三月 | 112234 | 93456 | 205,690 |
| Qtr1 | 360,367 | 237,853 | 598,220 |
儲存格計算順序:範例 3
在此範例中,請考量密集、已儲存維度中的資料片段。資料庫的組態會決定維度的順序定義計算順序。計算區塊的合併路徑有兩個。
在此範例中,這些條件為真:
-
沒有維度具有時間或科目標記。
-
合併 #MISSING 值的設定會關閉 (預設值)。
-
已在上階層次載入資料值。
-
Market 和 Year 是密集維度。
Essbase 會依照資料庫大綱中定義的順序來計算密集維度。假設 Year 維度位於 Market 維度之前的資料庫大綱中,且會先計算。
下列方格顯示需要計算的時段 (資料區塊中儲存格的子集)。
表 19-7 計算順序範例 3:輸入儲存格與 #MISSING 值
| 年度市場 | New York | 馬薩諸塞州 | East |
|---|---|---|---|
| 一月 | #MISSING | #MISSING | 181,099 |
| 二月 | #MISSING | #MISSING | 211,431 |
| 三月 | #MISSING | #MISSING | 205,690 |
| Qtr1 | #MISSING | #MISSING |
儲存格的計算順序與儲存格計算順序:範例 2 中的順序相同。Qtr1 -> East 是在「年度」和「市場」整合路徑上計算的。
由於合併 #MISSING 值的設定已關閉,因此 Essbase 不會合併 #MISSING 值。因此,在父層級載入的資料不會被其下方的 #MISSING 值覆寫。
不過,如果有任何子項資料值不是 #MISSING,這些值就會合併並覆寫父項值。例如,如果 Jan -> New York 包含 50000.00,此值會覆寫在父項層次載入的值。
Essbase 必須計算 Qtr1 -> East 儲存格兩次,以確保計算儲存格的值。如果 Qtr1 -> East 僅根據最後的整合路徑計算,則結果為 #MISSING,這不是必要的結果。
結果顯示 Essbase 會先整合 Jan -> East、Feb -> East,以及 Mar -> East,然後在 Market 整合路徑上計算,先正確計算 Qtr1 -> East 儲存格。不過,它不會合併 Qtr1 -> 紐約和 Qtr1 -> 麻薩諸塞州的 #MISSING 值;因此,不會覆寫 Qtr1 -> East 中的值。
表 19-8 計算順序範例 3:結果
| 年度市場 | New York | 馬薩諸塞州 | East |
|---|---|---|---|
| 一月 | #MISSING | #MISSING | 181,099 |
| 二月 | #MISSING | #MISSING | 211,431 |
| 三月 | #MISSING | #MISSING | 205,690 |
| Qtr1 | #MISSING | #MISSING | 598,220 |
儲存格計算順序:範例 4
在此範例中,請考量已儲存維度中的資料片段。資料庫組態決定區塊的計算順序。
在此範例中,這些條件為真:
-
Year 維度標記為「時間」。
-
Measures 維度已標記為「帳戶」。
Essbase 會先計算標記為「帳戶」的維度,然後計算標記為「時間」的維度。因此,在此範例中,會在 Year 之前計算 Measures。
-
合併 #MISSING 值的設定會關閉 (預設值)。
-
「行銷」、「薪資」與「雜項費用」值已在季度載入 (階層 1)。
下圖顯示 Sample Basic 資料庫中 Measures 維度的 Profit 分支。此範例假設「總費用」已儲存 (不是動態計算成員)。
圖 19-9 計量維度的利潤分支

由於沒有公式且 #MISSING 未合併,因此不會覆寫上層值。具有兩個整合路徑 (非層級 0 評量) 的資料值會計算兩次。
下列方格顯示截塊 (資料區塊中儲存格的子集)。在方格中,時段儲存格的計算順序以數字 1 - 17 表示。
表 19-9 計算順序範例 4:輸入儲存格、#MISSING 值和計算儲存格
| 評量 / 年度 | 一月 | 二月 | 三月 | Qtr1 |
|---|---|---|---|---|
| 銷售管理系統 | 31538 | 32069 | 32213 | 13 |
| COGS | 14160 | 14307 | 14410 | 14 |
| 邊界 | 1 | 4 | 7 | 10/15 |
| Marketing | #MISSING | #MISSING | #MISSING | 15839 |
| 薪資 | #MISSING | #MISSING | #MISSING | 12168 |
| 雜項 | #MISSING | #MISSING | #MISSING | 233 |
| 總費用 | 2 | 5 | 8 | 11/16 |
| 利潤 | 3 | 6 | 9 | 12 月 17 日 |
下列儲存格具有多個整合路徑:
-
利潤 -> 第 1 季
-
費用總計 -> 第 1 季
-
利潤 -> 第 1 季
由於合併 #MISSING 值的設定已關閉,因此 Essbase 不會合併 #MISSING 值。在父項層級載入的任何資料都不會被 #MISSING 值覆寫,而 Essbase 會計算具有多個整合路徑兩次的儲存格。
根據計算順序,如果您在「利潤」上放置公式,則在 Qtr1 的合併會覆寫其結果。
結果顯示如下:
表格 19-10 計算順序範例 4:結果
| 評量 / 年度 | 一月 | 二月 | 三月 | Qtr1 |
|---|---|---|---|---|
| 銷售管理系統 | 31538 | 32069 | 32213 | 95,820 |
| COGS | 14160 | 14307 | 14410 | 42,877 |
| 邊界 | 17,378 | 17,762 | 17,803 | 52,943 |
| Marketing | #MISSING | #MISSING | #MISSING | 15839 |
| 薪資 | #MISSING | #MISSING | #MISSING | 12168 |
| 雜項 | #MISSING | #MISSING | #MISSING | 233 |
| 總費用 | 28,240 | |||
| 利潤 | 17,378 | 17,762 | 17,803 | 12 月 17 日 |
密集維度上公式的儲存格計算順序
將公式置於密集維度成員時,請仔細考慮儲存格計算順序。如前面的範例所示,最後計算的維度會覆寫具有多個整合路徑之儲存格的先前儲存格計算。
資料區塊內的儲存格計算順序不會受成員上的公式影響。當 Essbase 在資料區塊中遇到公式時,它會鎖定任何其他必要的資料區塊、計算公式,然後繼續進行資料區塊計算。
如果需要,您可以使用計算命令檔來變更維度的計算順序。請參閱開發區塊儲存立方結構的計算命令檔和開發區塊儲存立方結構的公式。