Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.