Order(MDX)

필요에 따라 계층 구조를 유지하거나 중단하여 지정된 집합의 멤버를 정렬합니다.

구문

  
Numeric expression syntax  
Order(Set_Expression, Numeric_Expression   
[ , { ASC | DESC | BASC | BDESC } ] )  
  
String expression syntax  
Order(Set_Expression, String_Expression   
[ , { ASC | DESC | BASC | BDESC } ] )  
  

인수

Set_Expression
집합을 반환하는 유효한 MDX(다차원 식) 식입니다.

Numeric_Expression
일반적으로 숫자를 반환하는 셀 좌표의 MDX(다차원 식) 식인 유효한 숫자 식입니다.

String_Expression
일반적으로 문자열로 표현된 숫자를 반환하는 셀 좌표의 유효한 MDX(다차원 식) 식인 유효한 문자열 식입니다.

설명

Order 함수는 계층적(ASC 또는 DESC 플래그를 사용하여 지정된 대로) 또는 비히어적(BASC 또는 BDESC 플래그를 사용하여 지정됨, B는 "중단 계층"을 의미함)일 수 있습니다. ASC 또는 DESC가 지정된 경우 Order 함수는 먼저 계층 구조의 위치에 따라 멤버를 정렬한 다음 각 수준을 정렬합니다. BASC 또는 BDESC가 지정된 경우 Order 함수는 계층 구조와 관계없이 집합의 멤버를 정렬합니다. 플래그가 지정되지 않은 경우 ASC 가 기본값입니다.

두 개 이상의 계층이 교차 조인되고 DESC 플래그가 사용되는 집합과 함께 Order 함수를 사용하는 경우 집합의 마지막 계층의 멤버만 순서가 지정됩니다. 이 사항은 집합에 있는 모든 계층이 정렬되는 Analysis Services 2000에서 변경되었습니다.

다음 예제에서는 Adventure Works 큐브에서 Date 차원의 일정 계층 구조에서 모든 Calendar Quarters에 대한 재판매인 주문 수를 반환합니다. Order 함수는 ROWS 축에 대한 집합을 다시 정렬합니다. Order 함수는 계층 구조에 의해 [Reseller Order Count] 결정된 대로 내림차순으로 집합을 [Calendar] 정렬합니다.

SELECT
  Measures.[Reseller Order Count] ON COLUMNS,
  Order(
    [Date].[Calendar].[Calendar Quarter].MEMBERS,
    Measures.[Reseller Order Count],
    DESC
  ) ON ROWS
FROM [Adventure Works]

이 예제에서 DESC 플래그가 BDESC변경되면 계층이 끊어지고 계층 구조와 관계없이 Calendar Quarters 목록이 반환되는 방법을 확인합니다.

SELECT
  Measures.[Reseller Order Count] ON COLUMNS,
  Order (
    [Date].[Calendar].[Calendar Quarter].MEMBERS,
    Measures.[Reseller Order Count],
    BDESC
  ) ON ROWS
FROM [Adventure Works]

다음 예제에서는 재판매인 총 이익을 기준으로 계층 구조에 관계없이 상위 5개 판매 하위 범주에 대한 재판매인 판매 측정값을 반환합니다. 하위 집합 함수는 Order 함수를 사용하여 결과가 정렬된 후 집합의 처음 5개 튜플만 반환하는 데 사용됩니다.

SELECT Subset
  (
    Order
      (
        [Product].[Product Categories].[SubCategory].members,
        [Measures].[Reseller Gross Profit], 
        BDESC
      ), 0, 5
  ) ON 0
FROM [Adventure Works]

다음 예제에서는 Rank 함수를 사용하여 Reseller Sales Amount 측정값에 따라 City 계층의 멤버 순위를 지정한 다음 순위가 지정된 순서로 표시합니다. Order 함수를 사용하여 먼저 City 계층 구조의 멤버 집합을 정렬하면 정렬이 한 번만 수행된 다음 정렬된 순서로 표시되기 전에 선형 검색이 수행됩니다.

WITH   
SET OrderedCities AS Order  
   ([Geography].[City].[City].members  
   , [Measures].[Reseller Sales Amount], BDESC  
   )  
MEMBER [Measures].[City Rank] AS Rank  
   ([Geography].[City].CurrentMember, OrderedCities)  
SELECT {[Measures].[City Rank],[Measures].[Reseller Sales Amount]}  ON 0   
,Order  
   ([Geography].[City].[City].MEMBERS  
   ,[City Rank], ASC)  
    ON 1  
FROM [Adventure Works]  

다음 예제에서는 Filter 함수를 활용하기 전에 Order 함수를 사용하여 비어있지 않은 튜플의 순서를 지정하여 고유한 집합의 제품 수를 반환합니다. CurrentOrdinal 함수는 관계를 비교하고 제거하는 데 사용됩니다.

WITH MEMBER [Measures].[PrdTies] AS Count  
   (Filter  
      (Order  
        (NonEmpty  
          ([Product].[Product].[Product].Members  
          , {[Measures].[Reseller Order Quantity]}  
          )  
       , [Measures].[Reseller Order Quantity]  
       , BDESC  
       ) AS OrdPrds  
    , (OrdPrds.CurrentOrdinal < OrdPrds.Count   
       AND [Measures].[Reseller Order Quantity] =   
          ( [Measures].[Reseller Order Quantity]  
            , OrdPrds.Item  
               (OrdPrds.CurrentOrdinal  
               )  
            )  
         )  
         OR (OrdPrds.CurrentOrdinal > 1   
            AND [Measures].[Reseller Order Quantity] =   
               ([Measures].[Reseller Order Quantity]  
               , OrdPrds.Item  
                  (OrdPrds.CurrentOrdinal-2)  
                )  
             )  
          )  
       )  
SELECT {[Measures].[PrdTies]} ON 0  
FROM [Adventure Works]  

DESC 플래그가 튜플 집합에서 작동하는 방식을 이해하려면 먼저 다음 쿼리의 결과를 고려합니다.

  
SELECT  
{[Measures].[Tax Amount]} ON 0,  
ORDER(  
[Sales Territory].[Sales Territory].[Group].MEMBERS  
,[Measures].[Tax Amount], DESC)  
ON 1  
FROM [Adventure Works]  
  

행 축에서 판매 지역 그룹이 다음과 같이 세금 금액으로 내림차순으로 정렬된 것을 볼 수 있습니다. 북아메리카, 유럽, 태평양, NA. 이제 다음과 같이 Sales Territory Groups 집합을 제품 하위 범주 집합과 교차 연결하고 Order 함수를 동일한 방식으로 적용하면 어떻게 되는지 확인합니다.

  
SELECT  
{[Measures].[Tax Amount]} ON 0,  
ORDER(  
[Sales Territory].[Sales Territory].[Group].MEMBERS  
*  
{[Product].[Product Categories].[subCategory].Members}  
,[Measures].[Tax Amount], DESC)  
ON 1  
FROM [Adventure Works]  
  

제품 하위 범주 집합은 내림차순, 계층적 순서로 정렬되었지만 영업 지역 그룹은 이제 정렬되지 않고 계층 구조(유럽, NA, 북아메리카 및 태평양)에 표시되는 순서대로 표시됩니다. 이는 튜플 집합의 마지막 계층인 Product Subcategories만 정렬되기 때문입니다. Analysis Services 2000의 동작을 재현하려면 일련의 중첩된 Generate 함수를 사용하여 교차 조인되기 전에 각 집합을 정렬합니다. 예를 들면 다음과 같습니다.

  
SELECT  
{[Measures].[Tax Amount]} ON 0,  
GENERATE(  
ORDER(  
[Sales Territory].[Sales Territory].[Group].MEMBERS  
,[Measures].[Tax Amount], DESC)  
,  
ORDER(  
[Sales Territory].[Sales Territory].CURRENTMEMBER  
*  
{[Product].[Product Categories].[subCategory].Members}  
,[Measures].[Tax Amount], DESC))  
ON 1  
FROM [Adventure Works]  

참고 항목

MDX 함수 참조(MDX)