集合を別の集合の各要素に適用し、結果として得られた集合を和集合で結合します。 あるいは、この関数は集合上の文字列式を評価して生成された連結文字列を返します。
構文
Set expression syntax
Generate( Set_Expression1 , Set_Expression2 [ , ALL ] )
String expression syntax
Generate( Set_Expression1 , String_Expression [ ,Delimiter ] )
引数
Set_Expression1
集合を返す有効な多次元表現(MDX)式。
Set_Expression2
集合を返す有効な多次元表現(MDX)式。
String_Expression
通常、指定された集合内の各タプルの現在のメンバー名(CurrentMember.Name)名である有効な文字列式です。
区切り記号
文字列式として表現された有効な区切り符。
Remarks
2つ目の集合が指定されている場合、 生成 関数は2番目の集合のタプルを最初のセットの各タプルに適用し、結果として得られた集合を和集合で結合して生成した集合を返します。 ALLが指定されると、関数は結果集合に重複を保持します。
文字列式が指定されている場合、 生成 関数は最初のセットの各タプルに対して指定された文字列式を評価し、結果を連結して生成された文字列を返します。 オプションとして、文字列は区切られ、結果として連結された文字列の各結果を区切ることができます。
Examples
設定
以下の例では、[Date]の集合に4つのメンバーがあるため、Measure Internet Sales金額を含む集合を4回返します。[暦年]。[暦年]。メンバー:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]}, ALL)
ON 0
FROM [Adventure Works]
ALLを削除すると、インターネット販売金額が一度だけ返されるようにクエリが変更されます:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]})
ON 0
FROM [Adventure Works]
生成の最も一般的な実用用途は、TopCountのような複雑な集合式をメンバー集合上で評価することです。 以下の例クエリは、各暦年ごとに行に上位10の製品を表示します。
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]
毎年異なるトップ10が表示されており、この結果を得るには 生成(Genit )を使うしかありません。 カレンダー年とトップ10製品のセットを単純にクロス接続すると、毎年繰り返し表示されるトップ10製品が表示されます。以下の例のように:
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
以下の例は 、文字列 を返すために生成を使う方法を示しています:
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
この 生成関数の 形態は、計算のデバッグ時に有用で、集合内のすべてのメンバーの名前を表示する文字列を返すことができます。 これは SetToStr(MDX) 関数が返す厳密なMDX表現よりも読みやすいかもしれません。