생성(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 표현보다 읽기 쉬울 수 있습니다.