스크립트 명령을 사용하여 할당 범위 정의

이 단원의 이전 두 항목 작업에서는 큐브의 계산 스크립트에 계산 멤버 및 명명된 집합 계산을 추가하는 방법에 대해 배웠습니다. 이러한 두 가지 유형의 특정 MDX(Multidimensional Expressions) 계산 외에도 새 스크립트 명령을 사용하여 MDX가 지원하는 큐브 내의 거의 모든 작업을 수행할 수 있습니다.

Microsoft SQL Server 2005 Analysis Services(SSAS)에서 MDX 스크립트는 전체 큐브 또는 큐브의 특정 섹션에서 스크립트 실행 내의 특정 지점에 적용될 수 있습니다. 기본 범위를 기반으로 하는 집계 데이터로 큐브의 셀을 채우는 기본 스크립트 명령인 CALCULATE 문에 대해서는 이미 살펴보았습니다.

기본 범위는 전체 큐브이지만 이전 항목에서 설명한 것처럼 SCOPE 문을 사용하여 하위 큐브라는 보다 제한된 범위를 정의한 후 MDX 스크립트를 이러한 특정 큐브 공간에만 적용할 수 있습니다. SCOPE 문은 현재 범위가 종결되거나 다시 지정될 때까지 계산 스크립트 내의 모든 후속 MDX 식 및 문의 범위를 정의합니다. 그런 후 THIS 문을 사용하여 현재 범위에 MDX 식을 적용합니다. BACK_COLOR 문을 사용하여 현재 범위에 있는 셀에 대해 배경 셀 색을 지정하면 디버깅 시 도움이 됩니다.

이 항목의 작업에서는 SCOPETHIS 문을 사용하여 2005 회계 연도 내의 각 회계 분기에 대한 판매 할당량을 정의합니다. 그런 후 큐브의 모든 회계 연도의 월 수준에 판매 할당량을 할당합니다. 또한 계산 스크립트의 편리한 디버깅을 위해 중단점을 사용하는 방법을 알아봅니다.

시간 및 직원별로 판매 할당액 할당 검토

시간 및 직원별로 판매 할당액 할당을 검토하려면

  1. Analysis Services Tutorial 큐브에 대한 큐브 디자이너를 열고 브라우저 탭을 클릭합니다.

  2. 데이터 창에서 모든 계층 및 측정값을 제거하고 필터 창에서 모든 차원 멤버를 제거합니다.

  3. Sales Quotas 측정값 그룹의 Sales Amount Quota 측정값을 데이터 창의 데이터 영역에 추가합니다.

  4. Fiscal Time 사용자 정의 계층을 열에 추가합니다.

  5. Employee Name 특성 계층을 행 영역에 추가합니다.

    2005 회계 연도에 대해서는 판매 할당량 값이 정의되지 않았습니다.

  6. 열 영역에서 FY 2002FY 2003을 제거합니다.

  7. 열 영역에서 FY2004, H1 FY 2004Q3 FY 2004를 차례로 확장합니다.

    회계 분기의 각 회계 월에 대한 판매 할당액은 해당 회계 분기에 대한 판매 할당액과 같습니다. 이것은 5단원에 설명된 것처럼 Sales Quota 측정값 그룹의 시간 차원 수준이 분기 수준이기 때문입니다.

    다음 그림에서는 2004 회계 연도의 4/4분기에 속하는 각 월에 대해 판매 할당량을 갖는 각 직원의 판매 할당량을 보여 줍니다.

    각 회계 월에 대한 판매 할당액

2005 회계 연도의 판매 할당액 계산을 위한 범위 정의

이 작업에서는 현재 범위를 검토하고 범위를 수정한 후 2004 회계 연도를 기반으로 2005 회계 연도의 판매 할당액 값을 결정하는 계산을 정의합니다.

2005 회계 연도의 판매 할당액 계산을 위한 범위를 정의하려면

  1. 계산 탭을 선택한 후 도구 모음에서 폼 보기를 선택합니다.

  2. 스크립트 구성 도우미 창에서 Large Resellers를 선택한 후 계산 탭의 도구 모음에서 새 스크립트 명령을 클릭합니다.

    계산 식 창에 빈 스크립트가 나타나며 스크립트 구성 도우미 창에 제목을 비워 둔 상태로 이 스크립트 명령이 표시됩니다.

  3. 계산 식 창에 다음 문을 입력합니다.

    /* Changing Scope to All or Default Member */
    SCOPE (ROOT())
    

    SCOPE 문을 실행하면 큐브 범위가 큐브에 포함된 모든 특성에 대해 All 멤버 또는 기본 멤버로 변경됩니다.

  4. 계산 탭 도구 모음에서 새 스크립트 명령을 클릭한 후 계산 식 창에 다음 문을 입력합니다.

    /* Defining the cube scope for the sales amount quotas for FY2005 */
    SCOPE ()
    

    마지막 괄호 아래에 나타나는 빨간색의 구불구불한 선은 SCOPE 문에 대한 괄호 안에 멤버 집합을 정의해야 함을 의미합니다. 먼저 Sales Amount Quota 측정값이 범위 내에 추가되도록 이 측정값을 SCOPE 문에 추가합니다.

  5. 계산 도구 창의 메타데이터 탭에서 Measures, Sales Quota를 차례로 확장한 후 Sales Amount Quota계산 식 창의 SCOPE 문에 대한 괄호 안으로 끌어 옵니다.

    빨간색의 구불구불한 선이 사라집니다. 다음으로 FY 2005 차원 멤버를 SCOPE 문에 추가하여 이 시간 차원 멤버를 현재 범위에 추가합니다.

  6. 계산 도구 창의 메타데이터 탭에서 Date, Fiscal, Fiscal Time, Fiscal Year를 차례로 확장한 후 FY 2005 멤버를 계산 식 창의 SCOPE 문에서 정의 중인 집합의 [Sales Amount Quota] 멤버 바로 뒤로 끌어 옵니다.

    이 집합 새 멤버의 [Date] 부분 아래에는 빨간색의 구불구불한 선이 나타납니다. 이 선은 SCOPE 문 내에서 집합의 각 멤버 사이에 쉼표가 필요하기 때문에 이 차원 멤버 바로 앞에 구문 오류가 있음을 알려줍니다.

  7. Date 차원의 FY 2005 멤버에서 [Date] 부분 앞에 필요한 쉼표를 추가합니다.

    처음에 나타났던 빨간색의 구불구불한 선이 사라집니다. 다음으로 Employee 차원의 Employees 사용자 정의 계층 멤버를 SCOPE 문에 추가하여 해당 멤버를 현재 범위에 추가합니다.

  8. 계산 도구 창의 메타데이터 탭에서 Employee를 확장한 후 계산 식 창의 SCOPE 문에서 정의 중인 집합의 [Date].[Fiscal Time].[Fiscal Year].&[2005] 멤버 바로 뒤로 Employees 사용자 정의 계층을 끌어 옵니다.

    이 집합 새 멤버의 [Employee] 부분 아래에는 SCOPE 문 내에서 집합의 각 멤버 사이에 쉼표가 필요함을 나타내기 위해 빨간색의 구불구불한 선이 표시됩니다.

  9. 새 멤버의 [Employee] 부분 앞에 필요한 쉼표를 추가합니다.

    처음에 나타났던 빨간색의 구불구불한 선이 사라집니다.

  10. SCOPE 문 내에서 이 집합의 [Employee].[Employees] 멤버 끝에 다음 절을 추가하여 집합의 이 세 번째 멤버에 대한 정의를 완성합니다.

    .Members
    

    이 절은 직원 차원 내 직원 계층의 모든 멤버가 현재 큐브 범위에 속하도록 지정합니다.

  11. 완성된 SCOPE 문이 다음 스크립트와 일치하는지 확인합니다.

    SCOPE ([Measures].[Sales Amount Quota],[Date].[Fiscal Time].[Fiscal Year].&[2005], [Employee].[Employees].Members)
    

    이제 2005 회계 연도에 대한 판매 할당액을 계산하기 위한 MDX 식을 적용할 하위 큐브를 정의하는 범위 정의가 끝났습니다.

  12. 계산 탭의 도구 모음에서 스크립트 보기를 클릭한 후 새로 추가한 스크립트 명령을 검토합니다.

    각 스크립트 명령은 계산 식 창에서 사용자가 입력한 대로 나타나지만 각 스크립트 명령 끝에 세미콜론이 자동으로 추가됩니다. 또한 다음 그림과 같이 각 스크립트 명령 앞에 주석이 표시되어 개별 명령을 이해하는 데 도움을 줍니다.

    계산 식 창

2005 회계 연도에 대한 새 판매 할당량 계산 정의 및 테스트

이 절차에서는 Employee 차원의 모든 멤버에 대해 2005 회계 연도의 판매 할당액을 계산하는 새 스크립트 명령을 계산 스크립트에 추가합니다. 그러나 보기에서 스크립트 명령을 추가하지 않고 스크립트 보기에서 직접 스크립트 명령을 추가합니다. 스크립트 보기에서는 각 스크립트 명령 사이에 세미콜론을 추가해야 합니다.

2005 회계 연도에 대한 새 판매 할당량 계산을 정의 및 테스트하려면

  1. 스크립트 보기에서 계산 스크립트 끝의 새 줄에 다음 문을 입력합니다.

    /* Applying a calculation to the subcube */
    THIS = [Date].[Fiscal Time].[Fiscal Year].&[2004] * 1.25;
    

    THIS 문은 하위 큐브의 Employee 멤버와 FY 2005 멤버가 교차되는 Sales Amount Quota 측정값에 새 값을 할당합니다. 새 값은 2004 회계 연도의 Employee 멤버와 Sales Amount Quota 측정값이 교차되는 부분의 값에 1.25를 곱한 값을 기반으로 합니다.

  2. 계산 식 창에서 THIS 문의 왼쪽 여백을 클릭하여 중단점을 설정합니다.

    다음 그림과 같이 해당 여백에 빨간색 점이 나타나고 문은 빨간색으로 강조 표시됩니다. 디버그 모드에서 이 프로젝트를 실행하면 프로젝트 변경 내용이 Analysis Services 인스턴스로 배포되고 큐브가 처리되며 계산 스크립트는 중단점에 도달할 때까지 실행됩니다. 그런 후 나머지 스크립트를 하나씩 실행할 수 있습니다. 중단점을 설정하지 않고 디버그 모드에서 프로젝트를 실행하면 계산 스크립트는 첫 번째 계산 스크립트인 CALCULATE 문에서 중단됩니다.

    계산 식 창에 설정된 중단점

  3. 디버그 메뉴에서 디버깅 시작을 클릭하거나 키보드에서 F5 키를 누릅니다.

    프로젝트는 배포 및 처리되며 계산 스크립트는 중단점에 도달할 때까지 실행됩니다.

  4. 도킹된 모든 창을 숨겨서 계산 탭의 맨 아래에 표시되는 피벗 테이블 창을 볼 수 있는 더 많은 영역을 제공합니다.

    다음 그림과 같이 표시되는 피벗 테이블 창은 디버깅에 도움이 됩니다.

    디버깅에 도움이 되는 데이터 창

  5. 피벗 테이블 창에서 데이터 영역에 Sales Amount Quota 측정값을 추가하고 열 영역에 Date.Fiscal Time 사용자 정의 계층을 추가한 후 Employee 차원에서 행 영역으로 Employee Name 특성 계층을 추가합니다.

    다음 그림에 표시된 것처럼 각 직원의 Sales Amount Quota 측정값에 대한 Fiscal Year 수준의 FY 2005 멤버는 Sales Quota Amount 측정값에 대한 데이터 영역에 값을 포함하지 않습니다. 기본적으로 디버그 모드에서는 피벗 테이블 창에 빈 셀이 표시됩니다.

    디버깅 중에 나타나는 데이터 창의 빈 셀

  6. F10 키를 눌러 THIS 문을 실행하고 2005 회계 연도에 대한 판매 할당량을 계산합니다.

    이제 피벗 테이블 창에서 Sales Amount Quota 측정값, FY 2005 차원 멤버 및 Employee Name 멤버가 교차되는 셀이 계산됩니다. 또한 THIS 문의 영향을 받는 셀은 노란색으로 강조 표시됩니다. 변경된 셀의 강조 표시를 설정하거나 해제하는 도구 모음 아이콘이 있으며 변경된 셀은 기본적으로 강조 표시됩니다.

  7. 피벗 테이블 창의 열 영역에서 FY 2002, FY 2003FY 2004를 제거합니다.

  8. 데이터 영역을 마우스 오른쪽 단추로 클릭한 후 빈 셀 표시를 클릭하여 이 옵션 옆의 확인 표시를 제거하고 빈 셀을 모두 숨깁니다. 계산 탭 도구 모음에서 이 옵션을 사용할 수도 있습니다. 이렇게 하면 다음 그림에서 볼 수 있는 것처럼 판매 할당액 값을 갖는 모든 직원을 보다 쉽게 확인할 수 있습니다.

    판매 할당액 값을 보여 주는 데이터 창

  9. 피벗 테이블 창에서 열 영역의 FY 2005를 확장해 봅니다.

    Sales Amount Quota 측정값과 Employee Name 특성 계층이 교차되는 부분의 H1 FY 2005 멤버 값이 현재 범위 밖에 있어서 계산되지 않았으므로 FY 2005를 확장할 수 없습니다.

  10. H1 FY 2005 멤버 값이 포함되어 있지 않은 빈 셀을 확인하려면 다음 그림과 같이 피벗 테이블 창을 마우스 오른쪽 단추로 클릭한 후 계산 탭 도구 모음에서 빈 셀 표시를 클릭하여 빈 셀을 모두 표시합니다.

    회계 연도 2005년을 보여 주는 데이터 창

  11. 디버그 메뉴에서 디버깅 중지를 클릭하거나 키보드에서 Shift+F5를 누릅니다.

  12. 왼쪽 여백의 중단점을 클릭하여 계산 스크립트에서 중단점을 제거합니다.

2005 회계 연도 반기 및 분기에 판매 할당액 할당

이 절차에서는 2005 회계 연도 멤버 대신 2005 회계 연도의 회계 반기 멤버를 포함하도록 범위를 수정한 후 2005 회계 연도에 대한 판매 할당액의 절반을 2005 회계 연도의 각 반기에 할당합니다. 그런 다음 2005 회계 연도 멤버 대신 2005 회계 연도의 회계 분기 멤버를 포함하도록 범위를 수정한 후 2005 회계 연도에 대한 판매 할당액의 1/4을 2005 회계 연도의 각 분기에 할당합니다. 작업이 모두 끝나면 이러한 할당을 테스트합니다.

2005 회계 연도 반기 및 분기에 판매 할당액을 할당하려면

  1. 계산 식 창의 스크립트 보기에서 계산 스크립트 끝의 새 줄에 다음 문을 입력합니다.

    /* Allocation of Sales Amount Quota to the 2005 Fiscal Semesters */
    SCOPE ( [Date].[Fiscal Semester].[Fiscal Semester].Members ); 
    

    SCOPE 문은 SCOPE 문과 이전 SCOPE 문 사이에 END SCOPE 문이 없으므로 중첩된 SCOPE 문입니다. SCOPE 문이 중첩되면 중첩된 SCOPE 문은 부모 범위에서 다시 범위가 지정되지 않은 속성을 상속합니다. 이전 SCOPE 문은 Sales Amount Quota 측정값, Employees 사용자 정의 계층 또는 Fiscal Time 사용자 정의 계층을 직접적으로 수정하지 않습니다. 대신 Members 함수를 사용하여 Fiscal Semester 특성 계층의 각 멤버를 하위 큐브 정의에 추가합니다. 자세한 내용은 Members(집합)(MDX)를 참조하십시오. 중첩된 SCOPE 문의 결과로서 큐브 공간에는 2005 회계 연도의 회계 반기(현재 큐브의 2005 회계 연도에는 회계 반기가 하나만 있음)에서 Employee 멤버와 Sales Amount Quota 측정값이 교차되는 모든 멤버가 포함됩니다.

  2. 계산 식 창에서 계산 스크립트 끝의 새 줄에 다음 문을 입력합니다.

    THIS = [Date].[Fiscal Time].CurrentMember.Parent / 2;
    

    이 문은 정의된 큐브 공간의 각 회계 반기에 회계 분기에 대한 계산 값을 할당합니다. 부모 값의 1/4을 각 멤버에 할당하기 위해 CurrentMember.Parent 함수가 사용됩니다. 자세한 내용은 CurrentMember(MDX)Parent(MDX)를 참조하십시오.

  3. 계산 식 창에서 계산 스크립트 끝의 새 줄에 다음 문을 입력합니다.

    /* Allocation of Sales Amount Quota to the 2005 Fiscal Quarters */
    SCOPE ( [Date].[Fiscal Quarter].[Fiscal Quarter].Members ); 
    

    SCOPE 문 또한 SCOPE 문과 이전 SCOPE 문 사이에 END SCOPE 문이 없으므로 중첩된 SCOPE 문입니다. 이전 SCOPE 문은 Sales Amount Quota 측정값, Employees 사용자 정의 계층 또는 Fiscal Time 사용자 정의 계층을 직접적으로 수정하지 않습니다. 대신 Members 함수를 사용하여 Fiscal Quarter 특성 계층의 각 멤버를 하위 큐브 정의에 추가합니다. 그 결과 큐브 공간에는 2005 회계 연도의 회계 분기(현재 큐브의 2005 회계 연도에는 회계 분기가 하나만 있음)에서 Employee 멤버와 Sales Amount Quota 측정값이 교차되는 모든 멤버가 포함됩니다.

  4. 계산 식 창에서 계산 스크립트 끝의 새 줄에 다음 문을 입력합니다.

    THIS = [Date].[Fiscal Time].CurrentMember.Parent / 2;
    

    이 문은 정의된 큐브 공간의 각 회계 분기에 회계 분기에 대한 계산 값을 할당합니다. 부모 값의 절반을 각 멤버에 할당하기 위해 CurrentMember.Parent 함수가 사용됩니다.

  5. 계산 식 창에서 마지막 SCOPE 문 옆의 여백을 클릭하여 중단점을 설정한 후 키보드에서 F5 키를 누릅니다.

    계산 스크립트는 중단점에 도달할 때까지 실행됩니다.

  6. 피벗 테이블 창의 데이터 영역을 클릭한 후 계산 탭 도구 모음에서 빈 셀 표시를 클릭하여 빈 셀을 숨깁니다.

    다음 그림과 같이 데이터 창은 디버거를 마지막으로 통과할 때 사용한 것과 동일한 측정값 및 계층으로 채워지며 해당 부모 값의 절반에 해당하는 H1 FY 2005 멤버의 값이 계산되었습니다.

    마지막으로 각 FY 2005 멤버의 값은 해당 멤버의 집계 결과를 기반으로 다시 계산됩니다. 이 경우에는 회계 연도의 첫 번째 회계 반기에 따라 다시 계산됩니다. 2005 회계 연도 멤버의 값은 각 스크립트가 별도의 패스로 실행되므로 2005 회계 반기 멤버에 대한 계산 결과의 영향을 받습니다. 계산 스크립트의 후속 문의 영향을 받지 않도록 기존 값을 고정하려면 FREEZE 문을 사용합니다. 자세한 내용은 FREEZE 문(MDX)을 참조하십시오.

    FREEZE를 사용하여 기존 값 고정

  7. 열 영역에서 H1 FY 2005를 확장합니다.

    Q1 FY 2005 멤버의 값은 아직 계산되지 않았습니다.

  8. 피벗 테이블 창의 데이터 영역을 클릭한 후 계산 탭 도구 모음에서 빈 셀 표시를 클릭합니다.

  9. 열 영역에서 Q1 FY 2005를 확장합니다.

    2005 회계 연도의 1/4 분기에 속하는 두 월은 스크립트의 마지막 두 문이 실행될 때까지 현재 하위 큐브의 범위에 포함되지 않으므로 값이 할당되지 않습니다. Analysis Services Tutorial 큐브의 시간 차원은 2005 회계 연도의 첫 2개월만 포함합니다. 따라서 Q2 FY 2005 멤버는 없습니다.

  10. F10 키를 눌러 SCOPE 문을 실행한 다음 F10 키를 다시 눌러 계산 스크립트의 마지막 문을 실행합니다. 이 문은 현재 하위 큐브에 계산을 적용합니다.

    다음 그림에 표시된 것처럼 Q1 FY 2005 멤버의 값이 계산되고 H1 FY 2005 및 FY 2005 멤버 값이 자식 멤버의 집계로 다시 계산됩니다. 또한 2005 회계 연도의 각 회계 월(2005년 7월과 8월)에 대한 값은 계산되지 않습니다. 다음 절차에서는 각 분기에 해당 값을 할당합니다.

    Q1 FY 2005 멤버에 대한 계산 값

  11. 디버그 메뉴에서 디버깅 중지를 클릭하거나 키보드에서 Shift+F5를 누릅니다.

  12. 계산 스크립트에서 중단점을 제거합니다.

월에 판매 할당량 할당

이전 범위 문에서 2005 회계 연도로만 계산을 제한한데 반해 이 절차에서는 모든 회계 연도에 회계 월 수준을 포함시키도록 범위를 수정합니다. 그런 후 각 직원의 판매 할당액에 대한 회계 분기 값의 1/3을 각 회계 월에 할당합니다.

월에 판매 할당량을 할당하려면

  1. 계산 식 창에서 계산 스크립트 끝의 새 줄에 다음 문을 추가합니다.

    /* Allocate Quotas to Months */
    SCOPE ( [Date].[Fiscal Time].[Fiscal Month].Members );
    

    SCOPE 문은 각 회계 분기 값을 기반으로 각 회계 월에 판매 할당액을 할당하기 위해 MDX 식을 적용할 큐브 공간을 수정하는 또 다른 중첩 범위 문입니다. 이 SCOPE 문은 앞에 나온 중첩 SCOPE 문과 비슷하지만 Fiscal Time 사용자 정의 계층 자체의 범위가 다시 지정됩니다. 따라서 이 큐브 공간의 멤버는 2005 회계 연도의 회계 월 멤버뿐만 아니라 Date 차원의 모든 회계 월 멤버를 포함합니다.

    [!참고] 이러한 큐브 범위 수정 내용을 이전 절차에 나온 큐브 범위 수정 내용과 비교하면 두 범위 변경 문 간의 차이를 이해할 수 있습니다.

  2. 계산 식 창에서 계산 스크립트 끝의 새 줄에 다음 문을 추가합니다.

    THIS = [Date].[Fiscal Time].CurrentMember.Parent / 3; 
    

    이 문은 회계 기간 계층의 각 월 멤버에 부모 수준에 해당하는 분기 값의 1/3을 할당합니다. 이 계산은 큐브 내의 모든 회계 월에 적용됩니다.

  3. 계산 식 창에서 마지막 THIS 문의 왼쪽 여백을 클릭하여 중단점을 설정한 후 키보드에서 F5 키를 누릅니다.

  4. 2004년 7월 및 2004년 8월에 대한 값을 검토합니다.

    2004년 7월 또는 2004년 8월에 대한 값은 현재 계산되지 않습니다.

  5. 데이터 창의 아무 위치나 마우스 오른쪽 단추로 클릭한 후 빈 셀 표시를 클릭하여 값이 있는 셀만 표시합니다.

    이렇게 하면 계산 스크립트에서 마지막 문의 실행 결과를 보다 쉽게 파악할 수 있습니다.

  6. F10 키를 눌러 마지막 문을 실행합니다.

    다음 그림에 표시된 것처럼 각 회계 월 동안 각 직원의 판매 할당액 값은 해당 부모 값의 1/3에 해당하는 값으로 계산됩니다.

    계산된 판매 할당액 값

  7. 열 영역에서 FY 2005를 제거한 후 Q4 FY 2004를 추가합니다.

  8. FY 2004, H2 FY 2004, Q4 FY 2004를 차례로 확장합니다.

    다음 그림에 표시된 것처럼 각 회계 월에 대한 값은 회계 분기의 값 합계와 같습니다.

    각 회계 월에 대해 계산된 값

  9. 디버그 메뉴에서 디버깅 중지를 클릭합니다.

  10. 계산 스크립트에서 중단점을 제거합니다.

  11. 도구 모음에서 모두 저장을 클릭합니다.

[!참고] 6단원까지의 완료된 프로젝트는 업데이트된 예제를 다운로드 및 설치하여 사용할 수 있습니다. 자세한 내용은 예제 설치에서 업데이트된 예제 얻기를 참조하십시오.

다음 단원

7단원: KPI(핵심 성과 지표) 정의

참고 항목

관련 자료

MDX 스크립트 만들기 및 편집
SCOPE 문(MDX)
FORE_COLOR 및 BACK_COLOR 내용(MDX)
This(MDX)
FREEZE 문(MDX)
CurrentMember(MDX)
Parent(MDX)
Members(집합)(MDX)

도움말 및 정보

SQL Server 2005 지원 받기