DrilldownLevel (MDX)

Aprofunda os membros de um conjunto até um nível abaixo do nível mais baixo representado no conjunto.

Especificar o nível para aprofundar é opcional, mas se você definir o nível, pode usar tanto uma expressão de nível quanto o nível de índice. Esses argumentos são mutuamente exclusivos. Por fim, se os membros calculados estiverem presentes na consulta, você pode especificar um argumento para incluí-los no conjunto de linhas.

Sintaxe

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

Argumentos

Set_expression
Uma expressão válida de Expressões Multidimensionais (MDX) que retorna um conjunto.

Level_Expression
(Opcional). Uma expressão MDX que identifica explicitamente o nível em que se deve aprofundar. Se você especificar uma expressão de nível, pule o argumento índice abaixo.

Índice
(Opcional). Uma expressão numérica válida que especifica o número hierárquico a ser aprofundado dentro do conjunto. Você pode usar o nível de índice em vez de Level_Expression para identificar explicitamente o nível no qual você deve aprofundar.

Include_Calc_Members
(Opcional). Uma bandeira indicando se devem incluir membros calculados, caso existam, no nível de drill down.

Remarks

A função DrilldownLevel retorna um conjunto de membros filhos em uma ordem hierárquica, baseada nos membros incluídos no conjunto especificado. A ordem é preservada entre os membros originais no conjunto especificado, exceto que todos os membros filhos incluídos no conjunto de resultados da função são imediatamente incluídos sob seu membro pai.

Dada uma estrutura de dados hierárquica em múltiplos níveis, você pode escolher explicitamente um nível para aprofundar. Existem duas maneiras mutuamente exclusivas de especificar o nível. A primeira abordagem é definir o argumento level_expression usando uma expressão MDX que retorna o nível. Uma abordagem alternativa é especificar o argumento do índice , usando uma expressão numérica que especifique o nível por número.

Se uma expressão de nível for especificada, a função constrói um conjunto em ordem hierárquica ao recuperar os filhos apenas dos membros que estão no nível especificado. Se uma expressão de nível for especificada e não houver nenhum membro nesse nível, a expressão de nível é ignorada.

Se um valor de índice for especificado, a função constrói um conjunto em ordem hierárquica ao recuperar os filhos apenas dos membros que estão no nível seguinte mais baixo da hierarquia referenciado no conjunto especificado, dado um índice baseado em zero.

Se nem uma expressão de nível nem um valor de índice forem especificados, a função constrói um conjunto em ordem hierárquica ao recuperar os filhos apenas daqueles membros que estão no nível mais baixo da primeira dimensão referenciada no conjunto especificado.

Consultar a propriedade XMLA MdpropMdxDrillFunctions permite verificar o nível de suporte que o servidor oferece para as funções de perfuração; veja Propriedades XMLA Suportadas (XMLA) para detalhes.

Exemplos

Você pode tentar os seguintes exemplos na janela de consulta MDX no SSMS, usando o cubo Adventure Works.

Exemplo 1 - demonstra sintaxe mínima

O primeiro exemplo mostra a sintaxe mínima para DrilldownLevel. O único argumento necessário é uma expressão conjunta. Perceba que, ao rodar essa consulta, você abaixa o [Todas as Categorias] e os membros do próximo nível: [Acessórios], [Bicicletas] e assim por diante. Embora este exemplo seja simples, ele demonstra o propósito básico da função DrilldownLevel , que é aprofundar para o próximo nível abaixo.

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

Exemplo 2 - sintaxe alternativa usando um nível de índice explícito

Este exemplo demonstra a sintaxe alternativa, onde o nível do índice é especificado por meio de uma expressão numérica. Nesse caso, o nível do índice é 0. Para um índice baseado em zero, esse é o nível mais baixo.

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

Note que o conjunto de resultados é idêntico ao da consulta anterior. Como regra geral, definir o nível do índice é desnecessário, a menos que você queira que o detalhe comece em um nível específico. Execute novamente a consulta anterior, definindo o valor do índice para 1, e depois para 2. Com o valor do índice definido em 1, você vê que o detalhamento começa no segundo nível da hierarquia. Com o valor do índice definido em 2, a análise começa no terceiro nível, o nível mais alto neste exemplo. Quanto maior a expressão numérica, maior o nível do índice.

Exemplo 3 - demonstra uma expressão de nível

O próximo exemplo mostra como usar uma expressão de nível. Dado um conjunto que representa uma estrutura hierárquica, usar uma expressão de nível permite que você escolha um nível na hierarquia para iniciar a análise.

Neste exemplo, o nível de drill down começa em [City], como o segundo argumento da função DrilldownLevel . Quando você executa essa consulta, a análise começa no nível da [cidade], para os estados de Washington e Oregon. De acordo com a função DrilldownLevel , o conjunto de resultados também inclui membros no nível seguinte abaixo, [CEPs].

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]  

Exemplo 4 - incluindo membros calculados

O último exemplo mostra um membro calculado, que aparece na parte inferior do conjunto de resultados quando você adiciona a flag de include_calculated_members . Note que a bandeira é especificada como o quarto parâmetro.

Este exemplo funciona porque o membro calculado está no mesmo nível dos membros não calculados. O membro calculado [Costa Oeste] é composto por membros de [Estados Unidos], mais todos os membros um nível abaixo dos [Estados Unidos].

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]  

Se você remover apenas a flag e reexecutar a consulta, obterá os mesmos resultados, menos o membro calculado, [West Coast].