Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Stosuje zbiór do każdego członka innego zbioru, a następnie łączy powstałe zbiory przez sumę. Alternatywnie, funkcja ta zwraca spójny ciąg utworzony przez wyrażenie wyrażenia na podstawie zbioru.
Syntax
Set expression syntax
Generate( Set_Expression1 , Set_Expression2 [ , ALL ] )
String expression syntax
Generate( Set_Expression1 , String_Expression [ ,Delimiter ] )
Arguments
Set_Expression1
Poprawne wyrażenie z wyrażeń wielowymiarowych (MDX), które zwraca zbiór.
Set_Expression2
Poprawne wyrażenie z wyrażeń wielowymiarowych (MDX), które zwraca zbiór.
String_Expression
Poprawne wyrażenie ciągowe, które zazwyczaj jest nazwą aktualnego członka (CurrentMember.Name) każdej krotki w określonym zbiorze.
Ogranicznik
Prawidłowy ogranicznik wyrażony jako wyrażenie ciągu znaków.
Remarks
Jeśli określony jest drugi zbiór, funkcja Generuj zwraca zbiór wygenerowany przez zastosowanie krotek z drugiego zbioru do każdej krotki z pierwszego zbioru, a następnie łączenie powstałych zbiorów przez sumę. Jeśli określono ALL , funkcja zachowuje duplikaty w uzyskanym zbiorze.
Jeśli określono wyrażenie ciągowe, funkcja Generate zwraca ciąg wygenerowany przez wygenerowanie określonego wyrażenia do każdej krotki z pierwszego zbioru, a następnie łączenie wyników. Opcjonalnie łańcuch można ograniczyć, rozdzielając każdy wynik w powstałym połączonym ciągu łańcuchowym.
Examples
Set
W poniższym przykładzie zapytanie zwraca zestaw zawierający wartość Measure Internet Sales czterokrotnie, ponieważ w zbiorze [Data] jest czterech członków. [roku kalendarzowego]. [roku kalendarzowego]. CZŁONKOWIE:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]}, ALL)
ON 0
FROM [Adventure Works]
Usunięcie ALL zmienia zapytanie tak, że kwota sprzedaży internetowej jest zwracana tylko raz:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]})
ON 0
FROM [Adventure Works]
Najczęstszym praktycznym zastosowaniem Generate jest ocena złożonego wyrażenia zbioru, takiego jak TopCount, nad zbiorem członków. Poniższy przykładowy zapytanie wyświetla 10 najlepszych 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]
Należy zauważyć, że dla każdego roku wyświetlana jest inna top 10, a użycie Generate jest jedynym sposobem na uzyskanie tego wyniku. Wystarczy połączyć lata kalendarzowe z zestawem 10 najlepszych produktów wyświetlając 10 najlepszych produktów dla wszystkich czasów, powtarzane dla każdego roku, jak pokazano na 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 pokazuje użycie Generate do zwracania ciągu znaków:
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]
Uwaga / Notatka
Ta forma funkcji Generate może być przydatna podczas debugowania obliczeń, ponieważ pozwala zwrócić ciąg znaków wszystkich członków zbioru. Może to być łatwiejsze do odczytania niż ścisła reprezentacja MDX zbioru, którą zwraca funkcja SetToStr (MDX).