要動態計算的值

動態計算某些資料值會減少批次計算時間和磁碟使用量,但可能會增加擷取時間。決定要動態計算的 Essbase 成員時,請使用下列主題中所述的準則。

除了沒有公式、僅標籤成員和共用成員的層級 0 成員之外,您可以將任何成員標記為動態計算

您選擇要動態計算哪些成員取決於資料庫結構,以及 (1) 需要減少計算時間和磁碟使用量之間的平衡,以及 (2) 使用者需要快速擷取資料。

在「基本範例」資料庫中,Year 維度是動態計算

圖 21-1 顯示動態計算成員的基本大綱範例


具有「動態計算」成員的 Year 維度

智慧型檢視中,使用者可以顯示視覺提示,以區分動態計算的值。

開發包含動態計算值的查詢時,請考慮使用智慧型檢視「不使用資料導覽」選項,以便在建立測試查詢時, 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 作為動態計算成員的年度維度


此圖像顯示 Year 維度,其中 Qtr1 展開為 Jan、Feb 和 March,且只有 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 都會中斷一般計算來執行動態計算,這會影響效能。

指令碼和動態計算的成員

若要避免在有執行時期相依的動態計算成員公式時進行過度計算,您可以將 SET FRMLRTDYNAMIC OFF 新增至 Essbase 計算指令碼。

計算命令檔的前處理階段無法判斷大綱是否包含密集的動態計算成員。如果指令碼包含執行時期相依的公式,則 Essbase 必須在執行指令碼時計算所有密集的動態計算成員。使用 SET FRMLRTDYNAMIC OFF 計算命令可停止計算這些動態計算成員來改善效能。