다음을 통해 공유


명명된 Query-Scoped 집합 만들기(MDX)

명명된 집합이 단일 MDX(다차원 식) 쿼리에만 필요한 경우 WITH 키워드를 사용하여 명명된 집합을 정의할 수 있습니다. 쿼리 실행이 완료되면 WITH 키워드를 사용하여 만든 명명된 집합이 더 이상 존재하지 않습니다.

이 항목에서 설명한 것처럼 WITH 키워드의 구문은 함수를 사용하여 명명된 집합을 정의하는 데도 매우 유연합니다.

비고

명명된 집합에 대한 자세한 내용은 MDX(MDX)에서 명명된 집합 빌드를 참조하세요.

WITH 키워드 문법

다음 구문을 사용하여 MDX SELECT 문에 WITH 키워드를 추가합니다.

[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]   
SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ]  
FROM <SELECT subcube clause>   
[ <SELECT slicer axis clause> ]  
[ <SELECT cell property list clause> ]  
  
<SELECT WITH clause> ::=  
   ( SET Set_Identifier AS 'Set_Expression')  
  

WITH 키워드 Set_Identifier 구문에서 매개 변수에는 명명된 집합에 대한 별칭이 포함됩니다. Set_Expression 매개 변수에는 명명된 집합 별칭이 참조하는 집합 식이 포함됩니다.

WITH 키워드 예제

다음 MDX 쿼리는 Microsoft SQL Server 2000 Analysis Services FoodMart 2000의 샘플 데이터베이스인 다양한 샤도네 및 Chablis 와인의 단위 판매를 검사합니다. 이 쿼리는 결과 집합 측면에서 매우 간단하지만 이러한 쿼리를 유지 관리해야 하는 경우 길고 다루기 어려울 수 있습니다.

SELECT  
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]} ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  

이전 MDX 쿼리를 더 쉽게 유지 관리하려면 WITH 키워드를 사용하여 쿼리에 대한 명명된 집합을 만들 수 있습니다. 다음 코드에서는 WITH 키워드를 사용하여 명명된 집합을 만드는 방법과 명명된 집합 [ChardonnayChablis]을 사용하여 SELECT 문을 더 짧고 쉽게 유지 관리하는 방법을 보여 줍니다.

WITH SET [ChardonnayChablis] AS  
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]}  
  
SELECT  
   [ChardonnayChablis] ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  

WITH 키워드와 함께 함수 사용

명명된 집합의 각 멤버를 명시적으로 정의할 수 있지만 이 방법은 긴 문을 생성할 수 있습니다. 명명된 집합을 더 쉽게 만들고 유지 관리하려면 MDX 함수를 사용하여 멤버를 정의할 수 있습니다.

예를 들어 다음 MDX 쿼리 예제에서는 Filter, CurrentMemberName MDX 함수와 InStr VBA 함수를 사용하여 명명된 집합을 [ChardonnayChablis] 만듭니다. 명명된 [ChardonnayChablis] 집합의 이 버전은 이 항목의 앞에 표시된 명시적으로 정의된 버전과 동일합니다.

WITH SET [ChardonnayChablis] AS  
   'Filter([Product].Members, (InStr(1, [Product].CurrentMember.Name, "chardonnay") <> 0) OR (InStr(1, [Product].CurrentMember.Name, "chablis") <> 0))'  
  
SELECT  
   [ChardonnayChablis] ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  
  

또한 참조하십시오

SELECT 문(MDX)
Session-Scoped 명명된 집합 만들기(MDX)