共用方式為


MDX 查詢與交叉分析篩選器軸 - 指定交叉分析篩選器軸的內容

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

Slicer 軸會篩選多維度運算式 (MDX) SELECT 陳述式傳回的資料,限制傳回的資料,以便只傳回與指定成員交集的資料。 它可以視為查詢中隱藏的額外軸。 Slicer 軸定義在 MDX SELECT 陳述式的 WHERE 子句中。

Slicer 軸語法

若要明確指定交叉分析篩選器座標軸,請使用 <SELECT slicer axis clause> MDX 中的 ,如下列語法所述:

<SELECT slicer axis clause> ::=  WHERE Set_Expression  

在顯示的 Slicer 軸語法中, Set_Expression 可以取得 Tuple 運算式或集合運算式,而 Tuple 運算式會視為一個集合,用於評估子句。 如果已指定集合運算式,MDX 將嘗試評估此集合,彙總集合中每一個 Tuple 的結果資料格。 換句話說,MDX 將會在此集合嘗試使用 Aggregate 函數,利用與其相關的彙總函式來彙總每個量值。 此外,如果無法將集合運算式表示為屬性階層成員的交叉聯集,MDX 會將 Slicer 落在集合運算式之外的資料格,評估為 Null。

重要

MDX SELECT 陳述式的 WHERE 子句不像 SQL 中的 WHERE 子句,前者絕不會直接篩選查詢的 Rows 軸上傳回的內容。 若要篩選查詢的 Rows 或 Columns 軸上顯示的內容,您可以使用各種不同的 MDX 函數,例如 FILTER、NONEMPTY 和 TOPCOUNT。

隱含 Slicer 軸

如果 Cube 內階層的成員未明確地包含在查詢座標軸中,階層的預設成員就會隱含地包含在 Slicer 軸中。 如需預設成員的詳細資訊,請參閱 定義預設成員

範例

下列查詢不包含 WHERE 子句,並且會傳回所有 Calendar Year 之 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])  
  

不會改變查詢中 Rows 或 Columns 上傳回的內容;它會改變針對每一個資料格傳回的值。 這個範例會分割查詢,以便傳回所有 Calendar Year 的 Internet Sales Amount 值,不過只包括住在 United States 的 Customer。不同階層的成員可以加入 WHERE 子句中。 下列查詢會針對住在美國 (United States) 並且購買過自行車類別 (Bikes Category) 產品 (Product) 的客戶 Customer),顯示所有日曆年度 (Calendar Year) 的網際網路銷售量 (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) 產品 (Product),並且住在美國 (United States) 或英國 (United Kingdom) 的客戶 Customer),顯示所有日曆年度 (Calendar Year) 的網際網路銷售量 (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 子句中使用集合將隱含地彙總集合中所有成員的值。 在這種情況下,查詢會在每一個資料格中顯示美國和英國的彙總值。