Generowanie (MDX)
Kompleksowo każdego element członkowski innego zestaw, a następnie łączy wynikowe zestawy przez Unię.Alternatywnie, ta funkcja zwraca ciąg uzyskiwanej utworzony poprzez ocenę wyrażeniem nad zestaw.
Składnia
Set expression syntax
Generate( Set_Expression1 , Set_Expression2 [ , ALL ] )
String expression syntax
Generate( Set_Expression1 , String_Expression [ ,Delimiter ] )
Argumenty
Set_Expression1
Prawidłowe wyrażenie Multidimensional Expressions (MDX), które zwraca zestaw.Set_Expression2
Prawidłowe wyrażenie Multidimensional Expressions (MDX), które zwraca zestaw.String_Expression
Wyrażenie prawidłowy ciąg jest zazwyczaj nazwą bieżący element członkowski każdej spójna kolekcja określonego (CurrentMember.Name) zestaw.Delimiter
Nieprawidłowy ogranicznik wyrażone jako ciąg wyrażenia.
Uwagi
Jeśli określono drugi zestaw Generate funkcja zwraca zestaw generowane przez zastosowanie krotek w drugim wartość każdej spójna kolekcja w pierwszym, , a następnie sprzęgnięcia zestawy wynikowe w Unii.Jeśli ALL jest określone, funkcja zachowuje duplikatów w wynikowym zestaw.
Jeśli określono wyrażeniem Generate funkcja zwraca wygenerowany przez oceny określone wyrażeniem przeciwko każdej spójna kolekcja w pierwszym ciąg zestaw, i następnie konkatenację wyniki.Opcjonalnie ciągu można ograniczać, oddzielając każdy wynik w wynikowy ciąg uzyskiwanej.
Przykłady
Zestaw
W poniższym przykładzie kwerenda zwraca zestaw zawierający miary Internet Sales amount cztery razy, ponieważ czterech członków zestawu [Data].[Rok kalendarzowy].[Rok kalendarzowy].CZŁONKOWIE:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]}, ALL)
ON 0
FROM [Adventure Works]
Usuwając wszystkie zmiany kwerendy, tak, aby Internet Sales Amount zwracany jest tylko jeden raz:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]})
ON 0
FROM [Adventure Works]
Najczęściej praktyczne wykorzystanie Generate do oceny złożonego ustawiono wyrażenie, takie jak TopCount nad zestaw elementów członkowskich.Następująca kwerenda przykład wyświetla top 10 produktów dla każdego roku kalendarzowego w wierszach:
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]
Zauważ, że różne 10 pierwszych jest wyświetlane dla każdego roku, a korzystanie z Generate jest jedynym sposobem uzyskania tego wyniku.Po prostu crossjoining lat kalendarzowych i zestaw 10 najlepszych produktów wyświetli 10 najlepszych produktów dla wszystkich czas, powtarzających się dla każdego roku, jak pokazano w następującym przykładzie:
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
Poniższy przykład ilustruje użycie Generate zwraca ciąg:
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]
Ostrzeżenie
Ta forma Generate funkcja może być przydatne podczas debugowania obliczeń, co pozwala zwrócić wyświetlanie nazwy wszystkich członków w ciąg zestaw.Może to być bardziej czytelny niż ścisłe reprezentacja MDX zestaw, SetToStr (MDX) zwraca wartość funkcja.