指定されたレベルまたは距離におけるメンバーの子孫の集合を返し、他のレベルの子孫を含めるか除外するかを任意で選びます。
構文
Member expression syntax using a level expression
Descendants(Member_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Member expression syntax using a numeric expression
Descendants(Member_Expression [ , Distance [ ,Desc_Flag ] ] )
Set expression syntax using a level expression
Descendants(Set_Expression [ , Level_Expression [ ,Desc_Flag ] ] )
Member expression syntax using a numeric expression
Descendants(Set_Expression [ , Distance [ ,Desc_Flag ] ] )
引数
Member_Expression
メンバーを返す有効な多次元表現(MDX)式。
Set_Expression
集合を返す有効な多次元表現(MDX)式。
Level_Expression
レベルを返す有効な多次元表現(MDX)式。
距離
指定されたメンバーからの距離を指定する有効な数値式。
Desc_Flag
可能な子孫の集合を区別する記述フラグを指定する有効な文字列式。
Remarks
レベルが指定されている場合、 Descendant関数 は指定されたメンバーまたはその集合の子孫を含む集合を、指定されたレベルで返します。これは Desc_Flagで指定されたフラグによって任意で修正されます。
距離が指定されている場合、Descendants関数は指定されたメンバーの子孫、またはそのメンバーの階層内で指定されたレベル数離れたメンバーを含む集合を返します。これらはDesc_Flagで指定されたフラグによって任意に変更されます。 通常、この関数はDistance引数とともに粗い階層を扱います。 指定された距離がゼロ(0)の場合、関数は指定されたメンバーまたは指定された集合のみからなる集合を返します。
集合式が指定されている場合、子 孫 関数は集合の各メンバーごとに個別に解決され、再び集合が作成されます。 言い換えれば、 Descendants 関数に使われる構文はMDXの 生成 関数と機能的に同等です。
レベルや距離が指定されていない場合、関数が使用するレベルのデフォルト値はレベル関数(<<Member>>を呼び出して決定されます。指定されたメンバーに対してレベルを割り当てる(メンバーが指定されている場合)または指定された集合の各メンバーに対してレベル関数を呼び出すことで(集合が指定されている場合)。 レベル式、距離、フラグが指定されていない場合、関数は以下の構文が使われているかのように動作します。
Descendants
(
Member_Expression ,
Member_Expression.Level ,
SELF_BEFORE_AFTER
)
レベルが指定されていて記述フラグが指定されていない場合、関数は以下の構文が使われたかのように動作します。
Descendants
(
Member_Expression ,
Level_Expression,
SELF
)
説明フラグの値を変更することで、指定されたレベルや距離の子孫、指定されたレベルや距離の前後(リーフノードまで)、そして指定されたレベルや距離に関係なく葉の子を含みたり除外したりできます。 以下の表は 、Desc_Flag 論で許されるフラグを説明します。
| Flag | Description |
|---|---|
| SELF | 指定されたレベルまたは指定された距離からの子孫のみを返します。 関数は指定されたメンバーを含みますが、指定されたレベルが指定されたメンバーのレベルである場合に限られます。 |
| 後 | 指定されたレベルまたは距離に従属するすべてのレベルの子孫メンバーを返します。 |
| BEFORE | 指定されたメンバーと指定されたレベル、または指定された距離の間のすべてのレベルから子孫メンバーを返します。 指定されたメンバーは含まれますが、指定されたレベルや距離のメンバーは含まれません。 |
| BEFORE_AND_AFTER | 指定されたメンバーのレベルに従属するすべてのレベルの子孫メンバーを返します。 指定された部材は含まれますが、指定された高さや距離の部材は含まれません。 |
| SELF_AND_AFTER | 指定されたレベルまたは指定された距離の子孫メンバーと、指定されたレベルまたは指定された距離に従属するすべてのレベルを返します。 |
| SELF_AND_BEFORE | 指定されたレベルまたは指定された距離からの子孫メンバー、および指定されたメンバーとレベルの間のすべてのレベル、または指定された距離からの子孫メンバーを返します。 |
| SELF_BEFORE_AFTER | 指定されたメンバーのレベルに従属するすべてのレベルの子孫メンバーを返し、指定されたメンバーも含みます。 |
| 葉 | 指定されたメンバーと指定されたレベル、または指定された距離の葉子孫メンバーを返します。 |
Examples
以下の例は指定されたメンバー(米国)と、指定されたメンバー(米国)と指定されたレベル(シティ)以前のレベルのメンバー間のメンバーを返します。例は指定されたメンバー自体(米国)と State-Province レベルのメンバー(シティレベル前のレベル)を返します。 この例にはコメント付きの引数が含まれており、この関数の他の引数を簡単にテストできるようにしています。
SELECT Descendants
([Geography].[Geography].[Country].&[United States]
//, [Geography].[Geography].[Country]
, [Geography].[Geography].[City]
//, [Geography].[Geography].Levels (3)
//, SELF
//, AFTER
, BEFORE
// BEFORE_AND_AFTER
//, SELF_AND_AFTER
//, SELF_AND_BEFORE
//,SELF_BEFORE_AFTER
//,LEAVES
) ON 0
FROM [Adventure Works]
以下の例は、2003会計年度の各月の日々を算出した Measures.[Gross Profit Margin] 指標の日平均を Adventure Works キューブから返します。
Descendants関数は、[Date].[Fiscal]階層の現在のメンバーから決定された日数のセットを返します。
WITH MEMBER Measures.[Avg Gross Profit Margin] AS Avg
(
Descendants( [Date].[Fiscal].CurrentMember,
[Date].[Fiscal].[Date]
),
Measures.[Gross Profit Margin]
)
SELECT
Measures.[Avg Gross Profit Margin] ON COLUMNS,
[Date].[Fiscal].[Month].Members ON ROWS
FROM [Adventure Works]
WHERE ([Date].[Fiscal Year].&[2003])
以下の例はレベル式を用い、オーストラリアの各 State-Province のインターネット販売額を返し、各州・州ごとのオーストラリアのインターネット販売総額の割合を返します。 この例では、Item関数を使って Ancestors 関数から返される最初(かつ唯一の)タプルを抽出します。
WITH MEMBER Measures.x AS
[Measures].[Internet Sales Amount] /
( [Measures].[Internet Sales Amount],
Ancestors
( [Customer].[Customer Geography].CurrentMember,
[Customer].[Customer Geography].[Country]
).Item (0)
), FORMAT_STRING = '0%'
SELECT {[Measures].[Internet Sales Amount], Measures.x} ON 0,
{Descendants
( [Customer].[Customer Geography].[Country].&[Australia],
[Customer].[Customer Geography].[State-Province], SELF
)
} ON 1
FROM [Adventure Works]