다음을 통해 공유


쿼리 축의 내용 지정(MDX)

쿼리 축은 MDX(Multidimensional Expressions) 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개의 지정된 축을 지원할 수 있지만 5개 이상의 축을 사용하는 MDX 쿼리는 거의 없습니다. 처음 5개 축의 경우 별칭 열, 행, 페이지, 섹션 및 CHAPTERS를 대신 사용할 수 있습니다.

MDX 쿼리는 쿼리 축을 건너뛸 수 없습니다. 즉, 하나 이상의 쿼리 축을 포함하는 쿼리는 번호가 낮은 축이나 중간 축을 제외해서는 안 됩니다. 예를 들어 쿼리에는 COLUMNS 축이 없는 ROWS 축이 있거나 ROWS 축이 없는 COLUMNS 및 PAGES 축이 있을 수 없습니다.

그러나 축 없이 SELECT 절을 지정할 수 있습니다(즉, 빈 SELECT 절). 이 경우 모든 차원은 슬라이서 차원이며 MDX 쿼리는 하나의 셀을 선택합니다.

이전에 표시된 쿼리 축 구문에서 각 Set_Expression 값은 쿼리 축의 내용을 정의하는 집합을 지정합니다. 집합에 대한 자세한 내용은 MDX(멤버, 튜플 및 집합 작업)를 참조하세요.

예시

다음 간단한 SELECT 문은 열 축에서 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]  
  

SET 정의 전에 사용되는 NON EMPTY 키워드는 축에서 빈 튜플을 모두 제거하는 쉬운 방법입니다. 예를 들어 지금까지 본 예제에서는 2004년 8월부터 큐브에 데이터가 없습니다. 열에 데이터가 없는 셀 집합에서 모든 행을 제거하려면 다음과 같이 행 축 정의의 집합 앞에 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)