Académique Documents
Professionnel Documents
Culture Documents
1. Introduction a MDX
(Multi-Dimensional eXtensions) Origine de MDX
pour l’OLAP MDX versus SQL
Rappel des catégories d’opérations OLAP
2. Syntaxe de base de MDX
(7.2) Structure générale d’une requête MDX
Spécification de Membres, Tuples et Sets dans MDX
Spécification d’un axe dans MDX (simple et en énumération)
Bernard ESPINASSE Spécification de filtres (Slice) dans MDX : clause WHERE
Professeur à Aix-Marseille Université (AMU) 3. Membres et tuples dans MDX
Ecole Polytechnique Universitaire de Marseille Emboitement (Nest) de tuples dans MDX
Membres calculés dans MDX, Membres NULL et Cellules EMPTY
Décembre 2015
4. Fonctions sur les membres et ensembles (Sets) de MDX
Fonctions sur les membres et les dimensions
Opérations sur les ensembles (Sets) dans MDX
• Introduction à MDX Fonctions sur les Sets (Head, Tail, Subset, Topcount, Order, Filter) et (CrossJoin)
• Syntaxe de base de MDX 5. Expressions avancées de MDX
• Membres et tuples dans MDX Analyse comparative : fonction ParallelPeriod
• Fonctions sur les membres et les ensembles Calcul cumulatif : fonction Descendants
Expressions conditionnelles : IFF
(Sets) de MDX
• Expressions avancées de MDX 6. Résumé des commandes MDX
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 1 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 2
Ouvrages :
Vaisman A., Zimányi E., « Data Warehouse Systems: Design and
Implementation », Springer-Verlag, 2014, ISBN 978-3-642-54654-9.
M. Whitehorn, R. Zare, M. Pasumansky, « Fast track to MDX », Springer,
2006.
Golfarelli M., Rizzi S., « Data Warehouse Design : Modern Principles and
Methodologies », McGrawHill, 2009.
…
Cours :
Cours de K. Aouiche, Université de Lyon 2, 2009. Origine de MDX
Cours de A. Vaisman A., E. Zimányi, Université Libre de Bruxelles, 2014. MDX versus SQL
Cours de P. Marcel, Université de Tours, 2012.
Un exemple d’entrepôt
Cours de M. Herschel, Herschel, Université Paris Sud, 2012.
… Rappel des catégories d’opérations OLAP
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 3 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 4
Les requêtes en SQL sont similaires aux
En utilisant MDX, les utilisateurs peuvent requêtes en MDX. Les requêtes en SQL
MDX, acronyme de Multi Dimensional eXpression, est créer
un des analyses de données avancées
langage de permettent
La syntaxe de MDX ressemble d'extraire
à celle des données
de SQL de mots
par ses clé SELECT,
qui leur permettent de découvrir des tables, tandis que les requêtes en MDX
requêtes OLAP pour les bases de données multidimensionnelles
tendances et des relations dans les
FROM, WHERE, mais leurs sémantiques
permettent sont
d'extraire des différentes
données de :
inventé en 1997 par Mosha Pasumansky au sein de Microsoft, donnéesversion
qu'ils analysent. SQL construit des vues
cubes. relationnelles
commerciale Microsoft OLAP Services 7.0 & Analysis Services en1998, MDX construits des vues multidimensionnelles des données
dernière spécification OLE DB for OLAP (ODBO) en 1999 Analogies entre termes multidimensionnels (MDX) et relationnels
MDX est fait pour naviguer dans les bases multidimensionnelles, et définir des (SQL) :
requêtes sur tous leurs objets (dimensions, hiérarchies, niveaux, membres et
cellules) Multidimensionnel (MDX) Relationnel (SQL)
Une requête MDX retourne un rapport à plusieurs dimensions
Les tables dans une base de données Cube Table
consistant en un ou plusieurs tableaux 2D relationnelle sont similaires aux cubes Colonne (chaine de caractère ou
dans une base de données Niveau (Level) valeur numérique)
Utilisé par de nombreux outils de BI commerciaux oumultidimensionnelle.
non Les tables ont des
colonnes qui représentent des attributs plusieurs colonnes liées ou une
Langage très complexe et puissant générant des requêtes plus
de données, tandis que les cubes ont des
Dimension table de dimension
compacte que les requêtes SQL équivalentes axes qui représentent des dimensions. Mesure (Measure) Colonne (discrète ou numérique)
Membre de dimension Valeur dans une colonne et une ligne
(Dimension member) particulière de la table
WHERE, AXIS WHERE, GROUP BY, HAVING
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 5 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 6
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 7 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 8
MDX, acronyme de Multi Dimensional eXpression, est un langage de La syntaxe de MDX ressemble à celle de SQL par ses mots clé SELECT,
requêtes OLAP pour les bases de données multidimensionnelles FROM, WHERE, mais leurs sémantiques sont différentes :
inventé en 1997 par Mosha Pasumansky au sein de Microsoft, version SQL construit des vues relationnelles
commerciale Microsoft OLAP Services 7.0 & Analysis Services en1998, MDX construits des vues multidimensionnelles des données
dernière spécification OLE DB for OLAP (ODBO) en 1999 Analogies entre termes multidimensionnels (MDX) et relationnels
MDX est fait pour naviguer dans les bases multidimensionnelles, et définir des (SQL) :
requêtes sur tous leurs objets (dimensions, hiérarchies, niveaux, membres et
cellules) Multidimensionnel (MDX) Relationnel (SQL)
Une requête MDX retourne un rapport à plusieurs dimensions Cube Table
consistant en un ou plusieurs tableaux 2D Colonne (chaine de caractère ou
Niveau (Level) valeur numérique)
Utilisé par de nombreux outils de BI commerciaux ou non
plusieurs colonnes liées ou une
Langage très complexe et puissant générant des requêtes plus Dimension table de dimension
compacte que les requêtes SQL équivalentes
Mesure (Measure) Colonne (discrète ou numérique)
Membre de dimension Valeur dans une colonne et une ligne
(Dimension member) particulière de la table
WHERE, AXIS WHERE, GROUP BY, HAVING
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 5 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 6
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 7 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 8
MDX, acronyme de Multi Dimensional eXpression, est un langage de La syntaxe de MDX ressemble à celle de SQL par ses mots clé SELECT,
requêtes OLAP pour les bases de données multidimensionnelles FROM, WHERE, mais leurs sémantiques sont différentes :
inventé en 1997 par Mosha Pasumansky au sein de Microsoft, version SQL construit des vues relationnelles
commerciale Microsoft OLAP Services 7.0 & Analysis Services en1998, MDX construits des vues multidimensionnelles des données
dernière spécification OLE DB for OLAP (ODBO) en 1999 Analogies entre termes multidimensionnels (MDX) et relationnels
MDX est fait pour naviguer dans les bases multidimensionnelles, et définir des (SQL) :
requêtes sur tous leurs objets (dimensions, hiérarchies, niveaux, membres et
cellules) Multidimensionnel (MDX) Relationnel (SQL)
Une requête MDX retourne un rapport à plusieurs dimensions Cube Table
consistant en un ou plusieurs tableaux 2D Colonne (chaine de caractère ou
Niveau (Level) valeur numérique)
Utilisé par de nombreux outils de BI commerciaux ou non
plusieurs colonnes liées ou une
Langage très complexe et puissant générant des requêtes plus Dimension table de dimension
compacte que les requêtes SQL équivalentes
Mesure (Measure) Colonne (discrète ou numérique)
Membre de dimension Valeur dans une colonne et une ligne
(Dimension member) particulière de la table
WHERE, AXIS WHERE, GROUP BY, HAVING
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 5 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 6
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 9 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 10
Ce cube « sale » a : (inspired from Vaisman & Zimányi) 3 catégories d’opérations élémentaires :
3 dimensions : Time, Customer, Product Restructuration : concerne la représentation, permet un changement de points de vue selon
1 measure : SalesAmount différentes dimensions : opérations liées à la structure, manipulation et visualisation du cube :
Rotate/pivot
Köln
Customers
(City) Berlin Switch
24
Lyon
33
Paris
12
25
28
21
20
23
14
24
Time 21
25
14
18
(Quarter) 10
33
Q2 25
granularité des données :
35
27 33
18
18
14 35
Q
26 11
35
14
23
17
roll-up,
12 30
drill-down
30 20
3
14 35 12
18
20 32
32 33
Q4
47
31
10
Ensembliste : concerne l’extraction et l’OLTP classique :
Beverage 31
Product
Produce
slice, dice
Condiment
(Category)
Seafood
selection, projection et jointure (drill-across)
Ce cube « sale » a : (inspired from Vaisman & Zimányi) 3 catégories d’opérations élémentaires :
3 dimensions : Time, Customer, Product Restructuration : concerne la représentation, permet un changement de points de vue selon
1 measure : SalesAmount différentes dimensions : opérations liées à la structure, manipulation et visualisation du cube :
Rotate/pivot
Köln
Customers
(City) Berlin Switch
24
Lyon
33
Paris
12
25
28
21
20
23
14
24
Time 21
25
14
18
(Quarter) 10
33
Q2 25
granularité des données :
35
27 33
18
18
14 35
Q
26 11
35
14
23
17
roll-up,
12 30
drill-down
30 20
3
14 35 12
18
20 32
32 33
Q4
47
31
10
Ensembliste : concerne l’extraction et l’OLTP classique :
Beverage 31
Product
Produce
slice, dice
Condiment
(Category)
Seafood
selection, projection et jointure (drill-across)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 9 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 10
Ce cube « sale » a : (inspired from Vaisman & Zimányi) 3 catégories d’opérations élémentaires :
3 dimensions : Time, Customer, Product Restructuration : concerne la représentation, permet un changement de points de vue selon
1 measure : SalesAmount différentes dimensions : opérations liées à la structure, manipulation et visualisation du cube :
Rotate/pivot
Köln
Customers
(City) Berlin Switch
24
Lyon
33
Paris
12
25
28
21
20
23
14
24
Time 21
25
14
18
(Quarter) 10
33
Q2 25
granularité des données :
35
27 33
18
18
14 35
Q
26 11
35
14
23
17
roll-up,
12 30
drill-down
30 20
3
14 35 12
18
20 32
32 33
Q4
47
31
10
Ensembliste : concerne l’extraction et l’OLTP classique :
Beverage 31
Product
Produce
slice, dice
Condiment
(Category)
Seafood
selection, projection et jointure (drill-across)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 9 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 10
Ce cube « sale » a : (inspired from Vaisman & Zimányi) 3 catégories d’opérations élémentaires :
3 dimensions : Time, Customer, Product Restructuration : concerne la représentation, permet un changement de points de vue selon
1 measure : SalesAmount différentes dimensions : opérations liées à la structure, manipulation et visualisation du cube :
Rotate/pivot
Köln
Customers
(City) Berlin Switch
24
Lyon
33
Paris
12
25
28
21
20
23
14
24
Time 21
25
14
18
(Quarter) 10
33
Q2 25
granularité des données :
35
27 33
18
18
14 35
Q
26 11
35
14
23
17
roll-up,
12 30
drill-down
30 20
3
14 35 12
18
20 32
32 33
Q4
47
31
10
Ensembliste : concerne l’extraction et l’OLTP classique :
Beverage 31
Product
Produce
slice, dice
Condiment
(Category)
Seafood
selection, projection et jointure (drill-across)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 9 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 10
Ce cube « sale » a : (inspired from Vaisman & Zimányi) 3 catégories d’opérations élémentaires :
3 dimensions : Time, Customer, Product Restructuration : concerne la représentation, permet un changement de points de vue selon
1 measure : SalesAmount différentes dimensions : opérations liées à la structure, manipulation et visualisation du cube :
Rotate/pivot
Köln
Customers
(City) Berlin Switch
24
Lyon
33
Paris
12
25
28
21
20
23
14
24
Time 21
25
14
18
(Quarter) 10
33
Q2 25
granularité des données :
35
27 33
18
18
14 35
Q
26 11
35
14
23
17
roll-up,
12 30
drill-down
30 20
3
14 35 12
18
20 32
32 33
Q4
47
31
10
Ensembliste : concerne l’extraction et l’OLTP classique :
Beverage 31
Product
Produce
slice, dice
Condiment
(Category)
Seafood
selection, projection et jointure (drill-across)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 9 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 10
Ce cube « sale » a : (inspired from Vaisman & Zimányi) 3 catégories d’opérations élémentaires :
3 dimensions : Time, Customer, Product Restructuration : concerne la représentation, permet un changement de points de vue selon
1 measure : SalesAmount différentes dimensions : opérations liées à la structure, manipulation et visualisation du cube :
Rotate/pivot
Köln
Customers
(City) Berlin Switch
24
Lyon
33
Paris
12
25
28
21
20
23
14
24
Time 21
25
14
18
(Quarter) 10
33
Q2 25
granularité des données :
35
27 33
18
18
14 35
Q
26 11
35
14
23
17
roll-up,
12 30
drill-down
30 20
3
14 35 12
18
20 32
32 33
Q4
47
31
10
Ensembliste : concerne l’extraction et l’OLTP classique :
Beverage 31
Product
Produce
slice, dice
Condiment
(Category)
Seafood
selection, projection et jointure (drill-across)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 13 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultat
Chaque dimension du résultat :
Si plusieurs cubes nécessaires, cela implique une jointure
est associée à un rôle correspondant à sa représentation dans le tableau multidimensionnelle : chaque paire de cubes doit alors posséder au
retourné par la requête MDX : moins une dimension concordante.
Ex : ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS,
ON CHAPTERS WHERE - Restriction sur le/s cube/s de départ
Restrictions sur le/s cube/s de départ de la clause FROM.
sur un ou plusieurs niveaux de la hiérarchie :
Spécification des restrictions par une liste de noeuds de la
Ex1 : {Paris, Berlin} de la dimension Lieu, niveau Ville hiérarchie d’une dimension nommée « slicer-dimension »
Ex2 : {[1er trimestre], [2nd trimestre].CHILDREN} de la
dimension Temps, niveaux trimestre et mois. REMARQUE : En MDX les mesures sont des éléments d’une
dimension spéciale nommée « Measures » (ces mesures peuvent
être utilisées aussi dans les clauses WHERE et FROM).
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
SELECT [<specification d’un axe>
[, <spécification d’un axe>...]]
FROM [<spécification d’un cube>]
[WHERE [<spécification d’un filtre
(slicer)>]]
Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
Spécification de Membres, Tuples et Sets dans MDX résultat de la requête
( ) : Sélection de tuples dans la clause WHERE
Spécification d’un axe dans MDX (simple et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
Spécification de filtres (Slicers) dans MDX : clause WHERE d‘interprétation non numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 13 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultat
Chaque dimension du résultat :
Si plusieurs cubes nécessaires, cela implique une jointure
est associée à un rôle correspondant à sa représentation dans le tableau multidimensionnelle : chaque paire de cubes doit alors posséder au
retourné par la requête MDX : moins une dimension concordante.
Ex : ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS,
ON CHAPTERS WHERE - Restriction sur le/s cube/s de départ
Restrictions sur le/s cube/s de départ de la clause FROM.
sur un ou plusieurs niveaux de la hiérarchie :
Spécification des restrictions par une liste de noeuds de la
Ex1 : {Paris, Berlin} de la dimension Lieu, niveau Ville hiérarchie d’une dimension nommée « slicer-dimension »
Ex2 : {[1er trimestre], [2nd trimestre].CHILDREN} de la
dimension Temps, niveaux trimestre et mois. REMARQUE : En MDX les mesures sont des éléments d’une
dimension spéciale nommée « Measures » (ces mesures peuvent
être utilisées aussi dans les clauses WHERE et FROM).
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
Voici un exemple de requête MDX qui utilise la structure générale SELECT [<specification d’un axe>
SELECT [Axes] ON [Axis] FROM [Cube]: [, <spécification d’un axe>...]]
SELECT [Measures].[Montant] ON COLUMNS, FROM [<spécification d’un cube>]
[Dim Produit].[Catégorie].[Catégorie].Members ON ROWS [WHERE [<spécification d’un filtre
(slicer)>]]
FROM [Cube de Ventes]
Dans cet exemple, la requête demande les montants de vente pour Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
chaque catégorie de produit. La clause SELECT spécifie que les
Spécification de doivent
Membres,être Tuples et Setssur
dans MDXdes colonnes, tandis résultat de la requête
montants de vente affichés l'axe
( ) : Sélection de tuples dans la clause WHERE
queles membresd’un
Spécification de laaxe
dimension
dans MDX de catégorie
(simple de produit doivent être
et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
affichés sur l'axe des lignes. La clause FROM spécifie
Spécification de filtres (Slicers) dans MDX : clause WHERE
que la requête
d‘interprétation non numérique de chiffres.
doit être exécutée à partir du cube OLAP de ventes. REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 13 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultat
Chaque dimension du résultat :
Si plusieurs cubes nécessaires, cela implique une jointure
est associée à un rôle correspondant à sa représentation dans le tableau multidimensionnelle : chaque paire de cubes doit alors posséder au
retourné par la requête MDX : moins une dimension concordante.
Ex : ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS,
ON CHAPTERS WHERE - Restriction sur le/s cube/s de départ
Restrictions sur le/s cube/s de départ de la clause FROM.
sur un ou plusieurs niveaux de la hiérarchie :
Spécification des restrictions par une liste de noeuds de la
Ex1 : {Paris, Berlin} de la dimension Lieu, niveau Ville hiérarchie d’une dimension nommée « slicer-dimension »
Ex2 : {[1er trimestre], [2nd trimestre].CHILDREN} de la
dimension Temps, niveaux trimestre et mois. REMARQUE : En MDX les mesures sont des éléments d’une
dimension spéciale nommée « Measures » (ces mesures peuvent
être utilisées aussi dans les clauses WHERE et FROM).
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
SELECT [<specification d’un axe>
[, <spécification d’un axe>...]]
FROM [<spécification d’un cube>]
[WHERE [<spécification d’un filtre
(slicer)>]]
Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
Spécification de Membres, Tuples et Sets dans MDX résultat de la requête
( ) : Sélection de tuples dans la clause WHERE
Spécification d’un axe dans MDX (simple et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
Spécification de filtres (Slicers) dans MDX : clause WHERE d‘interprétation non numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 13 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultat
Chaque dimension du résultat :
Si plusieurs cubes nécessaires, cela implique une jointure
est associée à un rôle correspondant à sa représentation dans le tableau multidimensionnelle : chaque paire de cubes doit alors posséder au
retourné par la requête MDX : moins une dimension concordante.
Ex : ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS,
ON CHAPTERS WHERE - Restriction sur le/s cube/s de départ
Restrictions sur le/s cube/s de départ de la clause FROM.
sur un ou plusieurs niveaux de la hiérarchie :
Spécification des restrictions par une liste de noeuds de la
Ex1 : {Paris, Berlin} de la dimension Lieu, niveau Ville hiérarchie d’une dimension nommée « slicer-dimension »
Ex2 : {[1er trimestre], [2nd trimestre].CHILDREN} de la
dimension Temps, niveaux trimestre et mois. REMARQUE : En MDX les mesures sont des éléments d’une
dimension spéciale nommée « Measures » (ces mesures peuvent
être utilisées aussi dans les clauses WHERE et FROM).
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
SELECT [<specification d’un axe>
[, <spécification d’un axe>...]]
FROM [<spécification d’un cube>]
[WHERE [<spécification d’un filtre
(slicer)>]]
Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
Spécification de Membres, Tuples et Sets dans MDX résultat de la requête
( ) : Sélection de tuples dans la clause WHERE
Spécification d’un axe dans MDX (simple et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
Spécification de filtres (Slicers) dans MDX : clause WHERE d‘interprétation non numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 13 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultat
Chaque dimension du résultat :
Si plusieurs cubes nécessaires, cela implique une jointure
est associée à un rôle correspondant à sa représentation dans le tableau multidimensionnelle : chaque paire de cubes doit alors posséder au
retourné par la requête MDX : moins une dimension concordante.
Ex : ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS,
ON CHAPTERS WHERE - Restriction sur le/s cube/s de départ
Restrictions sur le/s cube/s de départ de la clause FROM.
sur un ou plusieurs niveaux de la hiérarchie :
Spécification des restrictions par une liste de noeuds de la
Ex1 : {Paris, Berlin} de la dimension Lieu, niveau Ville hiérarchie d’une dimension nommée « slicer-dimension »
Ex2 : {[1er trimestre], [2nd trimestre].CHILDREN} de la
dimension Temps, niveaux trimestre et mois. REMARQUE : En MDX les mesures sont des éléments d’une
dimension spéciale nommée « Measures » (ces mesures peuvent
être utilisées aussi dans les clauses WHERE et FROM).
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
SELECT [<specification d’un axe>
[, <spécification d’un axe>...]]
FROM [<spécification d’un cube>]
[WHERE [<spécification d’un filtre
(slicer)>]]
Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
Spécification de Membres, Tuples et Sets dans MDX résultat de la requête
( ) : Sélection de tuples dans la clause WHERE
Spécification d’un axe dans MDX (simple et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
Spécification de filtres (Slicers) dans MDX : clause WHERE d‘interprétation non numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 13 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
Ensemble de cubes nécessaires à la création du cube résultat
Chaque dimension du résultat :
Si plusieurs cubes nécessaires, cela implique une jointure
est associée à un rôle correspondant à sa représentation dans le tableau multidimensionnelle : chaque paire de cubes doit alors posséder au
retourné par la requête MDX : moins une dimension concordante.
Ex : ON COLUMNS, ON ROWS, ON PAGES, ON SECTIONS,
ON CHAPTERS WHERE - Restriction sur le/s cube/s de départ
Restrictions sur le/s cube/s de départ de la clause FROM.
sur un ou plusieurs niveaux de la hiérarchie :
Spécification des restrictions par une liste de noeuds de la
Ex1 : {Paris, Berlin} de la dimension Lieu, niveau Ville hiérarchie d’une dimension nommée « slicer-dimension »
Ex2 : {[1er trimestre], [2nd trimestre].CHILDREN} de la
dimension Temps, niveaux trimestre et mois. REMARQUE : En MDX les mesures sont des éléments d’une
dimension spéciale nommée « Measures » (ces mesures peuvent
être utilisées aussi dans les clauses WHERE et FROM).
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
SELECT [<specification d’un axe>
[, <spécification d’un axe>...]]
FROM [<spécification d’un cube>]
[WHERE [<spécification d’un filtre
(slicer)>]]
Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
Spécification de Membres, Tuples et Sets dans MDX résultat de la requête
( ) : Sélection de tuples dans la clause WHERE
Spécification d’un axe dans MDX (simple et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
Spécification de filtres (Slicers) dans MDX : clause WHERE d‘interprétation non numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16
Syntaxe générale d’une requête MDX (forme de Backus-Naur):
SELECT [<specification d’un axe>
[, <spécification d’un axe>...]]
FROM [<spécification d’un cube>]
[WHERE [<spécification d’un filtre
(slicer)>]]
Parenthèses en MDX :
Structure générale d’une requête MDX { } : Ensemble des éléments servant à la création d’une dimension du
Spécification de Membres, Tuples et Sets dans MDX résultat de la requête
( ) : Sélection de tuples dans la clause WHERE
Spécification d’un axe dans MDX (simple et en énumération)
[ ] : Représentation d’espaces, de caractères spéciaux et
Spécification de filtres (Slicers) dans MDX : clause WHERE d‘interprétation non numérique de chiffres.
REMARQUE: Dans MDX les [ ] sont optionnels, excepté pour un nom avec
Insertion de commentaires en MDX
des caractères « espace » , avec des chiffres, ou qui sont des mots-clés MDX,
quand ils sont requis.
WHERE [Région].[Europe]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
[2012] l’intersection de ses membres :
[Time].[2012] SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods]
Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres du niveau immédiatement en
nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dans des requêtes simples : SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
COLUMNS
SELECT [Time].[2012] ON COLUMNS FROM [Sales] SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
[2012] l’intersection de ses membres :
[Time].[2012] SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods]
Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres du niveau immédiatement en
nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dans des requêtes simples : SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
COLUMNS
SELECT [Time].[2012] ON COLUMNS FROM [Sales] SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
•[Measures].[Unit Sales] : c'est le membre qui l’intersection de ses membres :
[2012]
[Time].[2012] spécifie la mesure que l'on souhaite récupérer SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
dans la cellule. Ici la mesure est "Unit Sales" qui
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] représente les ventes en unités. SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods] •[Product].[All Products].[Food].[Baked Goods] :
c'est le Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres dumembre qui spécifie la
niveau immédiatement en position dans les
dimensions "Product" du cube. Il sélectionne tous nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dansles SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
desproduits de la catégorie
requêtes simples : "Food" et de la sous-
COLUMNS
SELECT [Time].[2012] ON COLUMNS catégorie
FROM"Baked
[Sales]Goods".
SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
[2012] l’intersection de ses membres :
[Time].[2012] SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods]
Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres du niveau immédiatement en
nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dans des requêtes simples : SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
COLUMNS
SELECT [Time].[2012] ON COLUMNS FROM [Sales] SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
[2012] l’intersection de ses membres :
[Time].[2012] SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods]
Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres du niveau immédiatement en
nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dans des requêtes simples : SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
COLUMNS
SELECT [Time].[2012] ON COLUMNS FROM [Sales] SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
[2012] l’intersection de ses membres :
[Time].[2012] SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods]
Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres du niveau immédiatement en
nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dans des requêtes simples : SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
COLUMNS
SELECT [Time].[2012] ON COLUMNS FROM [Sales] SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Un membre = une instance d'un niveau d’une dimension, Un tuple = suite de membres entre parenthèses séparés par une virgule:
Est généralement spécifié entre crochets [...] Ex : ( [Time].[2012] , [Product].[Food] )
Ex : [Food], [Drink] = membres de la dimension "Products" de niveau 1 on peut omettre les parenthèses si on a un tuple avec un seul membre.
Les membres = items accessibles dans les hiérarchies pouvant être
référencés de différentes façons : Un tuple permet d’identifier une ou plusieurs cellules dans un cube situées à
[2012] l’intersection de ses membres :
[Time].[2012] SELECT ([Time].[2012], [Product].[Food]) ON COLUMNS
[Product].[Food] [Product].[Food]. FROM [Sales]
[Baked Goods] SELECT ([Product].[All Products].[Food].[Baked Goods], [2012]) ON COLUMNS
[Product].[All Products].[Food]. FROM [Sales]
[Baked Goods]
Dans un tuple, les mesures sont traitées comme une dimension particulière,
Les enfants d'un membre = membres du niveau immédiatement en
nommée [Measures] :
dessous de celui-ci
Ex. d’utilisations de membres dans des requêtes simples : SELECT ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]) ON
COLUMNS
SELECT [Time].[2012] ON COLUMNS FROM [Sales] SELECT
FROM [Sales]
[Product].[Food] ON COLUMNS FROM [Sales]
SELECT [Product].[Food].[Baked Goods] ON COLUMNS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 17 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 18
Un set = un ensemble ordonné de tuples définit sur une même Ex2 : un set qui comporte 2 mesures et 2 membres différents de la
dimension même dimension sur 2 niveaux différents ([Food] et [Baked Goods]) :
Un set commence par une accolade "{", dans laquelle sont énumérés les tuples SELECT
séparés par des virgules, et se termine par une accolade appariée "}" { ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS
SELECT FROM [Sales]
{
([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), Ex3 : un set qui a la même mesure et 2 membres contigus
([Measures].[Store Sales], [Product].[All Products].[Food].[Baked différents
Goods]) ([Food] et [Drink]) :
} SELECT
{ ([Measures].[Unit Sales], [Product].[Food]),
ON COLUMNS
([Measures].[Unit Sales], [Product].[Drink]) } ON
FROM [Sales]
COLUMNS
ce set contient : FROM [Sales]
2 mesures différentes (Units sales et Store Sales) et Ex4 : un set qui ne contient qu'un seul membre ([2012]) :
le même membre (Baked Goods) : SELECT
{ ([2012]) } ON COLUMNS ou { [2012] } ON
COLUMNS
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 19 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 20
FROM [Sales]
Plusieurs spécifications possibles pour un même axe en MDX : Une façon simple est de définir un axe est de présenter sur l’axe tous les
un set suivi du mot clef « ON » suivi d'un nom d'axe spécifique membres d’une dimension :
fait référence à un numéro d'ordre s'il y a plus de 2 axes de restitution, ou
<dimension name>.MEMBERS
simplement aux noms d'axes explicites « COLUMNS » et « ROWS »
Si l’on veut voir apparaître tous les membres de la dimension à un certain
Ex: unités vendues "[Measures].[Unit Sales]" par an en 2012 et 2013 pour les
produits "Drink" et "Food" :
niveau de cette dimension :
SELECT <dimension name>.<level name>.MEMBERS
{ ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Unit Sales], [Product].[Drink]) } ON AXIS(0), par exemple la requête :
{ ([Time].[2012]), ([Time].[2013]) } ON AXIS(1) SELECT
FROM [Sales]
Years.MEMBERS ON COLUMNS,
ou
SELECT Régions.Continent.MEMBERS ON
{ ([Measures].[Unit Sales], [Product].[Food]),
ROWS FROM Sales
([Measures].[Unit Sales], [Product].[Drink]) } ON COLUMNS,
{ ([Time].[2012]), ([Time].[2013]) } ON ROWS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 21 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 22
Cette requête MDX : Certaines dimensions ou niveaux ont plus de 1000 membres !
SELECT
On peut souhaiter ne pas considérer tous les membres de la dimension ou
Years.MEMBERS ON COLUMNS,
Régions.Continent.MEMBERS ON du niveau, aussi dans MDX on peut spécifier une liste de membres à
ROWS FROM Sales considérer : { dim.member1, dim.member2, … , dim.membern}
Son résultat est une table avec 2 axes : Ex : On considére seulement les ventes sur les 2 années 2012 et 2013:
2010 2011 2013 2014 SELECT
N. America 120,000 200,000 400,000 600,000 { Years.[2012], Years.[2013] } ON COLUMNS,
S. America - 10,000 30,000 70,000
Europe 55,000 95,000 160,000 310,000 Regions.Continent.MEMBERS ON
Asia 30,000 80,000 220,000 200,000 ROWS FROM Sales
l’axe horizontal est (i.e. COLUMNS) contient tous les membres de la Remarques :
dimension ‘Years’ (ici 2010, 2011, 2013, 2014) il est recommandé de choisir des noms de membres entre crochet [ ] avec
l’axe vertical est (i.e. ROWS) contient tous les membres du niveau aucun symbole blanc, point, …
‘Continent’ de la dimension ‘Regions’ (ici N & S America, Europe, Asia) ici [2012] et [2013] sont des membres et pas des valeurs !!!
REMARQUE : ici la mesure considérée (auxquelles correspondent les valeurs du ici la mesure (measure) pas explicitement définie => mesure par défaut
résultat) n’est pas précisée, c’est une mesure par défaut (default measure) : quand une dimension a le niveau ‘All’, le premier membre du premier
‘sales’ (valeurs de ventes) niveau sera choisi par défaut
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 23 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 24
Plusieurs spécifications possibles pour un même axe en MDX : Une façon simple est de définir un axe est de présenter sur l’axe tous les
un set suivi du mot clef « ON » suivi d'un nom d'axe spécifique membres d’une dimension :
fait référence à un numéro d'ordre s'il y a plus de 2 axes de restitution, ou
<dimension name>.MEMBERS
simplement aux noms d'axes explicites « COLUMNS » et « ROWS »
Si l’on veut voir apparaître tous les membres de la dimension à un certain
Ex: unités vendues "[Measures].[Unit Sales]" par an en 2012 et 2013 pour les
produits "Drink" et "Food" :
niveau de cette dimension :
SELECT <dimension name>.<level name>.MEMBERS
{ ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Unit Sales], [Product].[Drink]) } ON AXIS(0), par exemple la requête :
{ ([Time].[2012]), ([Time].[2013]) } ON AXIS(1) SELECT
FROM [Sales]
Years.MEMBERS ON COLUMNS,
ou
SELECT Régions.Continent.MEMBERS ON
{ ([Measures].[Unit Sales], [Product].[Food]),
ROWS FROM Sales
([Measures].[Unit Sales], [Product].[Drink]) } ON COLUMNS,
{ ([Time].[2012]), ([Time].[2013]) } ON ROWS
FROM [Sales]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 21 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 22
Cette requête MDX : Certaines dimensions ou niveaux ont plus de 1000 membres !
SELECT
On peut souhaiter ne pas considérer tous les membres de la dimension ou
Years.MEMBERS ON COLUMNS,
Régions.Continent.MEMBERS ON du niveau, aussi dans MDX on peut spécifier une liste de membres à
ROWS FROM Sales considérer : { dim.member1, dim.member2, … , dim.membern}
Son résultat est une table avec 2 axes : Ex : On considére seulement les ventes sur les 2 années 2012 et 2013:
2010 2011 2013 2014 SELECT
N. America 120,000 200,000 400,000 600,000 { Years.[2012], Years.[2013] } ON COLUMNS,
S. America - 10,000 30,000 70,000
Europe 55,000 95,000 160,000 310,000 Regions.Continent.MEMBERS ON
Asia 30,000 80,000 220,000 200,000 ROWS FROM Sales
l’axe horizontal est (i.e. COLUMNS) contient tous les membres de la Remarques :
dimension ‘Years’ (ici 2010, 2011, 2013, 2014) il est recommandé de choisir des noms de membres entre crochet [ ] avec
l’axe vertical est (i.e. ROWS) contient tous les membres du niveau aucun symbole blanc, point, …
‘Continent’ de la dimension ‘Regions’ (ici N & S America, Europe, Asia) ici [2012] et [2013] sont des membres et pas des valeurs !!!
REMARQUE : ici la mesure considérée (auxquelles correspondent les valeurs du ici la mesure (measure) pas explicitement définie => mesure par défaut
résultat) n’est pas précisée, c’est une mesure par défaut (default measure) : quand une dimension a le niveau ‘All’, le premier membre du premier
‘sales’ (valeurs de ventes) niveau sera choisi par défaut
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 23 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 24
Plusieurs spécifications possibles pour un même axe en MDX : Une façon simple est de définir un axe est de présenter sur l’axe tous les
un set suivi du mot clef « ON » suivi d'un nom d'axe spécifique membres d’une dimension :
fait référence à un numéro d'ordre s'il y a plus de 2 axes de restitution, ou
<dimension name>.MEMBERS
simplement aux noms d'axes explicites « COLUMNS » et « ROWS »
Si l’on veut voir apparaître tous les membres de la dimension à un certain
Ex: unités vendues "[Measures].[Unit Sales]" par an en 2012 et 2013 pour les
produits "Drink" et "Food" :
niveau de cette dimension :
SELECT <dimension name>.<level name>.MEMBERS
{ ([Measures].[Unit Sales], [Product].[Food]),
([Measures].[Unit Sales], [Product].[Drink]) } ON AXIS(0), par exemple la requête :
{ ([Time].[2012]), ([Time].[2013]) } ON AXIS(1) SELECT
FROM [Sales]
Years.MEMBERS ON COLUMNS,
ou
SELECT Régions.Continent.MEMBERS ON
{ ([Measures].[Unit Sales], [Product].[Food]),
ROWS FROM Sales
([Measures].[Unit Sales], [Product].[Drink]) } ON COLUMNS,
{ ([Time].[2012]), ([Time].[2013]) } ON ROWS
FROM [Sales]
Cette requête MDX : Certaines dimensions ou niveaux ont plus de 1000 membres !
SELECT
On peut souhaiter ne pas considérer tous les membres de la dimension ou
Years.MEMBERS ON COLUMNS,
Régions.Continent.MEMBERS ON du niveau, aussi dans MDX on peut spécifier une liste de membres à
ROWS FROM Sales considérer : { dim.member1, dim.member2, … , dim.membern}
Son résultat est une table avec 2 axes : Ex : On considére seulement les ventes sur les 2 années 2012 et 2013:
2010 2011 2013 2014 SELECT
N. America 120,000 200,000 400,000 600,000 { Years.[2012], Years.[2013] } ON COLUMNS,
S. America - 10,000 30,000 70,000
Europe 55,000 95,000 160,000 310,000 Regions.Continent.MEMBERS ON
Asia 30,000 80,000 220,000 200,000 ROWS FROM Sales
l’axe horizontal est (i.e. COLUMNS) contient tous les membres de la Remarques :
dimension ‘Years’ (ici 2010, 2011, 2013, 2014) il est recommandé de choisir des noms de membres entre crochet [ ] avec
l’axe vertical est (i.e. ROWS) contient tous les membres du niveau aucun symbole blanc, point, …
‘Continent’ de la dimension ‘Regions’ (ici N & S America, Europe, Asia) ici [2012] et [2013] sont des membres et pas des valeurs !!!
REMARQUE : ici la mesure considérée (auxquelles correspondent les valeurs du ici la mesure (measure) pas explicitement définie => mesure par défaut
résultat) n’est pas précisée, c’est une mesure par défaut (default measure) : quand une dimension a le niveau ‘All’, le premier membre du premier
‘sales’ (valeurs de ventes) niveau sera choisi par défaut
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 23 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 24
1-Ecrire une requête qui affiche les ventes par année 2 : Ecrire une requête qui affiche les ventes par
pour la catégorie de produit "Beverages" dans la base catégorie de produit pour l'année 2014 dans la base de
de données suivante : données suivante :
SELECT [Years].[Year].MEMBERS ON COLUMNS, SELECT [Product].[Category].MEMBERS ON
[Product].[Beverages] ON ROWS COLUMNS,
FROM [Sales] [Measures].[Sales] ON ROWS
WHERE [Measures].[Sales] FROM [Sales]
WHERE [Years].[Year].[2014]
1-Ecrire une requête qui affiche les ventes par année 2 : Ecrire une requête qui affiche les ventes par
pour la catégorie de produit "Beverages" dans la base catégorie de produit pour l'année 2014 dans la base de
de données suivante : données suivante :
SELECT [Years].[Year].MEMBERS ON COLUMNS, SELECT [Product].[Category].MEMBERS ON
[Product].[Beverages] ON ROWS COLUMNS,
FROM [Sales] [Measures].[Sales] ON ROWS
WHERE [Measures].[Sales] FROM [Sales]
WHERE [Years].[Year].[2014]
3 : Ecrire une requête qui affiche les ventes par année
pour tous les produits dans la base de données suivante :