MDX 儲存格計算 - Query-Scoped 儲存格計算

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

您可以使用多維度表示式 (MDX) 中的 WITH 關鍵詞來描述查詢內容中的匯出儲存格。 WITH 關鍵詞具有下列語法:

WITH CELL CALCULATION Cube_Name.CellCalc_Identifier  String_Expression  

CellCalc_Identifier 值是匯出儲存格名稱。 String_Expression 值包含正交、單維 MDX 集合表達式的清單。 這些集合表達式都必須解析為下表所列的其中一個類別。

類別 描述
空集 解析為空集的 MDX 集合運算式。 在此情況下,導出單元格的範圍是整個 Cube。
單一成員集 解析為單一成員的 MDX 集合表達式。
一組層級成員 解析為單一層級成員的 MDX 集合運算式。 這類集合表示式的範例是 Level_ExpressionMDX 函式 成員。 若要包含匯出成員,請使用 Level_ExpressionALLMembers MDX 函式。 如需詳細資訊,請參閱 AllMembers (MDX)
子系集合 解析為指定成員子系的 MDX 集合表示式。 這類集合表達式的範例是 子系Member_ExpressionLevel_ExpresionDesc_Flag) MDX 函式。 如需詳細資訊,請參閱 子系 (MDX)

如果 String_Expression 自變數未描述維度,MDX 會假設所有成員都是為了建構計算子庫而包含的。 因此,如果 String_Expression 自變數為 NULL,匯出數據格定義就會套用至整個 Cube。

MDX_Expression 自變數包含一個 MDX 運算式,評估為 String_Expression 自變數中定義之所有儲存格的儲存格值。

其他考慮

MDX 只會處理 CONDITION 屬性所指定的計算條件。 這個單一處理可提升對多個匯出數據格定義的評估效能,特別是跨 Cube 傳遞的重疊計算數據格。

發生此單一處理時,取決於匯出單元格定義的建立範圍:

  • 如果在全域範圍內建立,作為 Cube 的一部分,MDX 會在處理 Cube 時處理計算條件。 如果以任何方式修改 Cube 中的儲存格,且數據格會包含在計算儲存格定義的計算子集內,則在重新處理 Cube 之前,計算條件可能不精確。 例如,單元格修改可能會從回寫發生。 重新處理 Cube 時,會重新處理計算條件。

  • 如果在會話範圍中建立,MDX 會在會話期間發出 語句時處理計算條件。 如同全域建立的匯出數據格定義,如果修改儲存格,計算條件可能無法精確計算結果數據格定義。

  • 如果在查詢範圍中建立,MDX 會在查詢執行時處理計算條件。 數據格修改問題也適用於這裡,雖然數據延遲問題很少,因為 MDX 查詢執行處理時間過低。

另一方面,每當針對包含匯出數據格定義內含單元格的 Cube 發出 MDX 查詢時,MDX 就會處理計算公式。 不論建立範圍為何,都會發生此處理。

另請參閱

CREATE CELL CALCULATION 語句 (MDX)