다음을 통해 공유


Generate(MDX)

한 집합을 다른 집합의 각 멤버에 적용하고 결과 집합을 합집합으로 결합시킵니다. 또는 집합에 대해 문자열 식을 계산하여 생성된 연결 문자열을 반환합니다.

구문

Set expression syntax
Generate( Set_Expression1 ,  Set_Expression2 [ , ALL ]  )

String expression syntax
Generate( Set_Expression1 ,  String_Expression [ ,Delimiter ]  )

인수

  • Set_Expression1
    집합을 반환하는 유효한 MDX 식입니다.

  • Set_Expression2
    집합을 반환하는 유효한 MDX 식입니다.

  • String_Expression
    유효한 문자열 식으로서, 일반적으로 지정된 집합에 있는 각 튜플의 현재 멤버 이름(CurrentMember.Name)입니다.

  • Delimiter
    문자열 식으로 표현된 유효한 구분 기호입니다.

주의

두 번째 집합이 지정된 경우 Generate 함수는 첫 번째 집합의 각 튜플에 대해 두 번째 집합의 튜플을 적용한 다음 결과 집합을 UNION으로 조인하여 생성된 집합을 반환합니다. ALL이 지정된 경우 함수는 결과 집합에 중복 요소를 유지합니다.

문자열 식이 지정된 경우 Generate 함수는 지정된 문자열 식을 첫 번째 집합의 각 튜플에 대해 계산한 다음 결과를 연결하여 생성된 문자열을 반환합니다. 연결된 문자열에서 각 결과를 구분하여 문자열을 구분할 수도 있습니다.

집합

다음 예에서 [Date].[Calendar Year].[Calendar Year].MEMBERS 집합에 4개의 멤버가 있으므로 쿼리는 Internet Sales Amount 측정값을 포함하는 집합을 4번 반환합니다.

SELECT 
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]}, ALL)
ON 0
FROM [Adventure Works]

ALL을 제거하면 Internet Sales Amount가 한 번만 반환되도록 쿼리가 변경됩니다.

SELECT 
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]})
ON 0
FROM [Adventure Works]

Generate가 가장 일반적으로 사용되는 경우는 멤버 집합에 대해 TopCount와 같은 복잡한 집합 식을 계산하는 경우입니다. 다음 예제 쿼리에서는 Rows의 각 Calendar Year에 대한 상위 10개의 Product를 표시합니다.

SELECT 
{[Measures].[Internet Sales Amount]}
ON 0,
GENERATE( 
[Date].[Calendar Year].[Calendar Year].MEMBERS
, TOPCOUNT(
[Date].[Calendar Year].CURRENTMEMBER
[Product].[Product].[Product].MEMBERS
,10, [Measures].[Internet Sales Amount]))
ON 1
FROM [Adventure Works]

연도별로 서로 다른 상위 10개의 제품이 표시되며 Generate를 사용해야만 이 결과를 가져올 수 있습니다. 다음 예와 같이 단순히 Calendar Year와 상위 10개의 Product 집합을 Crossjoin하면 매년 상위 10개의 Product가 항상 반복하여 표시됩니다.

SELECT 
{[Measures].[Internet Sales Amount]}
ON 0,
[Date].[Calendar Year].[Calendar Year].MEMBERS
TOPCOUNT(
[Product].[Product].[Product].MEMBERS
,10, [Measures].[Internet Sales Amount])
ON 1
FROM [Adventure Works]

문자열

다음 예에서는 Generate를 사용하여 문자열을 반환하는 방법을 보여 줍니다.

WITH 
MEMBER MEASURES.GENERATESTRINGDEMO AS
GENERATE( 
[Date].[Calendar Year].[Calendar Year].MEMBERS,
[Date].[Calendar Year].CURRENTMEMBER.NAME)
MEMBER MEASURES.GENERATEDELIMITEDSTRINGDEMO AS
GENERATE( 
[Date].[Calendar Year].[Calendar Year].MEMBERS,
[Date].[Calendar Year].CURRENTMEMBER.NAME, " AND ")
SELECT 
{MEASURES.GENERATESTRINGDEMO, MEASURES.GENERATEDELIMITEDSTRINGDEMO}
ON 0
FROM [Adventure Works]

[!참고]

이러한 형식의 Generate 함수는 계산을 디버깅할 때 유용할 수 있습니다. 사용자는 이 함수를 사용하여 집합에 있는 모든 멤버의 이름을 표시하는 문자열을 반환할 수 있습니다. 이는 SetToStr(MDX) 함수에서 반환하는 집합의 엄격한 MDX 표현보다 읽기 쉬울 수 있습니다.

참고 항목

참조

MDX 함수 참조(MDX)