指定 Slicer 軸的內容 (MDX)
Slicer 軸會篩選多維度運算式 (MDX) SELECT 陳述式傳回的資料,限制傳回的資料,以便只傳回與指定成員交集的資料。可以將它視為查詢中一個額外且看不見的軸。Slicer 軸定義在 MDX SELECT 陳述式的 WHERE 子句中。
Slicer 軸語法
若要明確指定 Slicer 軸,您可以在 MDX 中使用 <SELECT slicer axis clause>,如以下語法所述:
<SELECT slicer axis clause> ::= WHERE Set_Expression
在顯示的 Slicer 軸語法中,Set_Expression 可以取得 Tuple 運算式或集合運算式,而 Tuple 運算式會視為一個集合,用於評估子句。如果已指定集合運算式,MDX 將嘗試評估此集合,彙總集合中每一個 Tuple 的結果資料格。換句話說,MDX 將會在此集合嘗試使用 Aggregate 函數,利用與其相關的彙總函式來彙總每個量值。此外,如果無法將集合運算式表示為屬性階層成員的交叉聯集,MDX 會將 Slicer 落在集合運算式之外的資料格,評估為 Null。
重要事項 |
---|
不像 SQL 中的 WHERE 子句,MDX SELECT 陳述式的 WHERE 子句絕對不會直接篩選查詢的資料列軸上傳回的內容。若要篩選查詢的資料列或資料行軸上出現的內容,您可以使用各種不同的 MDX 函數,例如 FILTER、NONEMPTY 和 TOPCOUNT。 |
隱含 Slicer 軸
如果 Cube 內階層的成員未明確地包含在查詢軸中,該階層的預設成員就會隱含地包含在 Slicer 軸中。如需有關預設成員的詳細資訊,請參閱<定義預設成員>。
範例
下列查詢不包括 WHERE 子句,而且會針對所有日曆年傳回 Internet Sales Amount 量值的值:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
加入 WHERE 子句,如下所示:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States])
不會變更查詢中資料列或資料行上傳回的內容,而會變更每一個資料格所傳回的值。在此範例中會切割查詢,好讓它針對所有日曆年中只居住在美國的客戶傳回 Internet Sales Amount 的值。不同階層中的多個成員可以加入至 WHERE 子句。下列查詢會針對所有日曆年中居住在美國而且已經購買 Category Bikes 產品的客戶顯示 Internet Sales Amount 的值:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[1])
如果您想要使用相同階層中的多個成員,您需要將集合併入 WHERE 子句中。例如,下列查詢會針對所有日曆年中居住在美國或英國而且已經購買 Category Bikes 產品的客戶顯示 Internet Sales Amount 的值:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE(
{[Customer].[Customer Geography].[Country].&[United States]
, [Customer].[Customer Geography].[Country].&[United Kingdom]}
, [Product].[Category].&[1])
如同上述,在 WHERE 子句中使用集合會以隱含方式彙總集合中的所有成員。在此案例中,此查詢會在每一個資料格中顯示美國和英國的彙總值。