생성(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)입니다.

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

설명

두 번째 집합을 지정 하면 Generate 함수는 두 번째 집합의 튜플을 첫 번째 집합의 각 튜플에 적용한 다음 결과 집합을 공용 구조체로 조인하여 생성된 집합을 반환합니다. ALL을 지정하면 함수는 결과 집합에 중복된 항목을 유지합니다.

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

Set

다음 예에서 [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와 같은 복잡한 집합 식을 평가하는 것입니다. 다음 예제 쿼리는 행의 각 일정 연도에 대한 상위 10개 제품을 표시합니다.

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)