Share via


產生 (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
有效的字串運算式,通常是指定集合中每個 Tuple 之目前成員 (CurrentMember.Name) 的名稱。

分隔符號
以字串運算式表示的有效分隔符號。

備註

如果指定了第二個集合, Generate 函式會傳回一組由將第二個集合中的 Tuple 套用至第一個集合中的每個 Tuple 所產生的集合,然後聯集聯結結果集。 如果 指定 ALL ,函式會在產生的集合中保留重複專案。

如果指定字串運算式, Generate 函式會傳回一個字串,方法是針對第一個集合中的每個 Tuple 評估指定的字串運算式,然後串連結果。 您可以選擇性地分隔字串,以分隔產生的串連字號串中的每個結果。

範例

設定

在下列範例中,查詢會傳回包含量值網際網路銷售量的集合四次,因為集合 [Date] 中有四個成員。[行事歷年份]。[行事歷年份]。成員:

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

移除 ALL 會變更查詢,以便只傳回網際網路銷售金額一次:

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 是取得此結果的唯一方法。 只要交叉聯結行事歷年,前 10 個產品集合就會顯示前 10 個產品,每年重複,如下列範例所示:

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

下列範例示範使用 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]  

注意

在偵錯計算時,這種產生的 函式形式 很有用,因為它可讓您傳回字串,顯示集合中所有成員的名稱。 這可能比 SetToStr (MDX) 函式所傳回集合 的嚴格 MDX 標記法更容易讀取。

另請參閱

MDX 函數參考 (MDX)