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]