DrilldownLevel (MDX)

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

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

Syntax

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

Arguments

Set_Expression
Допустимое выражение многомерных выражений (MDX), которое возвращает множество.

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

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

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

Remarks

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

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

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

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

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

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

Примеры

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

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

Первый пример показывает минимальный синтаксис для DrilldownLevel. Единственный требуемый аргумент — это выражение множества. Обратите внимание, что при запуске этого запроса вы получаете родительские [Все категории] и участников следующего уровня: [Аксессуары], [Велосипеды] и так далее. Хотя этот пример прост, он демонстрирует основную функцию функции 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 — демонстрирует выражение уровня

Следующий пример показывает, как использовать выражение уровня. Имея множество, представляющее иерархическую структуру, использование выражения уровня позволяет выбрать уровень в иерархии для начала исследования.

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

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] состоит из членов из [США] плюс всех членов, находящихся на один уровень ниже [США].

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].