Descendants (многомерные выражения)
Возвращает набор потомков элемента на указанном уровне или расстоянии, по желанию включая или исключая потомков на других уровнях.
Синтаксис
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
Допустимое многомерное выражение, возвращающее элемент.
Set_Expression
Допустимое многомерное выражение, возвращающее набор.
Level_Expression
Допустимое многомерное выражение, возвращающее уровень.
Расстояние
Допустимое числовое выражение, указывающее расстояние от заданного элемента.
Desc_Flag
Допустимая строка выражения, указывающая описание флага, коррелирующего с возможными наборами потомков.
Замечания
Если задан уровень, функция Потомков возвращает набор, содержащий потомков указанного элемента или членов указанного набора на указанном уровне, при необходимости измененный флагом, указанным в Desc_Flag.
Если задано расстояние , функция Потомков возвращает набор, содержащий потомков указанного элемента или членов указанного набора, которые являются указанным числом уровней в иерархии указанного элемента, при необходимости измененным флагом, указанным в Desc_Flag. Обычно эта функция используется с аргументом Distance для распределения неоднородных иерархий. Если заданное расстояние равно нулю, то функция возвращает набор, состоящий только из заданного элемента или заданного набора.
Если задано выражение набора, функция Потомков разрешается по отдельности для каждого члена набора, а набор создается снова. Другими словами, синтаксис, используемый для функции Потомков, функционально эквивалентен функции создания многомерных выражений.
Если уровень или расстояние не задано, значение по умолчанию для уровня, используемого функцией, определяется вызовом функции Level (<<Member>>). Уровень) для указанного элемента (если указан элемент) или путем вызова функции Level для каждого элемента указанного набора (если задан набор). Если выражение уровня, расстояние и флаги не определены, то функция будет выполнена только в случае использования следующего синтаксиса:
Descendants
(
Member_Expression ,
Member_Expression.Level ,
SELF_BEFORE_AFTER
)
Если уровень определен, а описание флага не определено, то функция будет выполнена только в случае использования следующего синтаксиса:
Descendants
(
Member_Expression ,
Level_Expression,
SELF
)
Изменяя значение аргумента описания флага, можно включать или исключать на указанном уровне или расстоянии потомки, находящиеся до указанного уровня или расстояния (вплоть до конечных узлов) и после, а также конечные потомки независимо от указанного уровня или расстояния. В следующей таблице описаны флаги, разрешенные в аргументе Desc_Flag .
Флаг | Description |
---|---|
САМО- | Возвращает только потомки заданного уровня или на заданном расстоянии. Функция включает в себя заданный элемент, если заданный уровень является уровнем заданного элемента. |
ПОСЛЕ | Возвращает потомки со всех уровней, подчиненных уровню аргумента расстояния. |
ДО | Возвращает потомки элементов со всех уровней между заданным элементом и заданным уровнем или на заданном расстоянии. Включает в себя заданный элемент, но не включает элементы заданного уровня или расстояния. |
BEFORE_AND_AFTER | Возвращает потомки элементов со всех уровней, зависящих от заданного уровня или заданного элемента. Включает в себя заданный элемент, но не включает элементы заданного уровня или расстояния. |
SELF_AND_AFTER | Возвращает потомки элементов заданного уровня или расстояния и все уровни, зависящие от заданного уровня или расстояния. |
SELF_AND_BEFORE | Возвращает потомки заданного уровня или расстояния и со всех уровней между заданным элементом и заданным уровнем или на заданном расстоянии, включая заданный элемент. |
SELF_BEFORE_AFTER | Возвращает потомки со всех уровней, зависящих от уровня заданного элемента, и включает заданный элемент. |
LEAVES | Возвращает конечные потомки элементов между заданным элементом и заданным уровнем или на заданном расстоянии. |
Примеры
В следующем примере возвращается заданный элемент (США) и элементы между заданным элементом и элементами уровня, предшествующего заданному (City). В примере возвращаются сам заданный элемент (США) и элементы уровня 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]
В следующем примере возвращается ежедневное среднее значение Measures.[Gross Profit Margin]
меры, вычисляемое по дням каждого месяца в 2003 финансовом году, из куба Adventure Works . Функция Потомков возвращает набор дней, определенных из текущего [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])
В следующем примере используется выражение уровня и возвращается мера Internet Sales Amount для каждой административно-территориальной единицы (мера State-Province) Австралии (Australia), возвращается также процентное соотношение относительно общего значения Internet Sales Amount для каждой территории (State-Province). В этом примере функция Item используется для извлечения первого кортежа из набора, возвращаемого функцией "Предки ".
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]
См. также
Справочник по функции многомерных выражений (многомерные выражения)