Share via


Descendants (MDX)

指定したレベルまたは距離にあるメンバーの子孫のセットを返します。必要に応じて、他のレベルの子孫を含めるか除外します。

構文

  
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
メンバーを 1 つ返す有効な多次元式 (MDX) 式です。

Set_Expression
セットを返す有効な多次元式 (MDX) 式。

Level_Expression
レベルを返す有効な多次元式 (MDX) 式。

距離
指定したメンバーからの距離を指定する有効な数値式。

Desc_Flag
子孫のセットを区別するための説明フラグを指定する有効な文字列式です。

解説

レベルが指定されている場合、 Descendants 関数は、指定したメンバーの子孫または指定したセットのメンバーを含むセットを、指定されたレベルで返します。オプションで 、Desc_Flagで指定されたフラグによって変更されます。

Distance が指定されている場合、Descendants 関数は、指定されたメンバーの子孫、または指定したメンバーの階層内の指定されたレベル数を離れた指定したセットのメンバーを含むセットを返します。オプションで、Desc_Flagで指定されたフラグによって変更されます。 この関数は、不規則階層を対象とする場合に Distance 引数と共に使用されるのが一般的です。 距離に 0 が指定された場合は、指定されたメンバーのみで構成されるセットまたは指定されたセットを返します。

set 式が指定されている場合、 Descendants 関数はセットのメンバーごとに個別に解決され、セットが再度作成されます。 つまり、 Descendants 関数に使用される構文は、機能的には MDX Generate 関数と同等です。

レベルまたは距離が指定されていない場合、関数で使用されるレベルの既定値は、 Level 関数 (<<Member>>) を呼び出すことによって決定されます。Level) 指定したメンバー (メンバーが指定されている場合) または指定したセットの各メンバー (セットが指定されている場合) の Level 関数を呼び出します。 レベル式、距離、またはフラグが指定されていない場合、関数は次の構文が使用されたかのように実行されます。

Descendants

(

Member_Expression ,

Member_Expression.Level ,

SELF_BEFORE_AFTER

)

レベルが指定され、説明フラグが指定されていない場合、関数は次の構文が使用されたかのように実行されます。

Descendants

(

Member_Expression ,

Level_Expression,

SELF

)

説明フラグの値を変更することで、指定したレベルまたは距離の子孫、指定したレベルまたは距離の前後の子 (リーフ ノードまで)、および指定したレベルまたは距離に関係なくリーフの子を含めたり除外したりできます。 次の表では、 Desc_Flag 引数で許可されるフラグについて説明します。

フラグ 説明
SELF 指定されたレベルまたは指定された距離にある子孫メンバーのみを返します。 指定されたレベルが、指定されたメンバーのレベルである場合は、指定されたメンバーを含めます。
AFTER 指定されたレベルまたは距離のすべての下位レベルにある子孫メンバーを返します。
BEFORE 指定されたメンバーと指定されたレベルの間、または指定された距離のすべてのレベルにある子孫メンバーを返します。 指定したメンバーが含まれますが、指定したレベルまたは距離のメンバーは含まれません。
BEFORE_AND_AFTER 指定したメンバーのレベルに従属するすべてのレベルの子孫メンバーを返します。 指定されたメンバーは含めますが、指定されたレベルまたは指定された距離にあるメンバーは含めません。
SELF_AND_AFTER 指定したレベルまたは指定した距離、および指定したレベルに従属するすべてのレベル、または指定した距離にある子孫メンバーを返します。
SELF_AND_BEFORE 指定したレベルまたは指定した距離、および指定したメンバーと指定したレベルの間のすべてのレベル、または指定したメンバーを含む指定した距離にある子孫メンバーを返します。
SELF_BEFORE_AFTER 指定したメンバーのレベルに従属するすべてのレベルの子孫メンバーを返し、指定したメンバーを含めます。
LEAVES 指定したメンバーと指定したレベルの間、または指定した距離にあるリーフの子孫メンバーを返します。

次の例では、指定されたメンバー (United States)、および指定されたメンバー (United States) と指定されたレベル (City) の前のレベルのメンバー間にあるメンバーを返しています。この例では、指定されたメンバー自体 (United States)、および State-Province レベル (City レベルの前のレベル) のメンバーが返されます。 この例には、この関数の他の引数を容易にテストできるように、コメント アウトした引数も含まれています。

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]   

次の Measures.[Gross Profit Margin] 例では、 Adventure Works キューブから、2003 会計年度の各月の日数にわたって計算されたメジャーの日次平均を返します。 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の Internet Sales Amount を返し、都道府県ごとのオーストラリアのインターネット売上金額の合計に対する割合を返します。 この例では、Item 関数を使用して 、先祖 関数によって返されるセットから最初の (およびのみ) タプルを抽出します。

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]  
  

参照

MDX 関数リファレンス (MDX)