開發彙總儲存大綱上的公式

公式會計算 Essbase 大綱中成員之間的關係。聚總儲存 (ASO) 公式與區塊儲存公式不同。您可以在 MDX 中將聚總儲存 (ASO) 公式寫入為數值表示式,然後將它們套用至立方體大綱,這些公式會在資料擷取時動態計算。

品類空間最佳化與 BSO 公式之間的差異

如果您熟悉區塊儲存 (BSO) 大綱的公式,請注意聚總儲存 (ASO) 中公式的差異。

  • Essbase 提供原生計算語言,可在區塊儲存大綱上撰寫公式。若要撰寫聚總儲存大綱的公式,請使用 MDX (多維表示式) 語言。

  • 直接將公式套用至大綱中的成員。對於區塊儲存立方體,公式可以放置在計算命令檔中。對於聚總儲存立方體,您無法將公式放置在計算命令檔中。

品類空間最佳化立方體的公式計算

只有在擷取資料時, Essbase 才會計算彙總儲存大綱中的公式。計算順序可能會影響計算結果。每當您在聚總儲存大綱中的多個維度上使用 MDX 公式時,設定每個成員或維度的解決順序是最佳作法。請參閱 ASO 立方體中的計算順序與解決順序

附註:

設計聚總儲存計算時,請考慮動態計算具有 MDX 公式的聚總儲存成員。動態計算的成員在查詢前會有 #MISSING 值。

使用 MDX 公式

MDX 公式必須一律為 MDX 數值運算式。在 MDX 中,數值運算式是函數、運算子及成員名稱的任意組合,可執行下列其中一個動作:

  • 計算值

  • 測試條件

  • 執行數學運算

數值表示式與集合表示式不同。集合表示式用於查詢軸,並描述成員與成員組合。數值表示式指定一個值。

數值表示式用於查詢中,以建立計算的成員,這些成員是在查詢的 WITH 區段中為分析目的而建立的邏輯成員,但大綱中不存在。

下列查詢定義計算的成員,並使用數值表示式為其提供值:

WITH MEMBER
 [Measures].[Prod Count]
AS
 'Count (
    Crossjoin (
     {[Units]},
     {[Products].children}
    )
  )', SOLVE_ORDER=1
SELECT
 {[Geography].children}
ON COLUMNS,
 {
  Crossjoin (
     {[Units]},
     {[Products].children}
    ),
   ([Measures].[Prod Count], [Products])
 }
ON ROWS
FROM
 ASOsamp.Sample

在範例查詢中,WITH 子句在 Measures 維度中定義計算的成員 Product Count,如下所示:

WITH MEMBER
 [Measures].[Prod Count]

數值表示式在 WITH 子句之後,並以單引號括住。在範例查詢中,數值表示式的指定方式如下:

'Count ( 
    Crossjoin (
     {[Units]},
     {[Products].children}
    )
  )'

SOLVE_ORDER 屬性會指定成員和公式的評估順序。請參閱 ASO 立方體中的計算順序與解決順序

附註:

如需範例中用來建置數值表示式之語法規則的說明,請參閱 CountCrossJoinChildren 函數的文件。

數值運算式也可作為 MDX 公式來計算現有大綱成員的值。

因此,您不必建立範例查詢,可以在名為 Prod Count 的 Measures 維度上建立大綱成員,該維度在大綱中計算的方式與範例查詢中的假設產品計數計算方式相同。

若要使用公式建立計算的成員,請執行下列動作:

  1. 建立成員。

  2. 將 MDX 公式附加至成員。

    假設您已建立範例 Prod Count 成員,則會使用下列公式,此公式等同於用於在範例查詢中建立計算成員的數值表示式:

    Count(Crossjoin ( {[Units]}, {[Products].children}))
  3. 驗證大綱以驗證公式。

    當您從聚總儲存立方體擷取資料時,公式會用來計算成員值。

    您可以在公式中使用替代變數。例如,您可以定義名為 "EstimatedPercent" 的替代變數,並提供不同的百分比作為替代變數值。請參閱導入變更資訊的變數

在將公式套用至大綱中的成員之前,您可以撰寫包含計算成員的 MDX 查詢。當您可以撰寫會傳回所要計算成員結果的 MDX 查詢時,就可以將數值表示式的邏輯套用至大綱成員,並驗證和測試表示式。請參閱撰寫 MDX 查詢