Ancestors (MDX)
指定メンバーの先祖のうち、指定されたレベルまたはメンバーから指定された距離だけ離れた位置にあるすべての先祖のセットを返す関数です。 Microsoft SQL Server Analysis Services では、1 つのメンバーに対する複数の親がサポートされていないので、Analysis Services から返されるセットのメンバーは常に 1 つだけになります。
構文
Level syntax
Ancestors(Member_Expression, Level_Expression)
Numeric syntax
Ancestors(Member_Expression, Distance)
引数
Member_Expression
メンバーを 1 つ返す有効な多次元式 (MDX) 式です。Level_Expression
レベルを返す有効な多次元式 (MDX) 式です。Distance
指定されたメンバーからの距離を指定する有効な数値式です。
説明
Ancestors 関数を使用する際には、MDX メンバー式を指定してから、そのメンバーの先祖のレベルを示す MDX 式か、そのメンバーより何レベル上かを示す数値式のいずれかを指定します。 Ancestors 関数は、この情報を使用して、そのレベルのメンバーのセット (1 つのメンバーで構成されるセット) を返します。
注 |
---|
先祖セットではなく先祖メンバーを返すには、Ancestor 関数を使用します。 |
レベル式が指定されている場合、Ancestors 関数は、指定されたレベルにある、指定されたメンバーのすべての先祖のセットを返します。 指定されたメンバーが指定されたレベルと同じ階層内に存在しない場合、関数はエラーを返します。
距離が指定されている場合、Ancestors 関数は、メンバー式で指定された階層内で指定されたステップ数だけ上に位置するすべてのメンバーのセットを返します。 メンバーには、属性階層、ユーザー定義階層、または場合によっては親子階層のメンバーを指定できます。 数値として 1 が指定された場合は親レベルにあるメンバーのセットを返し、数値として 2 が指定された場合は親より 1 つ上のレベルにあるメンバーのセット (存在する場合) を返します。 数値として 0 が指定された場合はそのメンバー自体のみを含むセットを返します。
注 |
---|
この形式の Ancestors 関数は、親メンバーのレベルが不明な場合や、名前で指定できない場合に使用できます。 |
使用例
次の例では、Ancestors 関数を使用して、メンバー、メンバーの親、およびその上の先祖の Internet Sales Amount メジャーを返しています。 この例では、レベル式を使用して、返すレベルを指定します。 このレベルは、メンバー式で指定されたメンバーと同じ階層にあります。
SELECT {
Ancestors([Product].[Product Categories].[Product].[Mountain-100 Silver, 38],[Product].[Product Categories].[Category]),
Ancestors([Product].[Product Categories].[Product].[Mountain-100 Silver, 38],[Product].[Product Categories].[Subcategory]),
Ancestors([Product].[Product Categories].[Product].[Mountain-100 Silver, 38],[Product].[Product Categories].[Product])
} ON 0,
[Measures].[Internet Sales Amount] ON 1
FROM [Adventure Works]
次の例では、Ancestors 関数を使用して、メンバー、メンバーの親、およびその上の先祖の Internet Sales Amount メジャーを返します。 この例では、数値式を使用して、返すレベルを指定します。 このレベルは、メンバー式で指定されたメンバーと同じ階層にあります。
SELECT {
Ancestors(
[Product].[Product Categories].[Product].[Mountain-100 Silver, 38],2
),
Ancestors(
[Product].[Product Categories].[Product].[Mountain-100 Silver, 38],1
),
Ancestors(
[Product].[Product Categories].[Product].[Mountain-100 Silver, 38],0
)
} ON 0,
[Measures].[Internet Sales Amount] ON 1
FROM [Adventure Works]
次の例では、Ancestors 関数を使用して、属性階層のメンバーの親の Internet Sales Amount メジャーを返します。 この例では、数値式を使用して、返すレベルを指定します。 メンバー式内のメンバーは属性階層のメンバーであるため、その親は [All] レベルです。
SELECT {
Ancestors(
[Product].[Product].[Mountain-100 Silver, 38],1
)
} ON 0,
[Measures].[Internet Sales Amount] ON 1
FROM [Adventure Works]