Generate (MDX)

Applica un set a ogni membro di un altro set e unisce i set risultanti tramite un join di unione. In alternativa, questa funzione restituisce una stringa concatenata creata valutando un'espressione stringa su un set.

Sintassi

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

Argomenti

Set_Expression1
Espressione MDX (Multidimensional Expression) valida che restituisce un set.

Set_Expression2
Espressione MDX (Multidimensional Expression) valida che restituisce un set.

String_Expression
Espressione stringa valida che corrisponde in genere al nome del membro corrente (CurrentMember.Name) di ogni tupla nel set specificato.

Delimitatore
Delimitatore valido espresso come espressione stringa.

Osservazioni:

Se viene specificato un secondo set, la funzione Generate restituisce un set generato applicando le tuple nel secondo set a ogni tupla del primo set e quindi unendo i set risultanti in base all'unione. Se si specifica ALL , la funzione mantiene i duplicati nel set risultante.

Se viene specificata un'espressione stringa, la funzione Generate restituisce una stringa generata valutando l'espressione stringa specificata su ogni tupla nel primo set e quindi concatenando i risultati. Facoltativamente, è possibile delimitare la stringa separando i vari risultati nella stringa concatenata risultante.

Esempi

Set

Nell'esempio seguente, la query restituisce un set che contiene la misura Internet Sales amount quattro volte, perché quattro sono i membri nel 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]  

La rimozione di ALL modifica la query in modo che Internet Sales Amount sia restituito una sola volta:

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

L'uso pratico più comune di Generate consiste nel valutare un'espressione set complessa, ad esempio TopCount, su un set di membri. Nell'esempio di query seguente vengono visualizzati i primi 10 prodotti per ogni anno di calendario su righe:

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]  

Si noti che per ogni anno viene visualizzato un diverso top 10 e che l'uso di Generate è l'unico modo per ottenere questo risultato. Applicando un semplice crossjoin ai calendari e al set dei 10 prodotti migliori sarà possibile visualizzare i 10 migliori prodotti ogni volta, ripetuti per ogni anno, come illustrato nell'esempio seguente:

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]  

Stringa

Nell'esempio seguente viene illustrato l'uso di Generate per restituire una stringa:

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]  

Nota

Questa forma della funzione Generate può essere utile durante il debug dei calcoli, in quanto consente di restituire una stringa che visualizza i nomi di tutti i membri in un set. Questa operazione potrebbe essere più semplice da leggere rispetto alla rappresentazione MDX rigida di un set restituito dalla funzione SetToStr (MDX).

Vedi anche

Guida di riferimento alle funzioni MDX (MDX)