要動態計算的值
動態計算某些資料值會減少批次計算時間和磁碟使用量,但可能會增加擷取時間。決定要動態計算的 Essbase 成員時,請使用下列主題中所述的準則。
除了沒有公式、僅標籤成員和共用成員的層級 0 成員之外,您可以將任何成員標記為動態計算。
您選擇要動態計算哪些成員取決於資料庫結構,以及 (1) 需要減少計算時間和磁碟使用量之間的平衡,以及 (2) 使用者需要快速擷取資料。
在「基本範例」資料庫中,Year 維度是動態計算。
圖 21-1 顯示動態計算成員的基本大綱範例

在智慧型檢視中,使用者可以顯示視覺提示,以區分動態計算的值。
開發包含動態計算值的查詢時,請考慮使用智慧型檢視「不使用資料導覽」選項,以便在建立測試查詢時, Essbase 不會動態計算和儲存值。
密集成員與動態計算
密集維度中 Essbase Dynamic Calc 成員的良好候選項目包括上層成員,以及具有簡單公式的層級 0 成員。
請考慮對密集維度的成員進行以下變更:
-
將密集維度的上層成員標記為動態計算。
-
嘗試將密集維度的層級 0 成員加上簡單的公式作為動態計算,並評估擷取時間的增加。
簡單公式不需要 Essbase 執行昂貴的計算。包含財務函數或跨維度運算子 (->) 的公式是複雜的公式。
稀疏成員與動態計算
稀疏維度中 Essbase Dynamic Calc 成員的良好候選項目包括沒有太多子項的上層成員,以及具有公式的成員。
請考慮對稀疏維度的成員進行下列變更:
-
將具有六個或更少子項之稀疏維度的某些上層成員標記為動態計算。
-
將具有複雜公式的稀疏維度成員標記為動態計算。
複雜的公式需要 Essbase 執行昂貴的計算。例如,任何包含財務函數的公式都是複雜的公式。請參閱複雜 Essbase 成員公式
-
將您經常重組結構之維度中的上層成員標記為動態計算。
-
請勿將具有 20 個或更多子代的上層、稀疏維度成員標記為動態計算。
上下階關係與動態計算
有一個子女的父母
如果父項成員有一個子項成員,而且您將子項標記為動態計算,您也必須將父項標記為動態計算。
不過,如果父成員有一個子成員,而父成員是動態計算成員,則您不需要將子項標記為動態計算。
批次計算中的動態計算相依性
如果成員的計算取決於動態計算子成員的計算,則 Essbase 必須在批次資料庫計算期間先計算子成員,才能計算父項。因此,不會縮短一般計算時間。此需求適用於稀疏維度和密集維度的成員。
例如,在下圖中,Qtr1 是動態計算成員。其子項 1 月、2 月和 3 月不是動態的。其父系 Year 不是動態的。當 Essbase 在批次計算期間計算「年度」時,必須合併其子項的值,包括 Qtr1。因此,雖然 Qtr1 為動態計算,但計算 Qtr1 必須花費額外的時間。
圖 21-2 以 Qtr1 作為動態計算成員的年度維度

計算指令碼與動態計算
您無法對動態計算成員執行計算指令碼計算。如果您使用計算命令檔來明確計算成員,請勿將該成員標記為動態計算。
當 Essbase 在計算指令碼中計算 CALC ALL 或 CALC DIM 陳述式時,會略過動態計算成員的計算。
同樣地,如果使用成員集函式 (例如 @CHILDREN 或 @SIBLINGS) 來指定要計算的成員清單,則 Essbase 會略過結果清單中任何動態計算成員的計算。
如果您在計算指令碼中明確指定動態計算成員,計算指令碼將會失敗。
例如,只有在 Qtr1 不是動態計算成員時,下列計算命令檔才有效:
FIX (East, Colas)
Qtr1;
ENDFIX公式與動態計算的成員
您可以在 Essbase 大綱公式中使用動態計算成員,但不能在計算命令檔中使用公式目標。
當您將公式套用至大綱時,您可以在公式中包含動態計算的成員。例如,如果 Qtr1 是動態計算成員,您可以在資料庫大綱的 Qtr1 上放置下列公式:
Qtr1 = Jan + Feb;您無法在計算指令碼中將動態計算的成員設為公式計算的目標。Essbase 不會保留動態計算值的記憶體,也無法指派值給它。例如,如果 Qtr1 是動態計算成員,如果您在計算命令檔中包含下列公式, Essbase 便會顯示語法錯誤:
Qtr1 = Jan + Feb;如果 Qtr1 是動態計算成員,而 Year 不是,您可以在計算命令檔中使用下列公式:
Year = Qtr1 + Qtr2;此公式有效,因為 Essbase 未指派值給動態計算的成員。
附註:
當您參照動態計算的成員時,無論是在大綱公式或計算命令檔中, Essbase 都會中斷一般計算來執行動態計算,這會影響效能。