共用方式為


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

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

交叉分析篩選器軸會篩選多維度表達式 (MDX) SELECT 語句傳回的數據,限制傳回的數據,以便只傳回與指定成員交集的數據。 它可以視為查詢中不可見的額外軸。 交叉分析篩選器軸定義於 MDX 中 SELECT 語句的 WHERE 子句中。

交叉分析篩選器軸語法

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

<SELECT slicer axis clause> ::=  WHERE Set_Expression  

在顯示的交叉分析篩選器座標軸語法中,Set_Expression 可以採用 Tuple 運算式,此表示式會被視為評估 子句或集合表達式的集合。 如果指定了集合表達式,MDX 會嘗試評估集合,匯總集合中每個 Tuple 中的結果數據格。 換句話說,MDX 會嘗試在集合上使用 Aggregate 函式,並依其相關聯的聚合函數匯總每個量值。 此外,如果 set 運算式不能表示為屬性階層成員的交叉聯結,MDX 會將位於交叉分析篩選器集合表達式外部的單元格視為 null,以供評估之用。

重要

不同於 SQL 中的 WHERE 子句,MDX SELECT 語句的 WHERE 子句永遠不會直接篩選查詢之 Rows 軸上傳回的內容。 若要篩選查詢的 [數據列] 或 [數據行] 軸上出現的內容,您可以使用各種不同的 MDX 函式,例如 FILTER、NONEMPTY 和 TOPCOUNT。

隱含交叉分析篩選器軸

如果 Cube 內階層的成員未明確包含在查詢軸中,則來自該階層的預設成員會隱含包含在交叉分析篩選器軸中。 如需預設成員的詳細資訊,請參閱 定義預設成員

例子

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

不會變更查詢中數據列或數據行上傳回的內容;它會變更每個儲存格傳回的值。 在此範例中,查詢會進行配量,以便傳回所有行事歷年度的因特網銷售金額值,但僅適用於居住在美國的客戶。來自不同階層的多個成員可以新增至 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 子句中使用集合會隱含匯總集合中所有成員的值。 在此情況下,查詢會顯示每個數據格中美國和英國的匯總值。