如果計算成員僅限於單一多維度表達式 (MDX) 查詢,您可以使用 WITH 關鍵詞來定義該計算成員。 使用 WITH 關鍵詞建立的計算成員,在查詢執行完畢後將不復存在。
如本主題所述,WITH 關鍵詞的語法相當有彈性,甚至允許匯出成員以另一個導出成員為基礎。
備註
如需有關計算成員的詳細資訊,請參閱在 MDX 中建立計算成員(MDX)。
使用關鍵字語法
使用下列語法將 WITH 關鍵詞新增至 MDX SELECT 語句:
[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ] SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ]FROM <SELECT subcube clause> [ <SELECT slicer axis clause> ][ <SELECT cell property list clause> ]
<SELECT WITH clause> ::=
( [ CALCULATED ] MEMBER <CREATE MEMBER body clause>) | <CREATE MEMBER body clause> ::= Member_Identifier AS 'MDX_Expression'
[ <CREATE MEMBER property clause> [ , <CREATE MEMBER property clause> ... ] ]
<CREATE MEMBER property clause> ::=
( MemberProperty_Identifier = Scalar_Expression )
在WITH關鍵字的語法中,Member_Identifier 值是計算成員的完整名稱。 這個完整名稱包含與計算的成員相關聯的維度或層級。 值 MDX_Expression 會在評估表達式值之後,傳回導出成員的值。 為計算成員指定固有儲存格屬性值時,可以選擇性地通過在MemberProperty_Identifier值提供屬性名稱,以及在Scalar_Expression值提供屬性值來完成。
WITH 關鍵詞範例
下列 MDX 查詢定義了一個計算成員,[Measures].[Special Discount],該成員會根據原始折扣金額計算特殊折扣。
WITH
MEMBER [Measures].[Special Discount] AS
[Measures].[Discount Amount] * 1.5
SELECT
[Measures].[Special Discount] on COLUMNS,
NON EMPTY [Product].[Product].MEMBERS ON Rows
FROM [Adventure Works]
WHERE [Product].[Category].[Bikes]
您也可以在階層中的任何位置建立計算成員。 例如,下列 MDX 查詢 [BigSeller] 定義了假設的銷售多維數據集的計算成員。 這個計算成員會判斷指定的商店啤酒和葡萄酒的銷售額是否至少達到 100.00。 不過,查詢不是將 [BigSeller] 計算成員建立為維度的 [Product] 子成員,而是建立為成員 [Beer and Wine] 的子成員。
WITH
MEMBER [Product].[Beer and Wine].[BigSeller] AS
IIf([Product].[Beer and Wine] > 100, "Yes","No")
SELECT
{[Product].[BigSeller]} ON COLUMNS,
Store.[Store Name].Members ON ROWS
FROM Sales
計算成員不一定只依賴資料立方中的現有成員。 計算成員也可以以相同 MDX 運算式中定義的其他計算成員為基礎。 例如,下列 MDX 查詢會使用第一個匯出成員 [Measures].[Special Discount]中建立的值 ,來產生第二個匯出成員 [Measures].[Special Discounted Amount]的值。
WITH
MEMBER [Measures].[Special Discount] AS
[Measures].[Discount Percentage] * 1.5,
FORMAT_STRING = 'Percent'
MEMBER [Measures].[Special Discounted Amount] AS
[Measures].[Reseller Average Unit Price] * [Measures].[Special Discount],
FORMAT_STRING = 'Currency'
SELECT
{[Measures].[Special Discount], [Measures].[Special Discounted Amount]} on COLUMNS,
NON EMPTY [Product].[Product].MEMBERS ON Rows
FROM [Adventure Works]
WHERE [Product].[Category].[Bikes]