管理範圍與內容 (MDX)
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
在 SQL Server SQL Server Analysis Services Microsoft中,多維度表達式 (MDX) 腳本可以套用至整個 Cube,或套用至腳本執行內的特定部分 Cube 的特定部分。 MDX 腳本可以透過使用計算階段,對 Cube 內的計算採取分層方法。
注意
如需計算階段如何影響計算的詳細資訊,請參閱 瞭解傳遞順序和解決順序 (MDX)。
若要控制 MDX 腳本內的計算傳遞、範圍和內容,請特別使用 CACULATE 語句、This 函式和 SCOPE 語句。
使用 CALCULATE 語句
CALCULATE 語句會以匯總的數據填入 Cube 中的每個數據格。 例如,預設 MDX 腳本在腳本開頭有單一 CALCULATE 語句。
如需 CALCULATE 語句語法的詳細資訊,請參閱 CALCULATE 語句 (MDX)。
注意
如果腳本包含包含 CALCULATE 語句的 SCOPE 語句,MDX 會在 SCOPE 語句所定義的 Subcube 內容中評估 CALCULATE 語句,而不是針對整個 Cube。
使用此函式
此 函式可讓您擷取 MDX 腳本中的目前子庫。 您可以使用 此 函式,將目前 Subcube 內的儲存格值快速設定為 MDX 運算式。 您通常會使用 此 函式搭配 SCOPE 語句,以在特定計算階段期間變更特定 Subcube 的內容。
注意
如果腳本包含包含 This 函式的 SCOPE 語句,MDX 會在 SCOPE 語句所定義的 Subcube 內容中評估 此 函式,而不是針對整個 Cube。
此函式範例
下列 MDX 腳本命令範例會使用 This 函式,在 Adventure Works DW 多維度 2012 範例 Cube 的 Finance 量值群組中,針對 Customer 維度中 Redmond 成員的子系,將 Amount 量值的值提高至 10%:
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS,
[Measures].[Amount], *);
/* This expression sets the value of the Amount measure */
THIS = [Measures].[Amount] * 1.1;
END SCOPE;
如需 此 函式語法的詳細資訊,請參閱 This (MDX)。
使用 SCOPE 語句
SCOPE 語句會定義目前包含的 Subcube,並指定 MDX 腳本中其他 MDX 運算式和語句的範圍。 MDX 會評估這個其他 MDX 運算式和語句,包括 此 函式和 SUBcube 內容中的 CALCULATE 語句。
SCOPE 語句是動態的,但本質上不是反覆的。 SCOPE 語句中包含的語句會執行一次,但 Subcube 本身可以動態判斷。 例如,您有一個名為SampleCube的 Cube。 針對 SampleCube Cube,您可以套用下列 SCOPE 語句來定義 Subcube,將內容定義為 Measure 維度內的 ALLMEMBERS:
SCOPE([Measures].ALLMEMBERS);
THIS = [Measures].ALLMEMBERS.COUNT;
END SCOPE;
此 SCOPE 語句內的語句和表達式會執行一次。
現在,企業用戶會針對 SampleCube Cube 執行下列 MDX 查詢,其中包含一個名為 ExistingMeasure 的量值:
WITH MEMBER [Measures].[NewMeasure] AS '1'
SELECT
[Measures].ALLMEMBERS ON COLUMNS,
[Customer].DEFAULTMEMBER ON ROWS
FROM
[SampleCube]
從查詢傳回的數據格集類似於下表所示的輸出。
[ExistingMeasure] | [NewMeasure] | |
---|---|---|
[客戶]。[全部] | 2 | 2 |
查看傳回的數據格集,請注意 MDX 腳本中 SCOPE 語句中包含的 ExistingMeasure 值如何在定義 NewMeasure 量值之後動態更新。
SCOPE 語句可以巢狀在另一個 SCOPE 語句內。 不過,由於 SCOPE 語句不是反覆的,巢狀 SCOPE 語句的主要目的是進一步細分 Subcube 進行特殊處理。
SCOPE 語句範例
下列 MDX 腳本範例會使用 SCOPE 語句,將 Adventure Works DW 多維度 2012 範例 Cube 之 Finance 量值的值設定為 10% 更高的 Customer 維度 Redmond 成員子系。 不過,另一個 SCOPE 語句會變更 subcube,以包含 2002 日曆年度子系的 Amount 量值。 最後,Amount 量值接著只會針對該 Subcube 進行匯總,讓 Amount 量值在其他行事歷年份中的匯總值保持不變。
/* Calculate the entire cube first. */
CALCULATE;
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS,
[Measures].[Amount], *);
/* This expression sets the value of the Amount measure */
THIS = [Measures].[Amount] * 1.1;
END SCOPE;
如需 SCOPE 語句語法的詳細資訊,請參閱 SCOPE 語句 (MDX)。
另請參閱
MDX 語言參考 (MDX)
基本 MDX 腳稿 (MDX)
MDX 查詢基本概念 (Analysis Services)