Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 ).