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

Детализирует углублением элементы набора на одном уровне под самым низким уровнем, представленным в наборе.

Указание уровня детализации необязательно, но если задать уровень, можно использовать или level expression, или index level. Эти аргументы являются взаимоисключающими. Наконец, при наличии в запросе вычисляемых элементов можно указать аргумент для включения их в набор строк.

Синтаксис

DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])

Аргументы

  • Set_Expression
    Допустимое многомерное выражение, возвращающее набор.

  • Level_Expression
    (Необязательно.) Выражение MDX, которое явно определяет уровень, на котором следует выполнять детализацию углублением. Если выражение уровня указано, пропустите аргумент индекса ниже.

  • Index
    (Необязательно.) Допустимое числовое выражение, указывающее количество иерархий, которые необходимо детализировать углублением в наборе. Вместо Level_Expression для явного определения уровня, на котором следует выполнять детализацию углублением, можно использовать уровень индекса.

  • Include_Calc_Members
    (Необязательно.) Флажок, указывающий, следует ли включать вычисленные элементы и должны ли они существовать на уровне детализации углублением.

Замечания

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

При наличии многоуровневой иерархической структуры данных можно явно выбрать уровень детализации углублением. Существует два взаимоисключающих способа указать уровень. Первый подход — это задать аргумент level_expression с помощью выражения MDX, которое возвращает уровень. Другой подход — указать аргумент index, используя числовое выражение, которое определяет уровень по числу.

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

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

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

Запрос свойства MdpropMdxDrillFunctions в XMLA позволяет проверить уровень поддержки, обеспечиваемой сервером для функций детализации. Подробные сведения см. в разделе Поддерживаемые свойства XML для аналитики (XMLA).

Примеры

Вы можете ознакомиться со следующими примерами в окне запроса MDX в SSMS, используя куб Adventure Works.

Пример 1 — демонстрирует минимальный синтаксис

В первом примере показан минимальный синтаксис для DrilldownLevel. Единственным обязательным аргументом является выражение набора. Обратите внимание, что при запуске запроса вы получаете родительские объекты [All Categories] и элементы следующего уровня ниже: [Accessories], [Bikes] и т. д. Хотя этот пример прост, он демонстрирует основную цель функции DrilldownLevel, которая выполняет детализацию углублением до следующего уровня вниз.

SELECT DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]}}) ON COLUMNS
FROM [Adventure Works]

Пример 2 — другой синтаксис, использующий явный уровень индекса

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

SELECT
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS
FROM [Adventure Works]

Обратите внимание, что набор результатов идентичен предыдущему запросу. Обычно указывать уровень индекса не требуется за исключением случаев, когда нужно выполнить детализацию углублением, чтобы начать на определенном уровне. Перезапустите предыдущий запрос, указав значение индекса 1, а затем 2. Со значением индекса, равным 1, детализация углублением начнется на втором уровне в иерархии. Со значением индекса, равным 2, детализация углублением начнется на третьем уровне — наивысшем в этом примере. Чем выше числовое выражение, тем выше уровень индекса.

Пример 3 — демонстрация выражения уровня

В следующем примере показывается, как использовать выражение уровня. При условии, что набор представляет иерархическую структуру, использование выражения уровня позволяет выбрать уровень иерархии, чтобы начать детализацию углублением.

В этом примере уровень детализации углублением начинается в [City], в качестве второго аргумента функции DrilldownLevel. Когда вы запустите этот запрос, детализация углублением начнется на уровне [City] (для штатов Вашингтон и Орегон). В каждой функции DrilldownLevel набор результатов также включает элементы на следующем уровне, [Postal codes].

SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
   NON EMPTY (
   DRILLDOWNLEVEL(
       {[Customer].[Customer Geography].[Country].[United States],
           DESCENDANTS(
             { [Customer].[Customer Geography].[State-Province].[Washington],  
               [Customer].[Customer Geography].[State-Province].[Oregon]}, 
               [Customer].[Customer Geography].[City]) } ,
[Customer].[Customer Geography].[City] ) )  ON ROWS
FROM [Adventure Works]

Пример 4 — включение вычисляемых элементов

В последнем примере показан вычисленный элемент, который появляется в нижней части набора результатов при добавлении флажка include_calculated_members. Обратите внимание, чтобы флажок указан как четвертый параметр.

Этот пример работает, так как вычисленный элемент находится на том же уровне, что и не вычисленные элементы. Вычисленный элемент [West Coast] состоит из элементов из [United States] и из всех элементов на один уровень ниже, чем [United States].

WITH MEMBER 
[Customer].[Customer Geography].[Country].&[United States].[West Coast] AS
[Customer].[Customer Geography].[State-Province].&[OR]&[US] +
[Customer].[Customer Geography].[State-Province].&[WA]&[US] +
[Customer].[Customer Geography].[State-Province].&[CA]&[US]
SELECT [Measures].[Internet Order Count] ON 0,
DRILLDOWNLEVEL([Customer].[Customer Geography].[Country].&[United States],,,INCLUDE_CALC_MEMBERS) on 1
FROM [Adventure Works]

Если вы только снимете флажок и перезапустите запрос, то получите те же результаты, кроме вычисленного элемента, [West Coast].

См. также

Справочник

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