Ancestor (MDX)
指定メンバーの先祖のうち、指定したレベル、またはメンバーから指定された距離だけ離れた位置にある先祖を返す関数です。
構文
Level syntax
Ancestor(Member_Expression, Level_Expression)
Numeric syntax
Ancestor(Member_Expression, Distance)
引数
Member_Expression
メンバーを 1 つ返す有効な多次元式 (MDX) 式です。Level_Expression
レベルを返す有効な多次元式 (MDX) 式です。Distance
指定されたメンバーからの距離を指定する有効な数値式です。
説明
Ancestor 関数を使用する際には、MDX メンバー式を指定してから、そのメンバーの先祖のレベルを示す MDX 式か、そのメンバーより何レベル上かを示す数値式のいずれかを指定します。 Ancestors 関数は、この情報を使用して、そのレベルの先祖メンバーを返します。
注意
先祖メンバーのみではなく、先祖メンバーを含んでいるセットを返すには、Ancestors (MDX) 関数を使用します。
レベル式が指定されている場合、Ancestor 関数は、指定されたレベルにある、指定されたメンバーの先祖を返します。 指定されたメンバーが指定されたレベルと同じ階層内に存在しない場合、関数はエラーを返します。
距離が指定されている場合、Ancestor 関数は、メンバー式で指定された階層内で指定されたステップ数だけ上に位置する、指定されたメンバーの先祖を返します。 メンバーには、属性階層、ユーザー定義階層、または場合によっては親子階層のメンバーを指定できます。 数値として 1 が指定された場合はメンバーの親を返し、数値として 2 が指定された場合はメンバーの親より 1 つ上の先祖 (存在する場合) を返します。 数値として 0 が指定された場合はそのメンバー自体を返します。
注意
この形式の Ancestor 関数は、親メンバーのレベルが不明な場合や、名前で指定できない場合に使用できます。
使用例
次の例では、レベル式を使用して、Australia の State-Province ごとの Internet Sales Amount と、Australia 全体における合計 Internet Sales Amount に対するその売上金額の割合を返しています。
WITH MEMBER Measures.x AS [Measures].[Internet Sales Amount] /
(
[Measures].[Internet Sales Amount],
Ancestor
(
[Customer].[Customer Geography].CurrentMember,
[Customer].[Customer Geography].[Country]
)
), 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]
次の例では、数値式を使用して、Australia の State-Province ごとの Internet Sales Amount と、すべての国の Internet Sales Amount の合計に対する割合をそれぞれ返します。
WITH MEMBER Measures.x AS [Measures].[Internet Sales Amount] /
(
[Measures].[Internet Sales Amount],
Ancestor
([Customer].[Customer Geography].CurrentMember, 2)
), 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]