Поделиться через


Ancestor (многомерные выражения)

Изменения: 17 июля 2006 г.

Функция, возвращающая предок заданного элемента на заданном уровне или заданном расстоянии от элемента.

Синтаксис

Level syntax
Ancestor(Member_Expression, Level_Expression)

Numeric syntax
Ancestor(Member_Expression, Distance)

Аргументы

  • Member_Expression
    Допустимое многомерное выражение, возвращающее элемент.
  • Level_Expression
    Допустимое многомерное выражение, возвращающее уровень.
  • Distance
    Допустимое числовое выражение, указывающее расстояние от заданного элемента.

Замечания

С помощью функции Ancestor можно задать функцию с многомерным выражением элемента, а затем задать многомерное выражение уровня, являющегося предком элемента, или числовое выражение, представляющее собой число уровней над данным элементом. На основе этих сведений функция Ancestors возвращает предок элемента на данном уровне.

ms145616.note(ru-ru,SQL.90).gifПримечание.
Для возвращения набора предков вместо предка элемента используется функция Ancestors (многомерные выражения).

Если выражение уровня определено, функция Ancestor возвращает предок заданного элемента на заданном уровне. Если заданный элемент не входит в ту же иерархию, что и заданный уровень, функция вернет ошибку.

Если задано расстояние, функция Ancestor возвращает предок указанного элемента, который находится выше по иерархии на заданном расстоянии. Элемент может быть определен как элемент иерархии атрибута, пользовательской иерархии или при некоторых обстоятельствах иерархии типа «родители-потомки». Число 1 возвращает родительский объект элемента, а число 2 возвращает прародительский объект элемента (если такой существует). Число 0 вернет сам элемент.

ms145616.note(ru-ru,SQL.90).gifПримечание.
В таком виде функция Ancestor используется тогда, когда уровень родительского элемента неизвестен или не может быть назван.

Примеры

В следующем примере используется выражение уровня и возвращается Internet Sales Amount для каждой административно-территориальной единицы (State-Province) Австралии (Australia), возвращается также процентное соотношение относительно общего значения Internet Sales Amount в Австралии (Australia).

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]

В следующем примере используется числовое выражение уровня и возвращается Internet Sales Amount для каждой административно-территориальной единицы (State-Province) Австралии (Australia), возвращается также процентное соотношение относительно общего значения 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]

См. также

Справочник

Справочник по функциям многомерных выражений (многомерные выражения)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Измененное содержимое
  • Обновлены синтаксис и аргументы для облегчения понимания.
  • Добавлены обновленные примеры.