다음을 통해 공유


범위 및 컨텍스트 관리(MDX)

Microsoft SQL Server Analysis Services에서 MDX(다차원 식) 스크립트는 스크립트 실행 내의 특정 지점에서 전체 큐브 또는 큐브의 특정 부분에 적용할 수 있습니다. MDX 스크립트는 계산 패스를 사용하여 큐브 내의 계산에 계층화된 접근 방식을 취할 수 있습니다.

비고

계산 패스가 계산에 영향을 미치는 방법에 대한 더 많은 정보를 보려면, 패스 순서 및 해결 순서 이해하기(MDX)를 참조하세요.

MDX 스크립트 내에서 계산 패스, 범위 및 컨텍스트를 제어하려면 특히 CACULATE 문, This 함수 및 SCOPE 문을 사용합니다.

CALCULATE 문 사용

CALCULATE 문은 큐브의 각 셀을 집계된 데이터로 채웁니다. 예를 들어 기본 MDX 스크립트에는 스크립트의 시작 부분에 단일 CALCULATE 문이 있습니다.

CALCULATE 문장의 문법에 대한 자세한 내용은 CALCULATE 문장(MDX)을 참조하세요.

비고

스크립트에 CALCULATE 문이 포함된 SCOPE 문이 포함된 경우 MDX는 전체 큐브가 아닌 SCOPE 문에 정의된 하위 큐브의 컨텍스트 내에서 CALCULATE 문을 평가합니다.

이 함수 사용

This 함수를 사용하면 MDX 스크립트 내에서 현재 하위 큐브를 검색할 수 있습니다. 함수를 This 사용하여 현재 하위 큐브 내의 셀 값을 MDX 식으로 빠르게 설정할 수 있습니다. SCOPE 문과 함께 함수를 This 사용하여 특정 계산 패스 중에 특정 하위 큐브의 내용을 변경하는 경우가 많습니다.

비고

스크립트에 SCOPE 문이 있고 그 안에 This 함수를 포함할 경우, MDX는 전체 큐브가 아닌 SCOPE 문에 정의된 하위 큐브의 컨텍스트 내에서 This 함수를 평가합니다.

이 함수 예제

다음 MDX 스크립트 명령 예제에서는 This 함수를 사용하여 Adventure Works DW 다차원 2012 샘플 큐브의 Finance 측정값 그룹에서 Amount 측정값을 Customer 차원의 Redmond 멤버의 자식들에 대해 10% 더 높게 증가시킵니다.

/* This SCOPE statement defines the current subcube */  
SCOPE([Customer].&[Redmond].MEMBERS,   
    [Measures].[Amount], *);  
        /* This expression sets the value of the Amount measure */  
        THIS = [Measures].[Amount] * 1.1;  
END SCOPE;  

함수 구문 This 에 대한 자세한 내용은 이(MDX)를 참조하세요.

SCOPE 구문 활용하기

SCOPE 문은 MDX 스크립트 내에서 다른 MDX 식 및 문의 범위를 포함하고 지정하는 현재 하위 큐브를 정의합니다. MDX는 이 다른 MDX 식 및 문을 평가하는데, 하위 큐브의 컨텍스트 내에서 This 함수와 CALCULATE 문을 포함합니다.

SCOPE 문은 동적이지만 본질적으로 반복적이지는 않습니다. SCOPE 문에 포함된 문은 한 번 실행되지만 하위 큐브 자체는 동적으로 확인할 수 있습니다. 예를 들어 SampleCube라는 큐브가 있습니다. SampleCube 큐브에 대해 다음 SCOPE 문을 적용하여 컨텍스트를 Measures 차원 내에서 ALLMEMBERS로 정의하는 하위 큐브를 정의합니다.

SCOPE([Measures].ALLMEMBERS);

THIS = [Measures].ALLMEMBERS.COUNT;

END SCOPE;

이 SCOPE 명령문 내의 문장과 표현은 한 번 실행됩니다.

이제 비즈니스 사용자는 SampleCube 큐브에 대해 ExistingMeasure라는 하나의 측정값을 포함하는 다음 MDX 쿼리를 실행합니다.

WITH MEMBER [Measures].[NewMeasure] AS '1'

SELECT

[Measures].ALLMEMBERS ON COLUMNS,

[Customer].DEFAULTMEMBER ON ROWS

FROM

[SampleCube]

쿼리에서 반환된 셀 집합은 다음 표에 표시된 출력과 유사합니다.

[ExistingMeasure] [새로운측정]
[고객]. [모두] 2 2

반환된 셀 집합을 살펴보면 MDX 스크립트 내의 SCOPE 문에 포함된 ExistingMeasure 값이 NewMeasure 측정값을 정의한 후 동적으로 업데이트되는 방법을 확인합니다.

SCOPE 문은 다른 SCOPE 문 내에 중첩될 수 있습니다. 그러나 SCOPE 문이 반복적이지 않으므로 SCOPE 문을 중첩하는 주요 목적은 특수 처리를 위해 하위 큐브를 추가로 세분화하는 것입니다.

SCOPE 선언문 예제

다음 MDX 스크립트 예제에서는 SCOPE 문을 사용하여 Adventure Works DW 다차원 2012 샘플 큐브의 재무 측정 항목 그룹에서 Amount 측정 항목의 값을 고객 차원의 Redmond 멤버의 자식들에 대해 10%만큼 더 높게 설정합니다. 그러나 또 다른 SCOPE 문은 2002년 연도의 자식에 대한 Amount 측정값을 포함하도록 하위 큐브를 변경합니다. 마지막으로 Amount 측정값은 해당 하위 큐브에 대해서만 집계되고 다른 달력 연도의 Amount 측정값에 대해 집계된 값은 변경되지 않습니다.

/* Calculate the entire cube first. */  
CALCULATE;  
/* This SCOPE statement defines the current subcube */  
SCOPE([Customer].&[Redmond].MEMBERS,   
    [Measures].[Amount], *);  
        /* This expression sets the value of the Amount measure */  
        THIS = [Measures].[Amount] * 1.1;  
END SCOPE;  

SCOPE 문의 구문에 대한 자세한 내용은 SCOPE 문장(MDX)을 참조하세요.

또한 참조하십시오

MDX 언어 참조(MDX)
기본 MDX 스크립트(MDX)
MDX 쿼리 기본 사항(Analysis Services)