交叉分析篩選器軸會篩選多維度表達式 (MDX) SELECT 語句傳回的數據,限制傳回的數據,以便只傳回與指定成員交集的數據。 它可以視為查詢中不可見的額外軸。 切片器軸定義於 MDX 中 SELECT 語句的 WHERE 子句中。
切片器軸語法
在 MDX 中若要明確指定交叉分析篩選器軸,應使用 <SELECT slicer axis clause>,如下語法所示:
<SELECT slicer axis clause> ::= WHERE Set_Expression
在顯示的交叉分析篩選器軸語法中,Set_Expression 可以採用 Tuple 運算式,該運算式在評估子句的過程中會被視為集合,或採用集合運算式。 如果指定了集合表達式,MDX 會嘗試評估集合,匯總集合中每個 Tuple 中的結果數據格。 換句話說,MDX 會嘗試在集合上使用 Aggregate 函數,並依其相關聯的聚合函數匯總每個量值。 此外,如果集合運算式不能表示為屬性階層成員的交叉聯接,MDX 將位於切片器集合運算式之外的單元格視為 null,以供評估使用。
這很重要
不同於 SQL 中的 WHERE 子句,MDX SELECT 語句的 WHERE 子句永遠不會直接篩選查詢之 Rows 軸上傳回的內容。 若要篩選查詢的 [數據列] 或 [數據行] 軸上出現的內容,您可以使用各種不同的 MDX 函式,例如 FILTER、NONEMPTY 和 TOPCOUNT。
隱含切片器軸
如果 Cube 內階層的成員未明確包含在查詢軸中,則來自該階層的預設成員會隱含包含在交叉分析篩選器軸中。 如需預設成員的詳細資訊,請參閱 定義預設成員。
範例
下列查詢不包含 WHERE 子句,並傳回所有日曆年度的網路銷售金額指標的量值。
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])
不會變更查詢中數據列或數據行上傳回的內容;它會變更每個儲存格傳回的值。 在此範例中,查詢會進行切割,以便返回所有日曆年度的因特網銷售金額值,但僅針對居住在美國的客戶。可以將來自不同階層的多個成員加入至 WHERE 子句。 下列查詢顯示居住在美國且在類別自行車中購買產品之客戶所有行事歷年度的因特網銷售金額值:
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 子句中包含集合。 例如,下列查詢會顯示在所有年度中,位於美國或英國,並在類別中購買自行車產品的客戶的因特網銷售金額:
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 子句中使用集合會隱含匯總集合中所有成員的值。 在此情況下,查詢會顯示每個數據格中美國和英國的匯總值。