Generování (MDX)

Aplikuje množinu na každého člena jiné množiny a poté spojuje výsledné množiny sjednocením. Alternativně tato funkce vrací konkatenovaný řetězec vytvořený vyhodnocením řetězcového výrazu přes množinu.

Syntax

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

Arguments

Set_Expression1
Platný výraz Multidimensional Expressions (MDX), který vrací množinu.

Set_Expression2
Platný výraz Multidimensional Expressions (MDX), který vrací množinu.

String_Expression
Platný řetězcový výraz, který je typicky názvem aktuálního člena (CurrentMember.Name) každé n-tice ve stanovené množině.

Oddělovač
Platný oddělovač vyjádřený jako řetězcový výraz.

Remarks

Pokud je určena druhá množina, funkce Generate vrátí množinu vytvořenou aplikací n-tic z druhé množiny na každou n-tici v první množině a následným spojením výsledných množin sjednocením. Pokud je specifikováno ALL , funkce si ponechá duplikáty ve výsledné množině.

Pokud je specifikován řetězcový výraz, funkce Generate vrátí řetězec generovaný vyhodnocením specifikovaného řetězcového výrazu proti každé n-tici v první množině a následným spojováním výsledků. Volitelně lze řetězec ohraničit a oddělit jednotlivé výsledky ve výsledném spojeném řetězci.

Examples

Nastavit

V následujícím příkladu dotaz vrací sadu obsahující částku Measure Internet Sales čtyřikrát, protože v sadě jsou čtyři členové [Datum]. [kalendářní rok]. [kalendářní rok]. ČLENOVÉ:

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

Odstranění ALL mění dotaz tak, že částka internetového prodeje se vrací pouze jednou:

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

Nejčastějším praktickým využitím Generate je vyhodnocení výrazu komplexní množiny, například TopCount, nad množinou členů. Následující příklad dotazu zobrazuje 10 nejlepších produktů pro každý kalendářní rok na řádku:

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]  

Všimněte si, že pro každý rok se zobrazuje jiná top 10 a použití Generate je jediný způsob, jak tento výsledek získat. Jednoduše propojením kalendářních let a sady top 10 produktů se zobrazí 10 nejlepších produktů pro všechny doby, opakované pro každý rok, jak je znázorněno v následujícím příkladu:

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

Následující příklad ukazuje použití Generate pro vrácení řetězce:

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]  

Note

Tato forma funkce Generate může být užitečná při ladění výpočtů, protože umožňuje vrátit řetězec zobrazující názvy všech členů v množině. To může být snazší na čtení než přísná MDX reprezentace množiny, kterou vrací funkce SetToStr (MDX ).