DrilldownLevel(MDX)
집합의 멤버를 집합에 표시된 가장 낮은 수준 아래의 한 수준으로 드릴다운합니다.
드릴다운할 수준을 지정하는 것은 선택 사항이지만 수준을 설정하는 경우 수준 식 또는 인덱스 수준을 사용할 수 있습니다. 이러한 인수는 상호 배타적입니다. 마지막으로, 계산 멤버가 쿼리에 있는 경우 행 집합에 이러한 계산 멤버가 포함되도록 인수를 지정할 수 있습니다.
구문
DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])
인수
Set_Expression
집합을 반환하는 유효한 MDX(다차원 식) 식입니다.
Level_Expression
(선택 사항). 드릴다운할 수준을 명시적으로 식별하는 MDX 식입니다. 수준 식을 지정하는 경우 아래 인덱스 인수를 건너뜁니다.
Index
(선택 사항). 집합 내에서 드릴다운할 계층 번호를 지정하는 유효한 숫자 식입니다. Level_Expression 대신 인덱스 수준을 사용하여 드릴다운할 수준을 명시적으로 식별할 수 있습니다.
Include_Calc_Members
(선택 사항). 드릴다운 수준에서 계산 멤버를 포함할지 여부를 나타내는 플래그입니다.
설명
DrilldownLevel 함수는 지정된 집합에 포함된 멤버에 따라 계층적 순서로 자식 멤버 집합을 반환합니다. 함수의 결과 집합에 포함된 모든 자식 멤버가 부모 멤버 바로 아래에 포함된다는 점을 제외하고 지정된 집합의 원래 멤버 간에 순서가 유지됩니다.
다단계 계층적 데이터 구조가 지정된 경우 드릴다운할 수준을 명시적으로 선택할 수 있습니다. 수준을 지정하는 두 가지 상호 배타적 방법이 있습니다. 첫 번째 방법은 수준을 반환하는 MDX 식을 사용하여 level_expression 인수를 설정하는 것입니다. 대체 방법은 숫자를 기준으로 수준을 지정하는 숫자 식을 사용하여 인덱스 인수를 지정하는 것입니다.
수준 식을 지정하면 함수는 지정된 수준에 있는 멤버의 자식만 검색하여 계층적 순서로 집합을 생성합니다. 수준 식이 지정되고 해당 수준에 멤버가 없으면 수준 식이 무시됩니다.
인덱스 값을 지정하면 함수는 0부터 시작하는 인덱스가 지정된 경우 지정된 집합에서 참조되는 계층의 다음 가장 낮은 수준에 있는 멤버의 자식만 검색하여 계층적 순서로 집합을 생성합니다.
수준 식과 인덱스 값이 모두 지정되지 않은 경우 이 함수는 지정된 집합에서 참조되는 첫 번째 차원의 최하위 수준에 있는 구성원의 자식만 검색하여 집합을 계층적 순서로 구성합니다.
XMLA 속성 MdpropMdxDrillFunctions를 쿼리하면 서버에서 드릴링 함수에 대해 제공하는 지원 수준을 확인할 수 있습니다. 자세한 내용은 지원되는 XMLA 속성(XMLA)을 참조하세요.
예
Adventure Works 큐브를 사용하여 SSMS의 MDX 쿼리 창에서 다음 예제를 사용해 볼 수 있습니다.
예제 1 - 최소 구문을 보여 줍니다.
첫 번째 예제에서는 DrilldownLevel에 대한 최소 구문을 보여줍니다. 유일한 필수 인수는 set 식입니다. 이 쿼리를 실행하면 상위 [모든 범주]와 다음 수준의 멤버인 [액세서리], [자전거] 등이 표시됩니다. 이 예제는 간단하지만 아래의 다음 수준으로 드릴다운하는 DrilldownLevel 함수의 기본 목적을 보여 줍니다.
SELECT DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]}}) ON COLUMNS
FROM [Adventure Works]
예제 2 - 명시적 인덱스 수준을 사용하는 대체 구문
이 예에서는 숫자 식을 통해 인덱스 수준이 지정되는 대체 구문을 설명합니다. 이 경우 인덱스 수준은 0입니다. 인덱스(0부터 시작하는 인덱스)의 경우 가장 낮은 수준입니다.
SELECT
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS
FROM [Adventure Works]
결과 집합은 이전 쿼리와 동일합니다. 일반적으로 드릴다운을 특정 수준에서 시작하지 않으려면 인덱스 수준을 설정할 필요가 없습니다. 이전 쿼리를 다시 실행하고 인덱스 값을 1로 설정한 다음 2로 설정합니다. 인덱스 값을 1로 설정한 경우, 드릴다운은 계층의 두 번째 수준에서 시작합니다. 인덱스 값이 2로 설정된 상태에서 드릴다운은 이 예제에서 가장 높은 수준인 세 번째 수준에서 시작됩니다. 숫자 식이 클수록 인덱스 수준도 높아집니다.
예제 3 - 수준 식을 보여 줍니다.
다음 예에서는 수준 식을 사용하는 방법을 보여줍니다. 계층 구조를 나타내는 집합이 지정된 경우 수준 식을 사용하면 계층 구조의 수준을 선택하여 드릴다운을 시작할 수 있습니다.
이 예제에서 드릴다운 수준은 DrilldownLevel 함수의 두 번째 인수로 [City]에서 시작됩니다. 이 쿼리를 실행하면 워싱턴 및 오리건 주에 대해 [도시] 수준에서 드릴다운이 시작됩니다. DrilldownLevel 함수에 따라 결과 집합에는 다음 수준의 멤버인 [우편 번호]도 포함됩니다.
SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
NON EMPTY (
DRILLDOWNLEVEL(
{[Customer].[Customer Geography].[Country].[United States],
DESCENDANTS(
{ [Customer].[Customer Geography].[State-Province].[Washington],
[Customer].[Customer Geography].[State-Province].[Oregon]},
[Customer].[Customer Geography].[City]) } ,
[Customer].[Customer Geography].[City] ) ) ON ROWS
FROM [Adventure Works]
예제 4 - 계산 멤버 포함
마지막 예제에서는 include_calculated_members 플래그를 추가할 때 결과 집합의 맨 아래에 나타나는 계산 멤버를 보여 줍니다. 플래그는 네 번째 매개 변수로 지정됩니다.
이 예는 계산된 구성원이 계산되지 않은 구성원과 같은 수준에 있으므로 작동합니다. 계산된 구성원 [West Coast]는 [United States]보다 한 수준 아래에 있는 모든 구성원을 포함한 [United States]의 구성원으로 이루어집니다.
WITH MEMBER
[Customer].[Customer Geography].[Country].&[United States].[West Coast] AS
[Customer].[Customer Geography].[State-Province].&[OR]&[US] +
[Customer].[Customer Geography].[State-Province].&[WA]&[US] +
[Customer].[Customer Geography].[State-Province].&[CA]&[US]
SELECT [Measures].[Internet Order Count] ON 0,
DRILLDOWNLEVEL([Customer].[Customer Geography].[Country].&[United States],,,INCLUDE_CALC_MEMBERS) on 1
FROM [Adventure Works]
플래그를 제거하고 쿼리를 다시 실행하는 경우, 계산된 구성원 [West Coast]를 제외하고 같은 결과를 얻습니다.