次の方法で共有


Ancestors (MDX)

指定メンバの先祖のうち、指定されたレベルまたはメンバから指定された距離だけ離れた位置にあるすべての先祖のセットを返す関数です。Microsoft SQL Server Analysis Services では、1 つのメンバに対する複数の親がサポートされていないので、返されるセットのメンバは常に 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]