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는 "계층 무시(break hierarchy)"를 의미) 비계층적일 수 있습니다. ASC 또는 DESC가 지정된 경우 Order 함수는 먼저 계층에서 해당 위치에 따라 멤버를 정렬한 다음 각 수준을 정렬합니다. BASC 또는 BDESC가 지정된 경우 Order 함수는 계층과 관계없이 집합에서 멤버를 정렬합니다. 플래그가 지정되지 않은 경우에는 ASC가 기본값입니다.

다음 예에서는 Adventure Works 큐브로부터 [Sales Territory].[Northwest] 멤버에 대한 대리점 주문 건수와 해당 멤버의 모든 상위 항목을 반환합니다. Order 함수는 [Sales Territory].[Northwest] 멤버 및 ROWS 축에 대한 상위 항목을 포함하는 집합을 다시 정렬합니다. Order 함수는 [Sales Territory] 계층에 의해 결정된 계층 순서대로 최상위부터 최하위 멤버까지 집합을 정렬합니다.

SELECT
    Measures.[Reseller Order Count] ON COLUMNS,
    Order(
        Ascendants(
            [Sales Territory].[Sales Territory].[Northwest]
        ),
        DESC
    ) ON ROWS
FROM
    [Adventure Works]

다음 예에서는 Reseller Gross Profit를 기준으로 계층에 관계없이 판매량이 상위 5위 안에 속하는 제품 하위 범주에 대한 Reseller Sales 측정값을 반환합니다. Order 함수를 사용하여 결과를 정렬한 후 Subset 함수를 사용하여 집합에서 처음 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]

다음 예에서는 Order 함수를 사용하여 비어 있지 않은 튜플을 정렬한 후 Filter 함수를 사용하여 집합에서 고유한 제품의 수를 반환합니다. 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]

참고 항목

참조