Partager via


DrilldownLevel (MDX)

Explore vers le bas la hiérarchie des membres d'un jeu jusqu'au niveau au-dessous du niveau le plus bas représenté dans le jeu.

Vous n'êtes pas obligé de définir le niveau à partir duquel effectuer l'exploration vers le bas. Si vous voulez le définir, vous pouvez le faire en utilisant un argument level expression ou index level. Ces arguments s'excluent mutuellement. Enfin, si des membres calculés sont présents dans la requête, vous pouvez spécifier un argument pour les inclure dans l'ensemble de lignes.

Syntaxe

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

Arguments

  • Set_Expression
    Expression MDX (Multidimensional Expressions) valide qui retourne un jeu.

  • Level_Expression
    (Facultatif). Une expression MDX qui identifie explicitement le niveau à explorer. Si vous spécifiez une expression de niveau, ignorez l'argument d'index du niveau inférieur.

  • Index
    (Facultatif). Expression numérique valide qui spécifie le nombre de hiérarchies pour lesquelles procéder à une extraction vers le bas au sein du jeu. Vous pouvez utiliser le niveau d'index au lieu de Level_Expression pour identifier explicitement le niveau d'exploration.

  • Include_Calc_Members
    (Facultatif). Un indicateur permet d'inclure les membres calculés, s'ils existent, au niveau de l'exploration.

Notes

Selon les membres inclus dans le jeu spécifié, la fonction DrilldownLevel retourne un jeu de membres enfants dans un ordre hiérarchique. L'ordre est conservé parmi les membres d'origine dans le jeu spécifié, à ceci près que tous les membres enfants inclus dans le jeu de résultats de la fonction sont placés immédiatement sous leur membre parent.

Dans une structure de données hiérarchique à plusieurs niveaux, vous pouvez explicitement choisir un niveau pour l'exploration. Il existe deux méthodes (qui s'excluent) pour indiquer ce niveau. La première approche consiste à définir l'argument level_expression à l'aide d'une expression MDX qui retourne le niveau. Une autre approche consiste à indiquer l'argument index, en utilisant une expression numérique qui indique le niveau par un chiffre.

Si une expression de niveau est spécifiée, la fonction construit un jeu dans un ordre hiérarchique en récupérant uniquement les enfants des membres situés au niveau spécifié. Si une expression de niveau est indiquée et qu'il n'existe pas de membre à ce niveau, l'expression de niveau est ignorée.

Si vous indiquez une valeur d'index, la fonction génère un jeu dans un ordre hiérarchique en récupérant uniquement les enfants des membres situés au niveau suivant le plus bas de la hiérarchie référencée dans le jeu spécifié ; elle se fonde pour cela sur un index de base zéro.

Si aucune expression de niveau ou valeur d'index n'est spécifiée, la fonction génère un jeu dans l'ordre hiérarchique en extrayant uniquement les enfants des membres situés au niveau le plus bas de la première dimension référencée dans le jeu spécifié.

L'interrogation de la propriété XMLA MdpropMdxDrillFunctions vous permet de vérifier le niveau de support que le serveur fournit pour les fonctions d'extraction ; consultez Propriétés XMLA prises en charge (XMLA) pour plus de détails.

Exemples

Vous pouvez essayer les exemples suivants dans la fenêtre de requête MDX en SSMS, à l'aide du cube Adventure Works.

Exemple 1 – décrit une syntaxe minimale

Le premier exemple montre la syntaxe minimale pour DrilldownLevel. Le seul argument requis est une expression set. Quand vous exécutez cette requête, vous obtenez le parent [All Categories] et les membres du niveau inférieur suivant : [Accessories], [Bikes], etc. Bien que cet exemple soit simple, il montre l'objectif de base de la fonction DrilldownLevel, qui est de descendre jusqu'au niveau inférieur.

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

Exemple 2 – autre syntaxe utilisant un niveau d'index explicite

Cet exemple montre l'autre syntaxe, dans laquelle le niveau d'index est spécifié via une expression numérique. Dans ce cas, le niveau d'index est égal à 0. Pour un index de base zéro, il s'agit du niveau le plus bas.

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

Remarquez que le jeu de résultats est identique à celui de la requête précédente. En règle générale, la définition du niveau d'index n'est pas nécessaire sauf si vous voulez que l'exploration commence à un niveau spécifique. Réexécutez la requête précédente, en définissant la valeur d'index sur 1, puis sur 2. Avec une valeur d'index définie sur 1, vous constatez que l'exploration commence au deuxième niveau de la hiérarchie. Avec une valeur d'index définie sur 2, l'exploration commence au troisième niveau, qui est le niveau le plus élevé dans cet exemple. Plus l'expression numérique est élevée, plus le niveau d'index l'est aussi.

Exemple 3 – décrit une expression de niveau

L'exemple suivant montre comment utiliser une expression de niveau. Étant donné un jeu qui représente une structure hiérarchique, l'utilisation d'une expression de niveau vous permet de choisir un niveau dans la hiérarchie auquel commencer l'exploration.

Dans cet exemple, le niveau d'exploration commence à [City], qui est le second argument de la fonction DrilldownLevel. Quand vous exécutez cette requête, l'exploration commence au niveau [City], pour les états Washington et Oregon. En raison de la fonction DrilldownLevel, le jeu de résultats comprend également les membres du niveau inférieur suivant, [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]

Exemple 4 – ajout de membres calculés

Ce dernier exemple montre un membre calculé, qui s'affiche en bas du jeu de résultats quand vous ajoutez l'indicateur include_calculated_members. Remarquez que l'indicateur est spécifié comme un quatrième paramètre.

Cet exemple fonctionne, car le membre calculé est au même niveau que les membres non-calculés. Le membre calculé [West Coast] se compose des membres de [United States], et de tous les membres situés un niveau au-dessous de [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]

Si vous supprimez uniquement l'indicateur et réexécutez la requête, vous obtenez les mêmes résultats, moins le membre calculé [West Coast].

Voir aussi

Référence

Guide de référence des fonctions MDX (MDX)