共用方式為


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

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

查詢軸會指定多維度表達式 (MDX) SELECT 語句所傳回之數據格集的邊緣。 指定數據格集的邊緣可讓您限制客戶端可見的傳回數據。

若要指定查詢軸,您可以使用 <SELECT query axis clause> 將集合指派給特定的查詢軸。 每個 <SELECT query axis clause> 值都會定義一個查詢軸。 數據集中的座標軸數目等於 SELECT 語句中的 <SELECT query axis clause> 值數目。

查詢軸語法

下列語法顯示 <SELECT query axis clause>的語法:

  
<SELECT query axis clause> ::=  
   [ NON EMPTY ] Set_Expression [ <SELECT dimension property list clause> ] [<HAVING clause>]  
   ON {  
      Integer_Expression |   
      AXIS( Integer_Expression ) |   
      {COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS}     
      }  
  

每個查詢座標軸都有一個數位:x 軸的零 (0),1 代表 y 軸,2 代表 z 軸,依此顯示。 在 <SELECT query axis clause>語法中,Integer_Expression 值會指定座標軸編號。 MDX 查詢最多可支援 128 個指定的座標軸,但很少的 MDX 查詢會使用超過 5 個座標軸。 針對前 5 個座標軸,可以改用 COLUMNS、ROWS、PAGES、SECTIONS 和 CHAPTERS 別名。

MDX 查詢無法略過查詢軸。 也就是說,包含一或多個查詢軸的查詢不得排除編號較低的或中繼座標軸。 例如,沒有 COLUMNS 軸的查詢不能有 ROWS 軸,或是沒有 ROWS 軸的 COLUMNS 和 PAGES 軸。

不過,您可以指定不含任何軸的 SELECT 子句(也就是空的 SELECT 子句)。 在此情況下,所有維度都是交叉分析篩選器維度,而且 MDX 查詢會選取一個數據格。

在先前顯示的查詢軸語法中,每個 Set_Expression 值都會指定定義查詢軸內容的集合。 如需集合的詳細資訊,請參閱 使用成員、Tuple 和集合 (MDX)

例子

下列簡單的 SELECT 語句會傳回 Columns 軸上的 Internet Sales Amount 量值,並使用 MDX MEMBERS 函式,從數據列軸上 [日期] 維度的 [行事歷] 階層傳回所有成員:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,  
{[Date].[Calendar].MEMBERS} ON ROWS  
FROM [Adventure Works]  
  

下列兩個查詢會傳回完全相同的結果,但示範使用座標軸編號,而不是別名:

SELECT {[Measures].[Internet Sales Amount]} ON 0,  
{[Date].[Calendar].MEMBERS} ON 1  
FROM [Adventure Works]  
  
SELECT {[Measures].[Internet Sales Amount]} ON AXIS(0),  
{[Date].[Calendar].MEMBERS} ON AXIS(1)  
FROM [Adventure Works]  
  

在設定定義之前使用的 NON EMPTY 關鍵詞,是從座標軸移除所有空白 Tuple 的簡單方法。 例如,在到目前為止的範例中,從 2004 年 8 月起,Cube 中沒有任何數據。 若要從數據行中沒有任何數據的數據格集中移除所有數據列,只要在 Rows 軸定義上設定之前新增 NON EMPTY,如下所示:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,  
NON EMPTY  
{[Date].[Calendar].MEMBERS} ON ROWS  
FROM [Adventure Works]  
  

NON EMPTY 可用於查詢中的所有軸上。 比較下列兩個查詢的結果,第一個查詢不使用 NON EMPTY,第二個查詢在兩個軸上執行:

SELECT {[Measures].[Internet Sales Amount]}   
* [Promotion].[Promotion].[Promotion].MEMBERS  
ON COLUMNS,  
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS  
FROM [Adventure Works]  
WHERE([Product].[Subcategory].&[19])  
  
SELECT NON EMPTY {[Measures].[Internet Sales Amount]}   
* [Promotion].[Promotion].[Promotion].MEMBERS  
ON COLUMNS,  
NON EMPTY  
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS  
FROM [Adventure Works]  
WHERE([Product].[Subcategory].&[19])  
  

HAVING 子句可用來根據特定準則篩選座標軸的內容;相較於其他可達成相同結果的方法,例如 FILTER 函式,它較不具彈性,但較容易使用。 以下範例只會傳回 Internet Sales Amount 大於 $15,000 的日期:

SELECT {[Measures].[Internet Sales Amount]}   
ON COLUMNS,  
NON EMPTY  
{[Date].[Calendar].[Date].MEMBERS}   
HAVING [Measures].[Internet Sales Amount]>15000  
ON ROWS  
FROM [Adventure Works]  
  

另請參閱

指定交叉分析篩選器軸的內容 (MDX)