動態計算如何變更計算順序

動態計算可最佳化批次計算效能,並變更 Essbase 計算值的順序。稀疏維度會先計算。在非對稱資料集使用動態計算或搭配「雙傳」成員時,請採取預防措施。

使用動態計算的資料值會變更 Essbase 計算值的順序,而且對於管理立方體的方式可能會有影響。

動態計算的計算順序

當您使用動態計算時, Essbase 會先計算稀疏維度的值,然後再計算密集。密集值是以帳戶、時間、時間序列、其他密集維度以及最終屬性的順序來計算。

Essbase 動態計算資料值時,會以不同於批次資料庫計算順序的順序來計算資料。

在批次計算期間, Essbase 會依下列順序計算資料庫:

  1. 標記為帳戶的維度

  2. 標示為時間的維度

  3. 其他密集維度 (按照它們在資料庫大綱中的顯示順序)

  4. 其他稀疏維度 (按照它們在資料庫大綱中的顯示順序)

  5. 二次運算

請參閱區塊儲存資料庫計算順序

對於動態計算值,在擷取時, Essbase 會依下列順序計算資料庫來計算值:

  1. 稀疏維度

    • 如果標記為時間的維度為稀疏,而資料庫大綱使用時間序列資料,則 Essbase 會根據時間維度的稀疏計算。

    • 否則, Essbase 會根據其通常用於批次計算的維度進行計算。

  2. 密集的維度

    1. 標記為帳戶的維度 (若為密集)

    2. 標記為時間的維度 (若為密集)

    3. 時間序列計算

    4. 剩餘密集維度

    5. 二次運算

    6. 屬性

如果資料擷取使用屬性成員,則計算順序中的最後一個步驟就是屬性的總和。屬性計算會對符合查詢中指定之屬性成員的資料區塊執行即時聚總。當查詢包含二次計算成員時,屬性計算會在收集所有聚總值之後套用二次計算成員公式。此雙流程計算會使用屬性計算中的資料值,而不是實際資料區塊中的值。

在查詢中使用屬性成員會導致 Essbase 忽略動態計算中的「時間平衡」成員值。在不使用屬性的擷取期間,「時間平衡」成員的值會套用至計算。使用與不使用屬性成員之間的計算程序差異,會針對任何動態計算的上層時間成員產生不同的結果。

在不使用屬性的擷取期間,這些動態計算的成員會在最後一個步驟中計算,因此可正確套用時間平衡功能。不過,在擷取使用屬性時,屬性的總和是最後套用的步驟。計算順序中的差異會為動態計算的上層時間成員產生兩個不同的可預測結果。

動態計算雙階段成員的計算順序

動態計算會變更 Essbase 計算值的順序。將動態計算與「雙傳」成員搭配使用時,請採取預防措施。請考慮改用混合模式來搭配解決順序。

請考量下列資訊,以確保 Essbase 在動態計算標記為雙次計算的成員資料值時,會產生必要的計算結果 (請參閱雙次計算 )。

附註:

請勿在混合模式立方體使用二次計算。只使用解決順序

如果多個 Dynamic Calc 密集維度成員標記為雙通, Essbase 會在第一次執行時執行動態計算,然後以下列順序計算雙通成員:

  1. 帳戶維度中的兩階段成員 (如果有的話)

  2. 時間維度中有兩輪成員 (若有的話)

  3. 在剩餘密集維度中,以維度在大綱中的顯示順序進行兩階段成員

例如,在 Sample.Basic 資料庫中,假設下列項目:

  • 密集 Measures 維度 (標記為帳戶的維度) 中的利潤百分比會標記為動態計算並經過兩次。

  • 密集 Scenario 維度中的差異會標記為動態計算和兩次。

Essbase 會先計算帳戶維度成員。因此, Essbase 會計算「利潤百分比」(來自「測量」維度),然後計算「差異」(來自 Scenario 維度)。

如果「案例」是稀疏維度, Essbase 會先依照動態計算的一般計算順序來計算「差異」。Essbase 接著會計算利潤百分比。請參閱動態計算的計算順序

此計算順序不會產生必要結果,因為 Essbase 需要使用「利潤百分比」上的公式來計算「利潤百分比」->「差異」,而非「差異」上的公式。您可以將 Scenario 設為密集維度以避免此問題。如果 Measures 維度 (帳戶維度) 為稀疏,則不會發生此問題,因為 Essbase 仍會先計算「利潤百分比」。

非對稱資料的計算順序

Essbase 動態計算可能不適用於非對稱資料集。根據您的使用案例檢閱本主題中的範例。

由於動態計算的計算順序與批次計算的計算順序不同,因此在某些立方體大綱中,如果您將特定成員標記為動態計算,可能會得到不同的計算結果。當 Essbase 動態計算非對稱資料時,會發生這些差異。

無論計算哪個維度,對稱資料計算都會產生相同的結果。

使用下面對稱範例中的資料集,無論您是沿著標記為時間的維度或標記為帳戶的維度進行計算,Qtr1-> Profit 的計算都會產生相同的結果。依時間維度計算,新增 1 月、2 月和 3 月的值:

50+100+150=300 

依科目維度計算,從季別 1 減去季別 1 -> 銷貨成本 -> 銷售:

600–300=300 

表 21-1 對稱計算的範例

時間 -> 帳戶 一月 二月 三月 Qtr1

銷售

100

200

300

600

COGS

50

100

150

300

利潤 (銷售 – 銷貨成本)

50

100

150

300

非對稱資料計算會隨著不同維度以不同方式計算。

使用下面非對稱範例中的資料集,當您沿著 Market 維度計算時,East -> Sales 的計算會產生正確的結果,但在沿 Accounts 維度計算時會產生不正確的結果。依 Market 維度計算,新增 New York、Florida 和 Connecticut 的值會產生正確的結果:

50 + 100 + 100 = 250

依帳戶維度計算,將「East」->「Price」值乘以「East」->「UnitsSold」值會產生不正確的結果:

15 * 50 = 750

表格 21-2 非對稱計算的範例

市場 -> 帳戶 New York 佛羅里達 康乃狄克 East

售出單位

10

20

20

50

價格

5

5

5

15

銷售 (價格 * 已售出單位)

50

100

100

250

在下列大綱中,East 為稀疏維度,而 Accounts 為密集維度:


此圖像顯示 East 為稀疏維度,而 Accounts 為密集維度的大綱。

如果 East 和 Sales 標記為動態計算,則 Essbase 會計算與 East 和 Sales 未標記為動態計算不同的結果。

如果 East 和 Sales 不是動態計算成員,則 Essbase 會透過計算這些維度來產生正確的結果:

  1. 密集帳戶維度—計算紐約、佛羅里達州和康乃狄克州的 UnitsSold、Price 和 Sales 值

  2. 稀疏的 East 維度 — 為紐約、佛羅里達州和康乃狄克州的 UnitsSold、Price 和 Sales 聚總計算值,以取得 East 的 Sales 值

如果 East 和 Sales 是動態計算成員,則 Essbase 會透過計算下列維度產生不正確的結果:

  1. 稀疏的 East 維度 - 彙總紐約、佛羅里達州和康乃狄克州的 UnitsSold、Price 和 Sales 值,以取得 East 的值

  2. East -> Sales 的值 - 取得 East 資料區塊中的聚總值,並使用這些值執行公式計算,以取得 Sales 的值

若要避免此問題,並確保您取得所需的結果,請勿將「銷售」成員標記為動態計算

混合模式的解決順序

Essbase 中的解決順序決定了在混合模式執行動態計算的順序。您可以自訂解決順序或接受預設值,預設值已針對高效能和相依性分析進行最佳化。

解決順序的概念適用於動態成員公式或計算命令檔中動態相依性所起始的動態計算執行。在多維查詢中評估儲存格時,除非指定解決順序以指示所需的計算優先順序,不然計算的解決順序可能並不明確。

您可以設定維度或成員的解決順序,或使用預設的 Essbase 解決順序。您可以設定的最低解決順序為 0,最高為 127。解決順序越高表示成員的計算順序越後;例如,解決順序為 1 的成員會在解決順序為 2 的成員之前被解決。

如果啟用混合模式,預設的解決順序 (又稱為計算順序) 與區塊儲存資料庫的解決順序極為相近:

維度/成員類型 預設解決順序值
已儲存的成員 0
稀疏維度成員 10
密集帳戶維度成員 30
密集時間維度成員 40
密集一般維度成員 50
屬性維度成員 90
二次計算動態成員 100
MDX 計算的成員或具名集合 (在 MDX 與 中定義) 120

總結來說,混合模式的預設解決順序規定已儲存成員的計算順序在動態計算成員之前,而稀疏維度的計算順序則在密集維度之前,並且依照它們在大綱中的顯示順序進行 (從上到下)。

沒有指定解決順序的動態成員 (有公式或沒有公式) 會沿用其維度的解決順序,但若被標示為二次計算則除外。

在區塊儲存模式中,二次計算是可以套用到含有公式且必須計算兩次才能產生正確值之成員的設定。

附註:

請勿在混合模式立方體使用二次計算。只使用解決順序

二次計算不適用於混合模式,任何標示為二次計算的成員都會最後計算 (在屬性之後)。在混合模式中,預設解決順序若不符合您的需求,您應該實行自訂解決順序 (而非二次計算)。

混合模式的預設解決順序最適用於以下案例:

  • 往前參照,其中的動態成員公式參照大綱順序中順序比較後面的成員。混合模式沒有大綱順序相依性。

  • 根據大綱順序的子項值聚總與使用同等公式的聚總極為相似。

  • 稀疏公式內存在動態密集成員相依性。在混合模式中,稀疏公式若參照密集動態成員,因為稀疏維度會先計算的關係,所以會忽略此參照。若要改變此情況,請為稀疏維度指定高於 (計算順序晚於) 密集維度的解決順序。

自訂解決順序

如果您需要調整混合模式中的動態計算行為,自訂維度和成員解決順序有助於達成此目的,且無須對大綱進行重大變更。

如果實行自訂解決順序,它會覆寫預設解決順序。成員或維度的解決順序若相同,則會依照它們在大綱中的顯示順序 (從上到下) 決定順序。

除非您自訂特定成員的解決順序,否則會將最上層維度成員的解決順序套用至該維度的所有動態成員。

若要變更解決順序,請使用 Essbase Web 介面中的大綱編輯器,或使用智慧型檢視 (請參閱變更所選 POV 的解決順序 )。

您可以設定的最低解決順序為 0,最高為 127。解決順序越高表示該成員的計算順序越後面。

若要瀏覽解決順序的使用案例,請參閱 Essbase 檔案目錄內應用程式工作簿儲藏庫之「技術」區段中的「解決順序」樣板。

非混合模式解決順序的注意事項

在聚總儲存立方體中,

  • 所有維度的解決順序都設為 0。

  • 會依大綱順序執行聚總,下列情況除外:

    • 優先處理已儲存階層成員。
    • 其次處理動態階層成員。

在非混合區塊儲存立方體中,預設解決順序如下:

  • 稀疏優先於密集

  • 帳戶優先於時間

  • 屬性最後

附註:

若將帳戶成員的解決順序手動設為高於時間成員的解決順序,則會在動態時間序列成員之後評估帳戶。