DrilldownLevel (MDX)
Detalhe os membros de um conjunto para um nível abaixo do menor nível representado no conjunto.
Especificar o nível do drill down é opcional, mas, se você decidir especificá-lo, será possível usar uma level expression ou o index level. Os argumentos são mutuamente exclusivos. Por fim, se houver membros calculados na consulta, será possível especificar um argumento para inclui-los no conjunto de linhas.
Sintaxe
DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])
Argumentos
Set_Expression
Uma linguagem MDX válida que retorna um conjunto.Level_Expression
(Opcional). Uma expressão MDX que identifica explicitamente o nível que será detalhado. Se você especificar uma expressão de nível, ignore o argumento de índice, abaixo.Index
(Opcional). Uma expressão numérica válida que especifica o número de hierarquia para uma busca detalhada dentro do conjunto. Você pode usar o nível de índice em vez de Level_Expression para identificar explicitamente em qual nível detalhar.Include_Calc_Members
(Opcional). Um sinalizador indicando se membros calculados serão incluídos ou não, caso existam, no nível da busca detalhada.
Comentários
A função DrilldownLevel retorna um conjunto de membros filho em ordem hierárquica com base nos membros incluídos no conjunto especificado. A ordem é preservada entre os membros originais no conjunto especificado, a não ser que todos os membros filho incluídos no conjunto de resultados da função sejam imediatamente incluídos com seu membro pai.
Dada uma estrutura de dados hierárquica de vários níveis, você pode escolher explicitamente um nível para detalhar. Há dois modos mutuamente exclusivos de especificar o nível. A primeira abordagem é definir o argumento level_expression usando uma expressão MDX que retorna o nível, enquanto uma abordagem alternativa é especificar o argumento index usando uma expressão numérica que especifica o nível por número.
Se uma expressão de nível não for especificada, a função construirá um conjunto em ordem hierárquica recuperando os filhos daqueles membros que estão no nível especificado. Se uma expressão de nível for especificada e não houver nenhum membro no nível, a expressão será ignorada.
Se um valor de índice for especificado, a função construirá um conjunto em ordem hierárquica recuperando os filhos daqueles membros que estão no nível mais baixo da hierarquia referenciada no conjunto especificado, dado um índice que começa por zero.
Se não for especificada uma expressão de nível ou um valor de índice, a função construirá um conjunto em ordem hierárquica recuperando os filhos apenas dos membros que estão no nível mais baixo da primeira dimensão referenciada no conjunto especificado.
A consulta à propriedade XMLA MdpropMdxDrillFunctions permite verificar o nível de suporte que o servidor oferece para as funções de detalhamento; consulte Propriedades XMLA suportadas (XMLA) para obter detalhes.
Exemplos
Você pode experimentar os seguintes exemplos na janela de consulta MDX no SSMS, usando o cubo do Adventure Works.
Exemplo 1 – demonstra a sintaxe mínima
O primeiro exemplo mostra a sintaxe mínima para DrilldownLevel. O único argumento obrigatório é uma expressão de conjunto. Observe que, ao executar esta consulta, você obterá o pai [Todas as Categorias] e os membros do próximo nível inferior: [Acessórios], [Bicicletas] e assim por diante. Embora este exemplo seja simples, ele demonstra a finalidade básica da função DrilldownLevel, detalhada para o próximo nível inferior.
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 de índice é especificado por uma expressão numérica. Neste caso, o nível do índice é 0. Para um índice iniciado por zero, este é o nível mais baixo.
SELECT
DRILLDOWNLEVEL({[Product].[Product Categories]} * {[Sales Territory].[Sales Territory]},,0) ON COLUMNS
FROM [Adventure Works]
Observe que o conjunto resultante é idêntico à consulta anterior. Como regra geral, não é necessário definir o nível do índice exceto se desejar que a busca detalhada inicie em um nível específico. Execute novamente as consultas anteriores, definindo o valor do índice para 1 e depois para 2. Como valor do índice definido para 1, você verá a busca detalhada iniciando no segundo nível da hierarquia. Como valor do índice definido para 2, a busca detalhada inicia no terceiro nível da hierarquia, o 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 exemplo a seguir 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 escolher um nível na hierarquia para iniciar a busca detalhada.
Neste exemplo, o nível da busca detalhada inicia em [Cidade], como o segundo argumento da função DrilldownLevel. Ao executar esta consulta, a busca detalhada inicia no nível [Cidade], para os estados Washington e Oregon. De acordo com a função DrilldownLevel, o resultado também inclui membros no próximo nível inferior, [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 ao adicionar o sinalizador include_calculated_members. Observe que o sinalizador é especificado como o quarto parâmetro.
Este exemplo funciona porque o membro calculado está no mesmo nível que os membros não calculados. O membro calculado [Costa Oeste] é composto por membros de [Estados Unidos], além de todos os membros um nível abaixo de [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 o sinalizador e reexecutar a consulta, obterá os mesmos resultados, menos o membro calculado, [Costa Oeste].