Generate (MDX)Generate (MDX)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Applica un set a ogni membro di un altro set e unisce i set risultanti tramite un join di unione.Applies a set to each member of another set, and then joins the resulting sets by union. In alternativa, questa funzione restituisce una stringa concatenata creata valutando un'espressione stringa su un set.Alternatively, this function returns a concatenated string created by evaluating a string expression over a set.

SintassiSyntax


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

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

ArgomentiArguments

Set_Expression1Set_Expression1
Espressione MDX (Multidimensional Expression) valida che restituisce un set.A valid Multidimensional Expressions (MDX) expression that returns a set.

Set_Expression2Set_Expression2
Espressione MDX (Multidimensional Expression) valida che restituisce un set.A valid Multidimensional Expressions (MDX) expression that returns a set.

String_ExpressionString_Expression
Espressione stringa valida che corrisponde in genere al nome del membro corrente (CurrentMember.Name) di ogni tupla nel set specificato.A valid string expression that is typically the name of the current member (CurrentMember.Name) of each tuple in the specified set.

DelimitatoreDelimiter
Delimitatore valido espresso come espressione stringa.A valid delimiter expressed as a string expression.

OsservazioniRemarks

Se viene specificato un secondo set, il genera funzione restituisce un set generato applicando le tuple del secondo set a ogni tupla nel primo set, e quindi creando un join risultante dall'unione.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. Se tutti viene specificato, la funzione consente di mantenere duplicati nel set risultante.If ALL is specified, the function retains duplicates in the resulting set.

Se viene specificata un'espressione di stringa, il genera funzione restituisce una stringa generata valutando l'espressione stringa specificata rispetto a ogni tupla nel primo set, quindi concatenando i risultati.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. Facoltativamente, è possibile delimitare la stringa separando i vari risultati nella stringa concatenata risultante.Optionally, the string can be delimited, separating each result in the resulting concatenated string.

EsempiExamples

ImpostareSet

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: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]  

La rimozione di ALL modifica la query in modo che Internet Sales Amount sia restituito una sola volta: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]  

L'utilizzo pratico più comune di genera è impostato per valutare un complesso espressione, ad esempio TopCount, su un set di membri.The most common practical use of Generate is to evaluate a complex set expression, such as TopCount, over a set of members. Nell'esempio di query seguente vengono visualizzati i primi 10 prodotti per ogni anno di calendario su righe: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]  

Si noti che diverse top 10 viene visualizzato per ogni anno e che l'utilizzo di genera è l'unico modo per ottenere questo risultato.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. 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: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]  

StringString

Nell'esempio seguente viene illustrato come utilizzare genera per restituire una stringa: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]  
Nota

Questa forma del genera può risultare utile durante il debug di calcoli, in quanto consente di restituire una stringa che visualizza i nomi di tutti i membri di un set.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. Questo potrebbe essere più facile da leggere rispetto alla rigida rappresentazione MDX di un set che il SetToStr ( MDX ) risultato della funzione.This might be easier to read than the strict MDX representation of a set that the SetToStr (MDX) function returns.

Vedere ancheSee Also

Riferimento alla funzione MDX ( MDX )MDX Function Reference (MDX)