명명된 집합을 MDX로 작성(MDX)

식 집합은 길고 복잡한 선언이 될 수 있으므로 이해하기 어려울 수 있습니다. 또는 식 집합이 너무 자주 사용되어 반복적으로 집합을 정의하는 작업이 부담이 될 수 있습니다. 이렇게 길고, 복잡하며, 일상적으로 사용되는 식을 쉽게 만들기 위해 MDX(Multidimensional Expressions)에서는 이러한 식을 명명된 집합으로 정의할 수 있습니다.

기본적으로 명명된 집합은 별칭이 할당된 집합 식입니다. 명명된 집합은 일반적으로 통합이 가능한 멤버나 함수를 집합으로 통합할 수 있습니다. MDX는 명명된 집합 별칭을 집합 식으로 취급하기 때문에 집합 식이 사용되는 모든 곳에 이러한 별칭을 사용할 수 있습니다.

다음 컨텍스트 중 하나가 포함되도록 명명된 집합을 정의할 수 있습니다.

  • 쿼리 범위 MDX 쿼리의 일부로 정의되는 명명된 집합을 만들어서 해당 범위가 쿼리로 제한되도록 하려면 WITH 키워드를 사용합니다. 그런 다음 MDX SELECT 문 내에서 명명된 집합을 사용할 수 있습니다. 이 방식을 사용할 경우, WITH 키워드를 사용하여 만든 명명된 집합은 SELECT 문을 배포하지 않아도 변경할 수 있습니다.

    WITH 키워드를 사용하여 명명된 집합을 만드는 방법에 대한 자세한 내용은 쿼리 범위 명명된 집합 만들기(MDX)를 참조하십시오.

  • 세션 범위 범위가 쿼리 컨텍스트보다 넓은 즉, 범위가 MDX 세션의 라이프타임인 명명된 집합을 계산하려면 CREATE SET 문을 사용합니다. CREATE SET 문을 사용하여 정의된 명명된 집합은 해당 세션의 모든 MDX 쿼리에서 사용할 수 있습니다. 예를 들어 CREATE SET 문은 여러 쿼리에서 하나의 집합을 계속적으로 다시 사용하는 클라이언트 응용 프로그램에 적합합니다.

    CREATE SET 문을 사용하여 세션에서 명명된 집합을 만드는 방법에 대한 자세한 내용은 세션 범위 명명된 집합 만들기(MDX)를 참조하십시오.

  • **전역 범위   **범위가 사용자의 세션 컨텍스트보다 넓은(실행 중인 인스턴스의 수명인) 명명된 집합을 만들려면 기본 MDX 스크립트 내에서 CREATE SET 문을 사용합니다. 자세한 내용은 기본 MDX 스크립트(MDX)를 참조하십시오. 기본 MDX 스크립트에서 CREATE SET을 사용하여 정의된 명명된 집합은 임의의 세션의 모든 MDX 쿼리에서 모든 사용자가 사용할 수 있습니다.

명명된 집합의 내용은 생성될 때(정적) 또는 쿼리에서 사용될 때(동적) 계산될 수 있습니다. CREATE SET [STATIC|DYNAMIC] 구문은 집합이 계산될 때를 정의합니다. 자세한 내용은 CREATE SET 문(MDX)CREATE SET 문(MDX)을 참조하십시오. 기본적으로 CREATE SET 문에서 키워드를 지정하지 않은 경우 집합이 정적으로 만들어집니다.

동적 동작을 사용하는 명명된 집합은 기본 MDX 스크립트에서 전역으로 정의되거나 세션 범위에서 정의될 수 있습니다. 그러나 이러한 명명된 집합은 쿼리가 확인될 때만(쿼리 범위) 계산됩니다. 세션이나 전역 범위에서 동적 집합을 계산하려고 하면 오류가 발생합니다. 이는 동적 집합의 간접적인 참조에도 적용됩니다. 동적 명명된 집합을 참조할 수 있는, 전역으로 정의되거나 세션 범위에서 정의된 계산의 목록은 다음과 같습니다.

  • 계산 멤버

  • 동적 명명된 집합

  • KPI

  • 대입 식의 RHS(오른쪽) 식

  • 셀 계산의 조건 식

  • 셀 계산의 값 식

동적 집합은 쿼리 범위에서 계산되므로 임의의 MDX 쿼리 내에서 동적 집합을 참조할 수 있습니다.

주의 사항주의

동적 집합이 CREATE SET 명령 중에 계산되지 않기 때문에 동적 집합이 종속되어 있는 모든 개체(정적 또는 동적)에 대한 링크가 만들어집니다. 따라서 동적 집합을 삭제할 때까지 참조된 개체 중 일부나 모두를 삭제할 수 없습니다. 예를 들어 동적 명명된 집합이 세션 계산 멤버를 참조하는 세션에서 만들어지는 경우 동적 명명된 집합이 있는 동안에는 해당 계산 멤버를 삭제할 수 없습니다.

동적 명명된 집합 확인

어느 시점에서든 최대 3개의 동적 집합 버전이 존재할 수 있습니다.

  • 큐브 스크립트에서 사용되는 전역 범위의 동적 집합

  • 세션 계산에서 사용되는 세션 범위의 동적 집합

  • 쿼리 계산에서 사용되는 쿼리 범위의 동적 집합

계산에서 사용되는 버전은 전적으로 식의 컨텍스트와 동적 명명된 집합이 참조되는 방식에 따라 결정됩니다. 이는 대부분 간접적 참조에 적용됩니다.

예를 들어 세션 동적 명명된 집합을 사용하는 세션 계산 멤버가 있고 쿼리에서 이 계산 멤버를 사용하는 경우 명명된 집합이 세션 범위에서 계산되고 쿼리의 WHERE 절이 명명된 집합에 영향을 미치지 않습니다. 그러나 쿼리에서 동일한 동적 명명된 집합을 직접 사용하는 경우 명명된 집합이 쿼리 범위에서 계산되고 WHERE 절이 명명된 집합의 결과에 영향을 미칠 수 있습니다.