기본 MDX 스크립트(MDX)

MDX 스크립트는 Microsoft SQL Server Analysis Services에 있는 큐브에 대한 계산 프로세스를 정의합니다. 다음과 같은 두 가지 유형의 MDX 스크립트가 있습니다.

  • 기본 MDX 스크립트
    큐브를 만드는 시점에 Analysis Services는 해당 큐브에 대해 기본 MDX 스크립트를 만듭니다. 이 스크립트는 전체 큐브에 대한 계산 패스를 정의합니다.

  • 사용자 정의 MDX 스크립트
    큐브를 만든 후 큐브의 계산 기능을 확장하는 사용자 정의 MDX 스크립트를 추가할 수 있습니다.

기본 MDX 스크립트

큐브를 정의할 때 Analysis Services가 만드는 기본 MDX 스크립트는 단 하나의 CALCULATE 문을 포함합니다. 이 단일 CALCULATE 문은 기본 MDX 스크립트 시작 부분에 있고 첫 번째 계산 패스 중에 전체 큐브를 계산해야 함을 나타냅니다.

또한 기본 MDX 스크립트에는 큐브 디자이너에서 만든 명명된 집합, 대입 식 및 계산 멤버를 만드는 스크립트 명령도 포함됩니다.

  • Analysis Services는 기본 MDX 스크립트에 스크립트 명령을 직접 추가합니다.

  • 큐브에 있는 각각의 명명된 집합의 경우 해당 CREATE SET 문이 기본 MDX 스크립트에 존재합니다.

  • 큐브에서 정의한 각각의 계산 멤버의 경우 해당 CREATE MEMBER 문이 기본 MDX 스크립트에 존재합니다.

큐브 디자이너의 계산 탭을 사용하여 기본 MDX 스크립트에 있는 스크립트 명령, 명명된 집합 및 계산 멤버의 순서를 제어할 수 있습니다. 기본 MDX 스크립트에 저장된 계산을 정의하는 방법은 계산 정의를 참조하십시오.

큐브와 연결된 MDX 스크립트가 없는 경우 큐브는 기본 MDX 스크립트를 사용합니다. 큐브는 MDX 스크립트에 따라 계산 동작을 결정하므로 큐브는 최소한 하나 이상의 MDX 스크립트와 연결되어야 합니다. 즉, MDX 스크립트와 연결되지 않았거나 빈 MDX 스크립트와 연결된 큐브는 어떤 셀도 계산하지 못할뿐더러 계산하지 않습니다. ASSL(Analysis Services Scripting Language) 명령 또는 AMO(Analysis Management Objects)를 사용하여 프로그래밍 방식으로 큐브를 만드는 경우에는 해당 큐브에 대해 단일 CALCULATE 문을 포함한 기본 MDX 스크립트를 만드는 것이 좋습니다.

MDX 스크립트 내용

MDX 스크립트는 다음 문과 식을 포함할 수 있습니다.

  • 모든 MDX 스크립팅 문
    MDX 스크립트에서 MDX 스크립팅 문은 계산의 컨텍스트 및 범위를 제어하고 MDX 스크립트에 있는 다른 문의 동작을 관리합니다. 이 범주에는 다음 문이 포함됩니다.

    MDX 스크립팅 문에 대한 자세한 내용은 MDX 스크립팅 문(MDX)을 참조하십시오.

  • CREATE MEMBER
    CREATE MEMBER 문은 계산 멤버를 만듭니다. 계산 멤버를 만드는 방법은 계산 멤버를 MDX로 작성(MDX)을 참조하십시오.

  • CREATE SET
    CREATE SET 문은 명명된 집합을 만듭니다. 명명된 집합을 만드는 방법은 명명된 집합을 MDX로 작성(MDX)을 참조하십시오.

  • 조건문
    조건문은 MDX 스크립트에 조건부 논리를 추가합니다. 이 범주로는 CASEIF 문이 포함됩니다.

  • 대입 식
    대입 식은 제약이 있는 하위 큐브에 값과 같이 식을 대입합니다. 제약이 있는 하위 큐브 식은 MDX 스크립트 내에 있는 하위 큐브의 "가장자리"를 정의하는 제약이 있는 집합 식의 컬렉션입니다. 다음 코드에서는 제약이 있는 하위 큐브 식에 대한 구문을 보여 줍니다.

    <Constrained subcube> ::= ( 
        ( <Constrained set> [<Crossjoin operator> <Constrained set>...] |
        <ROOT function> |
        <TREE function> |
        LEAVES() |
        * ) [, <Constrained subcube>...]
    <Constrained set> ::= 
        <Natural hierarchy>.MEMBERS | 
        <Natural hierarchy>.LEVEL(<numeric expression>).MEMBERS | 
        { <Natural hierarchy member> } | 
        DESCENDANTS( <Natural hierarchy member>, <Level expression>, ( SELF | AFTER | SELF_AND_AFTER ) ) | 
        DESCENDANTS( <Natural hierarchy member>, , LEAVES )
    <Natural hierarchy> ::= <Hierarchy identifier>
    <Natural hierarchy member> ::= <Natural hierarchy>.<identifier>[.<identifier>...]