Spécification du contenu d'un axe de secteur (MDX)

L'axe de secteur filtre les données retournées par l'instruction SELECT MDX (Multidimensional Expressions), en restreignant les données retournées de telle sorte que seules les données communes aux membres spécifiés soient retournées. Il peut être vu comme un axe invisible supplémentaire d'une requête. Il est défini dans la clause WHERE de l'instruction SELECT de MDX.

Syntaxe de l'axe de secteur

Pour spécifier de façon explicite un axe de secteur, utilisez la clause <SELECT slicer axis clause> dans MDX, comme dans la syntaxe suivante :

<SELECT slicer axis clause> ::=  WHERE Set_Expression

Dans la syntaxe d'axe de secteur indiquée, Set_Expression peut prendre soit une expression de tuple, qui est traitée comme un jeu pour les besoins d'évaluation de la clause, soit une expression d'ensemble. Si une expression d'ensemble est spécifiée, MDX tentera d'évaluer le jeu, en agrégeant les cellules du résultat dans chaque tuple du jeu. En d'autres termes, MDX tentera d'utiliser la fonction Aggregate sur le jeu, agrégeant chaque mesure par sa fonction d'agrégation associée. En outre, si l'expression d'ensemble ne peut pas être exprimée comme une jointure croisée des membres d'une hiérarchie d'attributs, MDX traite les cellules exclues de l'expression d'ensemble pour le découpage comme NULL, pour les besoins de l'évaluation.

Important

Contrairement à la clause WHERE de SQL, la clause WHERE d'une instruction SELECT MDX ne filtre jamais directement ce qui est retourné sur l'axe des lignes d'une requête. Pour filtrer ce qui s'affiche sur l'axe des lignes ou des colonnes d'une requête, vous pouvez utiliser diverses fonctions MDX, telles que FILTER, NONEMPTY et TOPCOUNT.

Axe de secteur implicite

Si un membre d'une hiérarchie du cube n'est pas explicitement inclus dans un axe de requête, le membre par défaut de cette hiérarchie est implicitement inclus dans l'axe de secteur. Pour plus d'informations sur les membres par défaut, consultez Définition d'un membre par défaut.

Exemples

La requête suivante n'inclut pas de clause WHERE et retourne la valeur de la mesure Montant des ventes sur Internet pour toutes les années civiles :

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]

L'ajout d'une clause WHERE de la façon suivante :

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States])

ne modifie pas ce qui est retourné sur les lignes ou les colonnes de la requête, mais plutôt les valeurs retournées pour chaque cellule. Dans cet exemple, la requête est découpée de façon à retourner la valeur de Montant des ventes sur Internet pour toutes les années civiles, mais uniquement pour les clients résidant aux États-Unis. Il est possible d'ajouter plusieurs membres de différentes hiérarchies à la clause WHERE. La requête suivante montre la valeur de Montant des ventes sur Internet pour toutes les années civiles pour les clients résidant aux États-Unis et ayant acheté des produits appartenant à la catégorie Vélos :

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[1])

Si vous souhaitez utiliser plusieurs membres d'une même hiérarchie, vous devez inclure un ensemble dans la clause WHERE. Par exemple, la requête suivante montre la valeur de Montant des ventes sur Internet pour toutes les années civiles, pour les clients ayant acheté des produits appartenant à la catégorie Vélos, et qui résident soit aux États-Unis, soit au Royaume-Uni :

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE(
{[Customer].[Customer Geography].[Country].&[United States]
, [Customer].[Customer Geography].[Country].&[United Kingdom]}
, [Product].[Category].&[1])

Comme indiqué ci-dessus, l'utilisation d'un ensemble dans la clause WHERE agrègera implicitement les valeurs de tous les membres de l'ensemble. Dans ce cas, la requête affiche les valeurs agrégées pour les États-Unis et le Royaume-Uni dans chaque cellule.