Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les axes de requête spécifient les bords d’un ensemble de cellules retournés par une instruction SELECT MDX (Multidimensional Expressions). La spécification des bords d’un ensemble de cellules vous permet de restreindre les données retournées visibles par le client.
Pour spécifier des axes de requête, vous utilisez <SELECT query axis clause> pour affecter un jeu à un axe de requête particulier. Chaque <SELECT query axis clause> valeur définit un axe de requête. Le nombre d’axes dans le jeu de données est égal au nombre de <SELECT query axis clause> valeurs de l’instruction SELECT.
Syntaxe de l’axe des requêtes
La syntaxe suivante montre la syntaxe pour :<SELECT query axis clause>
<SELECT query axis clause> ::=
[ NON EMPTY ] Set_Expression [ <SELECT dimension property list clause> ] [<HAVING clause>]
ON {
Integer_Expression |
AXIS( Integer_Expression ) |
{COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS}
}
Chaque axe de requête a un nombre : zéro (0) pour l’axe x, 1 pour l’axe y, 2 pour l’axe z, et ainsi de suite. Dans la syntaxe du <SELECT query axis clause>, la Integer_Expression valeur spécifie le numéro d’axe. Une requête MDX peut prendre en charge jusqu’à 128 axes spécifiés, mais très peu de requêtes MDX utilisent plus de 5 axes. Pour les 5 premiers axes, les alias COLUMNS, ROWS, PAGES, SECTIONS et CHAPTERS peuvent être utilisés à la place.
Une requête MDX ne peut pas ignorer les axes de requête. Autrement dit, une requête qui inclut un ou plusieurs axes de requête ne doit pas exclure les axes numérotés ou intermédiaires inférieurs. Par exemple, une requête ne peut pas avoir d’axe ROWS sans axe COLUMNS ou avoir des axes COLUMNS et PAGES sans axe ROWS.
Toutefois, vous pouvez spécifier une clause SELECT sans axes (autrement dit, une clause SELECT vide). Dans ce cas, toutes les dimensions sont des dimensions de segment, et la requête MDX sélectionne une cellule.
Dans la syntaxe de l’axe de requête affichée précédemment, chaque valeur Set_Expression spécifie l’ensemble qui définit son contenu. Pour plus d’informations sur les ensembles, consultez Travail avec les membres, les tuples et les ensembles (MDX).
Exemples
L’instruction SELECT simple suivante retourne la mesure Internet Sales Amount sur l’axe Colonnes et utilise la fonction MDX MEMBERS pour renvoyer tous les membres de la hiérarchie Calendrier sur la dimension Date sur l’axe Lignes :
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
{[Date].[Calendar].MEMBERS} ON ROWS
FROM [Adventure Works]
Les deux requêtes suivantes retournent exactement les mêmes résultats, mais illustrent l’utilisation de nombres d’axe plutôt que d’alias :
SELECT {[Measures].[Internet Sales Amount]} ON 0,
{[Date].[Calendar].MEMBERS} ON 1
FROM [Adventure Works]
SELECT {[Measures].[Internet Sales Amount]} ON AXIS(0),
{[Date].[Calendar].MEMBERS} ON AXIS(1)
FROM [Adventure Works]
Le mot clé NON EMPTY, utilisé avant la définition d'ensemble, est un moyen simple d'éliminer les tuples vides d'un axe. Par exemple, dans les exemples que nous avons vus jusqu’à présent, il n’existe aucune donnée dans le cube depuis août 2004. Pour supprimer toutes les lignes du cellset qui n'ont aucune donnée dans une colonne, ajoutez simplement "NON EMPTY" avant la définition de l’axe Lignes comme suit :
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
NON EMPTY
{[Date].[Calendar].MEMBERS} ON ROWS
FROM [Adventure Works]
NON EMPTY peut être utilisé sur tous les axes d’une requête. Comparez les résultats des deux requêtes suivantes, dont la première n’utilise pas NON EMPTY et la seconde sur les deux axes :
SELECT {[Measures].[Internet Sales Amount]}
* [Promotion].[Promotion].[Promotion].MEMBERS
ON COLUMNS,
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS
FROM [Adventure Works]
WHERE([Product].[Subcategory].&[19])
SELECT NON EMPTY {[Measures].[Internet Sales Amount]}
* [Promotion].[Promotion].[Promotion].MEMBERS
ON COLUMNS,
NON EMPTY
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS
FROM [Adventure Works]
WHERE([Product].[Subcategory].&[19])
La clause HAVING peut être utilisée pour filtrer le contenu d’un axe en fonction d’un critère spécifique ; il est moins flexible que d’autres méthodes qui peuvent obtenir les mêmes résultats, tels que la fonction FILTER, mais il est plus simple d’utiliser. Voici un exemple qui retourne uniquement les dates où Internet Sales Amount est supérieur à 15 000 $ :
SELECT {[Measures].[Internet Sales Amount]}
ON COLUMNS,
NON EMPTY
{[Date].[Calendar].[Date].MEMBERS}
HAVING [Measures].[Internet Sales Amount]>15000
ON ROWS
FROM [Adventure Works]