共用方式為


指定查詢軸的內容 (MDX)

查詢軸會指定多維度表達式 (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,y 軸為 1,z 軸為 2,依此類推。 在的 <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 值都會指定定義查詢軸內容的集合。 如需集合的詳細資訊,請參閱 使用成員、元組和集合(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 關鍵詞,是從軸移除所有空白元組的簡單方法。 例如,在到目前為止的範例中,從 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)