Generate(MDX)Generate (MDX)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

한 집합을 다른 집합의 각 멤버에 적용하고 결과 집합을 합집합으로 결합시킵니다.Applies a set to each member of another set, and then joins the resulting sets by union. 또는 집합에 대해 문자열 식을 계산하여 생성된 연결 문자열을 반환합니다.Alternatively, this function returns a concatenated string created by evaluating a string expression over a set.

구문Syntax


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

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

인수Arguments

Set_Expression1Set_Expression1
집합을 반환하는 유효한 MDX 식입니다.A valid Multidimensional Expressions (MDX) expression that returns a set.

Set_Expression2Set_Expression2
집합을 반환하는 유효한 MDX 식입니다.A valid Multidimensional Expressions (MDX) expression that returns a set.

String_ExpressionString_Expression
유효한 문자열 식으로서, 일반적으로 지정된 집합에 있는 각 튜플의 현재 멤버 이름(CurrentMember.Name)입니다.A valid string expression that is typically the name of the current member (CurrentMember.Name) of each tuple in the specified set.

구분 기호Delimiter
문자열 식으로 표현된 유효한 구분 기호입니다.A valid delimiter expressed as a string expression.

주의Remarks

두 번째 집합을 지정 하는 경우는 생성 함수는 첫 번째 집합의 각 튜플에 두 번째 집합의 튜플을 적용 하 여 생성 된 집합을 반환, 다음 결과 조인 공용 구조체에 의해 가져오거나 설정 합니다.If a second set is specified, the Generate function returns a set generated by applying the tuples in the second set to each tuple in the first set, and then joining the resulting sets by union. 경우 모든 지정 된 경우 함수는 결과 집합에 중복을 유지 합니다.If ALL is specified, the function retains duplicates in the resulting set.

문자열 식이 지정 되는 생성 함수는 첫 번째 집합의 각 튜플에 대해 지정 된 문자열 식을 계산 하 여 생성 된 문자열을 반환, 계산한 다음 결과 연결 합니다.If a string expression is specified, the Generate function returns a string generated by evaluating the specified string expression against each tuple in the first set, and then concatenating the results. 연결된 문자열에서 각 결과를 구분하여 문자열을 구분할 수도 있습니다.Optionally, the string can be delimited, separating each result in the resulting concatenated string.

Examples

SetSet

다음 예에서 [Date].[Calendar Year].[Calendar Year].MEMBERS 집합에 4개의 멤버가 있으므로 쿼리는 Internet Sales Amount 측정값을 포함하는 집합을 4번 반환합니다.In the following example, the query returns a set containing the Measure Internet Sales amount four times, because there are four members in the set [Date].[Calendar Year].[Calendar Year].MEMBERS:

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

ALL을 제거하면 Internet Sales Amount가 한 번만 반환되도록 쿼리가 변경됩니다.Removing the ALL changes the query so that the Internet Sales Amount is returned once only:

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

가장 일반적으로 사용 생성 집합 복잡 한 계산 하는 멤버의 집합에 대해 TopCount와 같은 식에 있습니다.The most common practical use of Generate is to evaluate a complex set expression, such as TopCount, over a set of members. 다음 예제 쿼리에서는 Rows의 각 Calendar Year에 대한 상위 10개의 Product를 표시합니다.The following example query displays the top 10 Products for each Calendar Year on Rows:

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 개의 각 연도 및에 대 한 표시 사용 생성 이 결과 얻기 위해 불가피 합니다.Note that a different top 10 is displayed for each year, and that the use of Generate is the only way to get this result. 다음 예와 같이 단순히 Calendar Year와 상위 10개의 Product 집합을 Crossjoin하면 매년 상위 10개의 Product가 항상 반복하여 표시됩니다.Simply crossjoining Calendar Years and the set of top 10 Products will display the top 10 Products for all time, repeated for each year, as shown in the following example:

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]  

문자열String

다음 예제에서는 사용을 보여 줍니다. 생성 문자열을 반환 합니다.The following example shows the use of Generate to return a string:

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]  
참고

이러한 형태의 생성 함수 수 유용할 수 계산을 디버깅할 때 집합의 모든 멤버의 이름을 표시 하는 문자열을 반환할 수 있습니다.This form of the Generate function can be useful when debugging calculations, as it enables you to return a string displaying the names of all the members in a set. 이 집합의 엄격한 MDX 표현 보다 읽기 쉬울 수 있습니다 하는 SetToStr ( Mdx) 함수에서 반환 합니다.This might be easier to read than the strict MDX representation of a set that the SetToStr (MDX) function returns.

관련 항목:See Also

MDX 함수 참조 ( Mdx)MDX Function Reference (MDX)