DrilldownLevel (многомерные выражения)
Детализирует углублением элементы набора на одном уровне под самым низким уровнем, представленным в наборе.
Указание уровня, на котором требуется детализация, является необязательным, но если задать уровень, можно использовать выражение уровня или уровень индекса. Эти аргументы являются взаимоисключающими. Наконец, при наличии в запросе вычисляемых элементов можно указать аргумент для включения их в набор строк.
Синтаксис
DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])
Аргументы
Set_Expression
Допустимое многомерное выражение, возвращающее набор.
Level_Expression
(Необязательно). Выражение MDX, которое явно определяет уровень, на котором следует выполнять детализацию углублением. Если выражение уровня указано, пропустите аргумент индекса ниже.
Index
(Необязательно). Допустимое числовое выражение, указывающее количество иерархий, которые необходимо детализировать углублением в наборе. Вместо Level_Expression для явного определения уровня, на котором следует выполнять детализацию углублением, можно использовать уровень индекса.
Include_Calc_Members
(Необязательно). Флажок, указывающий, следует ли включать вычисленные элементы и должны ли они существовать на уровне детализации углублением.
Замечания
Функция DrilldownLevel возвращает набор дочерних элементов в иерархическом порядке на основе элементов, включенных в указанный набор. Порядок следования исходных элементов указанного набора сохраняется, однако все дочерние элементы, входящие в результирующий набор функции, следуют непосредственно за своим родительским элементом.
При наличии многоуровневой иерархической структуры данных можно явно выбрать уровень детализации углублением. Существует два взаимоисключающих способа указать уровень. Первый подход заключается в том, чтобы задать аргумент level_expression с помощью выражения многомерных выражений, возвращающего уровень, альтернативный подход — указать аргумент индекса , используя числовое выражение, указывающее уровень по числу.
Если выражение уровня указано, функция создает набор в иерархическом порядке, извлекая потомков только элементов указанного уровня. Если указано выражение уровня и на этом уровне отсутствует элемент, выражение уровня игнорируется.
Если указано значение индекса, функция создает набор в иерархическом порядке, получая потомков только тех элементов, которые находятся на следующем наиболее низком уровне указанной иерархии (на которую ссылается указанный набор) на основе начинающегося с нуля индекса.
Если ни выражение уровня, ни значение индекса не указаны, функция создает набор в иерархическом порядке, извлекая потомков только тех элементов, которые находятся на самом низком уровне первого измерения, на которое ссылается указанный набор.
Запрос свойства 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. Демонстрирует выражение уровня
В следующем примере показывается, как использовать выражение уровня. При условии, что набор представляет иерархическую структуру, использование выражения уровня позволяет выбрать уровень иерархии, чтобы начать детализацию углублением.
В этом примере уровень детализации начинается с [City], как второй аргумент функции DrilldownLevel . Когда вы запустите этот запрос, детализация углублением начнется на уровне [City] для штатов Вашингтон и Орегон. Для функции 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].
См. также
Справочник по функции многомерных выражений (многомерные выражения)