Vous êtes sur la page 1sur 32

Entrepôts de données : Introduction au langage MDX

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

Clauses : Les clauses en SQL, telles que


 La clause SELECT indiqueWHERE, GROUP que
les résultats BY, HAVING, etc.,
l’on souhaite récupérer
sont similaires aux clauses en MDX,
 Structure générale d’une requête : par la requête : telles que WHERE, AXIS, etc. Ces
 en SQL : clauses permettent de filtrer, regrouper et
 SQL : SELECT column1, column2, …, columnn FROM table manipuler les données.
 une vue des données en 2 dimensions : lignes (rows) et colonnes
(columns)
 MDX : SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM
 les lignes ont la même structure définie par les colonnes
cube
 en MDX :
 nb quelconque de dimensions pour former les résultats de la
 Clause FROM spécifie la source de données :
requête
 en SQL : une ou plusieurs tables  terme d’axe pour éviter confusion avec les dimensions du cube
 pas de signification particulière pour les rows et les columns,
 en MDX : un cube  mais il faut définir chaque axe : axe1 définit l’axe horizontal et
axe2 définit l’axe vertical

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

 La clause SELECT indique les résultats que l’on souhaite récupérer


 Structure générale d’une requête : par la requête :
 en SQL :
 SQL : SELECT column1, column2, …, columnn FROM table
 une vue des données en 2 dimensions : lignes (rows) et colonnes
(columns)
 MDX : SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM
 les lignes ont la même structure définie par les colonnes
cube
 en MDX :
 nb quelconque de dimensions pour former les résultats de la
 Clause FROM spécifie la source de données :
requête
 en SQL : une ou plusieurs tables  terme d’axe pour éviter confusion avec les dimensions du cube
SELECT nom, prenom, age  pas de signification particulière pour les rows et les columns,
 en MDX : un cube FROM clients WHERE ville  mais il faut définir chaque axe : axe1 définit l’axe horizontal et
= 'Paris'; axe2 définit l’axe vertical

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

 La clause SELECT indique les résultats que l’on souhaite récupérer


 Structure générale d’une requête : par la requête :
 en SQL :
 SQL : SELECT column1, column2, …, columnn FROM table
 une vue des données en 2 dimensions : lignes (rows) et colonnes
(columns)
 MDX : SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM
 les lignes ont la même structure définie par les colonnes
cube
 Les colonnes sélectionnées peuvent être des colonnes de la
table ou des expressions de colonnes calculées.
 Clause FROM spécifie la source de données :
 en MDX :
 en SQL : une ou plusieurs tables  nb quelconque de dimensions pour former les résultats de la
requête
 en MDX : un cube  terme d’axe pour éviter confusion avec les dimensions du cube
 pas de signification particulière pour les rows et les columns,
 mais il faut définir chaque axe : axe1 définit l’axe horizontal et
axe2 définit l’axe vertical
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 7 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 8
Soit la requête MDX suivante : (Q=Quarter)  Measures : Unit Price, Quantity, Discount, SalesAmount, Freight

SELECT {Paris, Berlin} ON ROWS Agrégation de la mesure  Dimension : Time


« SaleAmount » avec la
Voici une explication
 hierarchy détaillée
: Year > Quarter de chaque
> Month > withélément
members de :la commande RDX:
{[Q1], [Q2].CHILDREN} ON COLUMNS fonction SUM function •La commande
 Year:SELECT indique les éléments
2010, 2011, 2012, 2013, 2014 que nous souhaitons extraire
dans la requête.
 Quarter: Ici,Q1,
nous demandons
Q2, Q3, Q4 les données pour les villes de Paris et
FROM CubeSales Berlin.  Month: January, February, March, …
Sélection de la dimension
WHERE (MEASURES.SalesAmount, •Les mots-clés ON ROWS et ON COLUMNS spécifient les dimensions sur
Time (2014 seulement)  Dimension : Customer
lesquelles nous voulons afficher les données. Dans cette requête, nous
Time.[2014],  hierarchy : Continent > Country > State > City with members :
demandons les données pour les trimestres Q1 et Q2 et leurs enfants (sous-
 sur
trimestres) City: Paris,
l'axe desLyon,
lignesBerlin,
(ROWS),Köln,etMarseille, Nantes …
nous demandons les données pour
Product.Product) Sélection de la dimension
Product (all product)  State: Loire atlantique, Bouches du Rhône,
le produit et l'année 2014 sur l'axe des colonnes (COLUMNS). Bas Rhin, Torino…
Résultat :  Country: indique
•FROM Cubesales Austria,leBelgium,
nom du Danmark, France,à...partir duquel nous
cube de données
 Continent
voulons extraire level: Europe,
les données. DansNorth
ce cas,America,
le cube Sud America,s'appelle
de données Asia
Q1 2014 April 2014 May 2014 June 2014
 "Cubesales".
Dimension : Product
Paris 12,567 3,360 5,450 4,570 •La
hierarchy : Category
clause WHERE > Subcategory
permet de filtrer les>données
product en members
fonction
with des critères
:
Berlin 12,567 3,360 5,450 4,570 spécifiés.Ici, nous filtrons
Category : Food, les
Drinkdonnées
… pour la mesure de ventes
 Food pour
(SalesAmount) l'année
category: 2014 et …
Baked_food le produit.
… … … …
SalesAmount…values  …

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

 Split, nest, push, pull


18

Paris
12

25

28
21

20

23

14

Granularité : concerne un changement de niveau de détail : opérations liées au niveau de


Q1
10

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)

La cellule en haut à gauche a la valeur 21 et correspond à la vente de beverage à Paris


durant le premier trimestre (Q1) :
(Product.Category.Beverage ; Time.Quarter.Q1 ; Customer.City.Paris)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 11 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 12
Soit la requête MDX suivante : (Q=Quarter)  Measures : Unit Price, Quantity, Discount, SalesAmount, Freight

SELECT {Paris, Berlin} ON ROWS Agrégation de la mesure  Dimension : Time


« SaleAmount » avec la  hierarchy : Year > Quarter > Month > with members :
{[Q1], [Q2].CHILDREN} ON COLUMNS fonction SUM function  Year: 2010, 2011, 2012, 2013, 2014
FROM CubeSales  Quarter: Q1, Q2, Q3, Q4
Sélection de la dimension  Month: January, February, March, …
WHERE (MEASURES.SalesAmount, Time (2014 seulement)  Dimension : Customer
Time.[2014],  hierarchy : Continent > Country > State > City with members :
 City: Paris, Lyon, Berlin, Köln, Marseille, Nantes …
Product.Product) Sélection de la dimension
Product (all product)  State: Loire atlantique, Bouches du Rhône, Bas Rhin, Torino…
Résultat :  Country: Austria, Belgium, Danmark, France, ...
 Continent level: Europe, North America, Sud America, Asia
Q1 2014 April 2014 May 2014 June 2014
 Dimension : Product
Paris 12,567 3,360 5,450 4,570  hierarchy : Category > Subcategory > product with members :
Berlin 12,567 3,360 5,450 4,570  Category : Food, Drink …
 Food category: Baked_food … En combinant ces trois dimensions avec
… … … …
SalesAmount…values  … les mesures, il est possible d'effectuer
des analyses multidimensionnelles pour
obtenir des insights sur les ventes, les
clients, les produits et les périodes de
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 9 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 10
temps spécifiques. Cela permet à
l'entreprise de prendre des décisions
éclairées pour améliorer ses
performances et sa rentabilité.

 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

 Split, nest, push, pull


18

Paris
12

25

28
21

20

23

14

Granularité : concerne un changement de niveau de détail : opérations liées au niveau de


Q1
10

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)

La cellule en haut à gauche a la valeur 21 et correspond à la vente de beverage à Paris


durant le premier trimestre (Q1) :
(Product.Category.Beverage ; Time.Quarter.Q1 ; Customer.City.Paris)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 11 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 12
Soit la requête MDX suivante : (Q=Quarter)  Measures : Unit Price, Quantity, Discount, SalesAmount, Freight

SELECT {Paris, Berlin} ON ROWS Agrégation de la mesure  Dimension : Time


« SaleAmount » avec la  hierarchy : Year > Quarter > Month > with members :
{[Q1], [Q2].CHILDREN} ON COLUMNS fonction SUM function  Year: 2010, 2011, 2012, 2013, 2014
FROM CubeSales  Quarter: Q1, Q2, Q3, Q4
Sélection de la dimension  Month: January, February, March, …
WHERE (MEASURES.SalesAmount, Time (2014 seulement)  Dimension : Customer
Time.[2014],  hierarchy : Continent > Country > State > City with members :
 City: Paris, Lyon, Berlin, Köln, Marseille, Nantes …
Product.Product) Sélection de la dimension
Product (all product)  State: Loire atlantique, Bouches du Rhône, Bas Rhin, Torino…
Résultat :  Country: Austria, Belgium, Danmark, France, ...
 Continent level: Europe, North America, Sud America, Asia
Q1 2014 April 2014 May 2014 June 2014
 Dimension : Product
Paris 12,567 3,360 5,450 4,570  hierarchy : Category > Subcategory > product with members :
Berlin 12,567 3,360 5,450 4,570  Category : Food, Drink …
 Food category: Baked_food …
… … … …
SalesAmount…values  …

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

 Split, nest, push, pull


18

Paris
12

25

28
21

20

23

14

Granularité : concerne un changement de niveau de détail : opérations liées au niveau de


Q1
10

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)

La cellule en haut à gauche a la valeur 21 et correspond à la vente de beverage à Paris


durant le premier trimestre (Q1) :
(Product.Category.Beverage ; Time.Quarter.Q1 ; Customer.City.Paris)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 11 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 12
Soit la requête MDX suivante : (Q=Quarter)  Measures : Unit Price, Quantity, Discount, SalesAmount, Freight

SELECT {Paris, Berlin} ON ROWS Agrégation de la mesure  Dimension : Time


« SaleAmount » avec la  hierarchy : Year > Quarter > Month > with members :
{[Q1], [Q2].CHILDREN} ON COLUMNS fonction SUM function  Year: 2010, 2011, 2012, 2013, 2014
FROM CubeSales  Quarter: Q1, Q2, Q3, Q4
Sélection de la dimension  Month: January, February, March, …
WHERE (MEASURES.SalesAmount, Time (2014 seulement)  Dimension : Customer
Time.[2014],  hierarchy : Continent > Country > State > City with members :
 City: Paris, Lyon, Berlin, Köln, Marseille, Nantes …
Product.Product) Sélection de la dimension
Product (all product)  State: Loire atlantique, Bouches du Rhône, Bas Rhin, Torino…
Résultat :  Country: Austria, Belgium, Danmark, France, ...
 Continent level: Europe, North America, Sud America, Asia
Q1 2014 April 2014 May 2014 June 2014
 Dimension : Product
Paris 12,567 3,360 5,450 4,570  hierarchy : Category > Subcategory > product with members :
Berlin 12,567 3,360 5,450 4,570  Category : Food, Drink …
 Food category: Baked_food …
… … … …
SalesAmount…values  …

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

 Split, nest, push, pull


18

Paris
12

25

28
21

20

23

14

Granularité : concerne un changement de niveau de détail : opérations liées au niveau de


Q1
10

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)

La cellule en haut à gauche a la valeur 21 et correspond à la vente de beverage à Paris


durant le premier trimestre (Q1) :
(Product.Category.Beverage ; Time.Quarter.Q1 ; Customer.City.Paris)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 11 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 12
Soit la requête MDX suivante : (Q=Quarter)  Measures : Unit Price, Quantity, Discount, SalesAmount, Freight

SELECT {Paris, Berlin} ON ROWS Agrégation de la mesure  Dimension : Time


« SaleAmount » avec la  hierarchy : Year > Quarter > Month > with members :
{[Q1], [Q2].CHILDREN} ON COLUMNS fonction SUM function  Year: 2010, 2011, 2012, 2013, 2014
FROM CubeSales  Quarter: Q1, Q2, Q3, Q4
Sélection de la dimension  Month: January, February, March, …
WHERE (MEASURES.SalesAmount, Time (2014 seulement)  Dimension : Customer
Time.[2014],  hierarchy : Continent > Country > State > City with members :
 City: Paris, Lyon, Berlin, Köln, Marseille, Nantes …
Product.Product) Sélection de la dimension
Product (all product)  State: Loire atlantique, Bouches du Rhône, Bas Rhin, Torino…
Résultat :  Country: Austria, Belgium, Danmark, France, ...
 Continent level: Europe, North America, Sud America, Asia
Q1 2014 April 2014 May 2014 June 2014
 Dimension : Product
Paris 12,567 3,360 5,450 4,570  hierarchy : Category > Subcategory > product with members :
Berlin 12,567 3,360 5,450 4,570  Category : Food, Drink …
 Food category: Baked_food …
… … … …
SalesAmount…values  …

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

 Split, nest, push, pull


18

Paris
12

25

28
21

20

23

14

Granularité : concerne un changement de niveau de détail : opérations liées au niveau de


Q1
10

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)

La cellule en haut à gauche a la valeur 21 et correspond à la vente de beverage à Paris


durant le premier trimestre (Q1) :
(Product.Category.Beverage ; Time.Quarter.Q1 ; Customer.City.Paris)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 11 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 12
Soit la requête MDX suivante : (Q=Quarter)  Measures : Unit Price, Quantity, Discount, SalesAmount, Freight

SELECT {Paris, Berlin} ON ROWS Agrégation de la mesure  Dimension : Time


« SaleAmount » avec la  hierarchy : Year > Quarter > Month > with members :
{[Q1], [Q2].CHILDREN} ON COLUMNS fonction SUM function  Year: 2010, 2011, 2012, 2013, 2014
FROM CubeSales  Quarter: Q1, Q2, Q3, Q4
Sélection de la dimension  Month: January, February, March, …
WHERE (MEASURES.SalesAmount, Time (2014 seulement)  Dimension : Customer
Time.[2014],  hierarchy : Continent > Country > State > City with members :
 City: Paris, Lyon, Berlin, Köln, Marseille, Nantes …
Product.Product) Sélection de la dimension
Product (all product)  State: Loire atlantique, Bouches du Rhône, Bas Rhin, Torino…
Résultat :  Country: Austria, Belgium, Danmark, France, ...
 Continent level: Europe, North America, Sud America, Asia
Q1 2014 April 2014 May 2014 June 2014
 Dimension : Product
Paris 12,567 3,360 5,450 4,570  hierarchy : Category > Subcategory > product with members :
Berlin 12,567 3,360 5,450 4,570  Category : Food, Drink …
 Food category: Baked_food …
… … … …
SalesAmount…values  …

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

 Split, nest, push, pull


18

Paris
12

25

28
21

20

23

14

Granularité : concerne un changement de niveau de détail : opérations liées au niveau de


Q1
10

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)

La cellule en haut à gauche a la valeur 21 et correspond à la vente de beverage à Paris


durant le premier trimestre (Q1) :
(Product.Category.Beverage ; Time.Quarter.Q1 ; Customer.City.Paris)
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 11 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 12
 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):
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
queles 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.

Supposons que nous avons un cube13 OLAP


Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14

contenant les données de ventes de produits


dans différentes régions géographiques. La
dimension "Région" est une hiérarchie ayant des
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
niveaux tels que "Pays", "Ville", "Quartier".
 Chaque dimension du résultat :
 Ensemble de cubes nécessaires à la création du cube résultat
Nous voulons restreindre notre requête à la  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
région
retourné par "Europe"
la requête MDX : seulement. 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.

Supposons que nous avons un cube13 OLAP


Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 14

contenant les données de ventes de produits


dans différentes régions géographiques. La
dimension "Région" est une hiérarchie ayant des
SELECT - description des axes du cube résultat FROM - Spécification du/des cube/s de départ
niveaux tels que "Pays", "Ville", "Quartier".
 Chaque dimension du résultat :
 Ensemble de cubes nécessaires à la création du cube résultat
Nous voulons restreindre notre requête à la  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
région
retourné par "Europe"
la requête MDX : seulement. 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 ouCorrection : de la hiérarchie :
plusieurs niveaux
 Spécification des restrictions par une liste de noeuds de la
Ex1SELECT [Measures].[Montant
: {Paris, Berlin} de
de la dimension Lieu, niveau Ville vente] ON hiérarchie d’une dimension nommée « slicer-dimension »
Ex2COLUMNS,

: {[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
[Produit].[Catégorie de produit].Members ON être utilisées aussi dans les clauses WHERE et FROM).
ROWS
FROM [Cube de ventes]
Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 15 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 16

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]

21 Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE - 22


Introduction au langage MDX pour l’OLAP - Bernard ESPINASSE -

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 :

SELECT [Years].[Year].MEMBERS ON COLUMNS,


[Product].[Product].MEMBERS ON ROWS
FROM [Sales]
WHERE [Measures].[Sales]
Considérez le cube de données des ventes de produits dans une entreprise. Les dimensions sont : Produit
(Product), Temps (Time) et Région (Region). Les mesures sont : Unit Sales, Store Sales et Store Cost.
Écrivez une requête MDX pour récupérer les informations suivantes :
•Les ventes totales pour l'année 2020 pour tous les produits.
•Les coûts des magasins pour les produits alimentaires (Food) vendus en Europe en 2019.
•Les ventes unitaires et les ventes de magasins pour les produits alimentaires (Food) vendus en Europe en 2021,
pour chaque mois.
Données de départ :
•Dimension Produit (Product) :
• Niveaux : All Products, Food, Drink
• Hiérarchie : Product
•Dimension Temps (Time) :
• Niveaux : All Times, Year, Quarter, Month
• Hiérarchie : Time
• Années : 2019, 2020, 2021
•Dimension Région (Region) :
• Niveaux : All Regions, Europe, America
• Hiérarchie : Region
•Mesures :
• Unit Sales
• Store Sales
• Store Cost

Vous aimerez peut-être aussi