Generate (MDX)

Applicerar en mängd på varje medlem i en annan mängd och förenar sedan de resulterande mängderna genom union. Alternativt returnerar denna funktion en sammanfogad sträng som skapats genom att utvärdera ett stränguttryck över en mängd.

Syntax

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

Arguments

Set_Expression1
Ett giltigt Multidimensional Expressions (MDX)-uttryck som returnerar en mängd.

Set_Expression2
Ett giltigt Multidimensional Expressions (MDX)-uttryck som returnerar en mängd.

String_Expression
Ett giltigt stränguttryck som vanligtvis är namnet på den aktuella medlemmen (CurrentMember.Name) i varje tupl i den specificerade mängden.

avgränsare
En giltig avgränsare uttryckt som ett stränguttryck.

Remarks

Om en andra mängd specificeras, returnerar Generera-funktionen en mängd genererad genom att applicera tuplerna i den andra mängden på varje tuple i den första mängden, och sedan sammanfoga de resulterande mängderna genom union. Om ALL specificeras behåller funktionen dubbletter i den resulterande mängden.

Om ett stränguttryck specificeras, returnerar Genere-funktionen en sträng genererad genom att utvärdera det specificerade stränguttrycket mot varje tuple i den första mängden och sedan sammanfoga resultaten. Valfritt kan strängen avgränsas, vilket separerar varje resultat i den resulterande sammanlänkade strängen.

Examples

Ställ in

I följande exempel returnerar frågan en mängd som innehåller Measure Internet Sales-beloppet fyra gånger, eftersom det finns fyra medlemmar i mängden [Datum]. [Kalenderår]. [Kalenderår]. MEDLEMMAR:

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

Att ta bort ALL ändrar frågan så att Internet Sales Amount returneras endast en gång:

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

Den vanligaste praktiska användningen av Generate är att utvärdera ett komplext mängduttryck, såsom TopCount, över en mängd medlemmar. Följande exempelfråga visar de 10 bästa produkterna för varje kalenderår på rader:

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]  

Observera att en annan topp 10 visas för varje år, och att användningen av Generate är det enda sättet att få detta resultat. Genom att helt enkelt korskoppla kalenderår och uppsättningen av topp 10 produkter visas de 10 bästa produkterna för alla tider, upprepade för varje år, som visas i följande exempel:

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

Följande exempel visar användningen av Generate för att returnera en sträng:

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]  

Anmärkning

Denna form av Generera-funktionen kan vara användbar vid felsökning av beräkningar, eftersom den gör det möjligt att returnera en sträng som visar namnen på alla medlemmar i en mängd. Detta kan vara lättare att läsa än den strikta MDX-representationen av en mängd som SetToStr (MDX)- funktionen returnerar.