次の方法で共有


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) 式です。

  • Distance
    指定されたメンバーからの距離を指定する有効な数値式です。

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

説明

レベルが指定されている場合、Descendants 関数は、指定されたセットのメンバー (複数も可) の子孫のうち、指定されたレベルにある子孫のセットを返します。返すセットの定義は、Desc_Flag で指定されているフラグによって調整されます。

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

セット式が指定されている場合、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] 

Adventure Works キューブから、2003 年度 (会計) の各月に関して、Measures.[Gross Profit Margin] メジャーの日次平均を計算する例を以下に示します。 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])

次の例では、レベル式を使用して、Australia の State-Province ごとに Internet Sales Amount を返し、State-Province ごとに Australia の Internet Sales Amount の合計に対する割合を返しています。 この例では、Item 関数を使用して、Ancestors 関数によって返されるセットから最初の (1 つしかない) 組を抽出します。

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)