다음을 통해 공유


집합 함수 사용

set 함수는 차원, 계층 구조, 수준에서 집합을 검색하거나 이러한 개체 내에서 멤버의 절대 및 상대 위치를 트래버스하여 다양한 방법으로 집합을 생성합니다.

멤버 함수 및 튜플 함수와 같은 Set 함수는 Analysis Services에 있는 다차원 구조를 협상하는 데 필수적입니다. SET 함수는 MDX 쿼리의 축을 정의하기 때문에 MDX(Multidimensional Expressions) 쿼리에서 결과를 가져오는 데에도 필수적입니다.

가장 일반적인 집합 함수 중 하나는 차원, 계층 또는 수준에서 모든 멤버가 포함된 집합을 검색하는 MDX(Members(Set) 함수입니다. 다음은 쿼리 내에서 집합 함수를 사용하는 예입니다.

SELECT

//Returns all of the members on the Measures dimension

[Measures].MEMBERS

ON Columns,

//Returns all of the members on the Calendar Year level of the Calendar Year Hierarchy

//on the Date dimension

[Date].[Calendar Year].[Calendar Year].MEMBERS

ON Rows

FROM [Adventure Works]

또 다른 일반적으로 사용되는 함수는 MDX(Crossjoin) 함수입니다. 이 함수는 함수에 매개 변수로 전달된 집합의 카티션 곱을 나타내는 튜플 집합을 반환합니다. 실질적으로 이 함수를 사용하면 쿼리에서 '중첩' 또는 '크로스탭' 축을 만들 수 있습니다.

SELECT

//Returns all of the members on the Measures dimension

[Measures].MEMBERS

ON Columns,

//Returns a set containing every combination of all of the members

//on the Calendar Year level of the Calendar Year Hierarchy

//on the Date dimension and all of the members on the Category level

//of the Category hierarchy on the Product dimension

Crossjoin(

[Date].[Calendar Year].[Calendar Year].MEMBERS,

[Product].[Category].[Category].MEMBERS)

ON Rows

FROM [Adventure Works]

하위 항목(MDX) 함수는 자식 함수와 비슷하지만 더 강력합니다. 계층 구조에서 하나 이상의 수준에서 멤버의 하위 항목을 반환합니다.

SELECT

[측정값]. [인터넷 판매액]

ON 열,

//Returns a set containing all of the Dates beneath Calendar Year

날짜 차원의 일정 계층 구조에서 2004

DESCENDANTS(

[날짜]. [일정]. [역년].&[2004]

, [Date]. [일정]. [날짜])

ON Rows

FROM [Adventure Works]

ORDER(MDX) 함수를 사용하면 특정 숫자 식에 따라 집합의 내용을 오름차순 또는 내림차순으로 정렬할 수 있습니다. 다음 쿼리는 이전 쿼리와 동일한 멤버를 행에 반환하지만 이제 Internet Sales Amount 측정값에 따라 정렬합니다.

SELECT

[Measures].[Internet Sales Amount]

ON Columns,

//Returns a set containing all of the Dates beneath Calendar Year

//2004 in the Calendar hierarchy of the Date dimension

//ordered by Internet Sales Amount

ORDER(

DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004]

, [Date].[Calendar].[Date])

, [Measures].[Internet Sales Amount], BDESC)

ON Rows

FROM [Adventure Works]

또한 이 쿼리는 한 집합 함수인 Descendants에서 반환된 집합을 다른 집합 함수인 Order에 매개 변수로 전달하는 방법을 보여 줍니다.

특정 조건에 따라 집합을 필터링하는 것은 쿼리를 작성할 때 매우 유용하며, 이를 위해 다음 예제와 같이 Filter(MDX) 함수를 사용할 수 있습니다.

SELECT

[Measures].[Internet Sales Amount]

ON Columns,

//Returns a set containing all of the Dates beneath Calendar Year

//2004 in the Calendar hierarchy of the Date dimension

//where Internet Sales Amount is greater than $70000

FILTER(

DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004]

, [Date].[Calendar].[Date])

, [Measures].[Internet Sales Amount]>70000)

ON Rows

FROM [Adventure Works]

다른 방법으로 집합을 필터링할 수 있는 더 정교한 함수가 있습니다. 예를 들어 다음 쿼리는 TOPCount(MDX) 함수가 집합의 상위 n개 항목을 반환하는 것을 보여 줍니다.

SELECT

[Measures].[Internet Sales Amount]

ON Columns,

//Returns a set containing the top 10 Dates beneath Calendar Year

//2004 in the Calendar hierarchy of the Date dimension by Internet Sales Amount

TOPCOUNT(

DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004]

, [Date].[Calendar].[Date])

,10, [Measures].[Internet Sales Amount])

ON Rows

FROM [Adventure Works]

마지막으로 MDX(Intersect), Union(MDX) 및 Except(MDX) 함수와 같은 함수를 사용하여 여러 논리 집합 작업을 수행할 수 있습니다. 다음 쿼리에서는 이러한 함수 중 마지막 두 함수의 예를 보여 줍니다.

SELECT

//Returns a set containing the Measures Internet Sales Amount, Internet Tax Amount and

//Internet Total Product Cost

UNION(

{[Measures].[Internet Sales Amount], [Measures].[Internet Tax Amount]}

, {[Measures].[Internet Total Product Cost]}

)

ON Columns,

//Returns a set containing all of the Dates beneath Calendar Year

//2004 in the Calendar hierarchy of the Date dimension

//except the January 1st 2004

EXCEPT(

DESCENDANTS(

[Date].[Calendar].[Calendar Year].&[2004]

, [Date].[Calendar].[Date])

,{[Date].[Calendar].[Date].&[915]})

ON Rows

FROM [Adventure Works]

참고 항목

함수(MDX 구문)
멤버 함수 사용
튜플 함수 사용