Académique Documents
Professionnel Documents
Culture Documents
Master Professionnel
Management Digital et Systèmes d'Information
(2MDSI)
Chapitre 5
Manipulation des entrepôts de données
(Requetes MDX)
3
MDX versus SQL
• MDX est fait pour naviguer dans les bases multidimensionnelles et pour
définir des requêtes sur tous leurs objets (dimensions, hiérarchies, niveaux,
membres et cellules) afin d'obtenir (simplement) une représentation sous
forme de tableaux croisés
• MDX ressemble à SQL par ses mots clé SELECT, FROM, WHERE, mais :
o SQL construit des vues relationnelles
o MDX construits des vues multidimensionnelles des données
• Analogies entre termes multidimensionnels (MDX) et relationnels (SQL) :
Multidimensionne (MDX) Relationnel (SQL)
Cube Table
Plusieurs colonnes liées ou une table de
Dimension
dimension
Niveau de hierarchie (Level) Colonne (attribut)
Mesure (measure) Colonne (attribut) 4
Membre de dimension Valeur dans une colonne et une ligne de la table
MDX versus SQL
MDX SQL
Avantages Avantages
• Modélisation des données : définition des • Grande base d'utilisateurs
dimensions, hiérarchies, mesure, à partir de diverses • Sémantique des requêtes facile à comprendre
sources de données • Les résultats sont faciles à visualiser : scalaires ou
• Navigation simple dans la dimension temporelle et tableaux 2D
hiérarchies • Différentes manières de relier les tables : jointures,
• Des expressions relativement simples pour tables dérivées, requêtes corrélées, etc.
demandes commerciales souvent utilisées
• Rapide, du fait de l'existence d'agrégations
Désavantages Désavantages
• Effort supplémentaire pour concevoir (design) un • Les tables doivent être jointes explicitement dans
cube et configurer des agrégations une requête
• Concepts difficiles à appréhender : contexte actuel, • Syntaxe parfois peu intuitive et complexe pour
phases d'exécution, etc. exprimer des requêtes analytiques
• Certaines opérations sont difficiles à exprimer, • Pas de concept d'ordre des lignes et de hiérarchies :
comme le classement sur plusieurs critères les dimensions de navigation peuvent être complexes
• Pas si performant pour les types de requêtes 5
utilisées dans l'analyse des données
MDX versus SQL
•Structure générale dʼune requête SQL :
SELECT column1, column2, …, columnn FROM table
•Structure générale dʼune requête MDX :
SELECT axis1 ON COLUMNS, axis2 ON ROWS FROM cube
• FROM spécifie la source de données :
o en SQL : une ou plusieurs tables
o en MDX : un cube
• SELECT indique les résultats que lʼon souhaite récupérer par la requête :
-en SQL :
• une vue des données en 2 dimensions (lignes (rows) et colonnes (columns))
• les lignes ont la même structure définie par les colonnes
-en MDX :
• nb quelconque de dimensions pour former les résultats de la requête.
• 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
6
définir chaque
6 axe : axe1 définit l'axe horizontal et axe2 définit l'axe vertical
RAPPEL DE MODÉLISATION MULTIDIMENSIONNELLE
Région
temps
Région produits
2020 2021 2022
temps Europe AudioV 100 200 300
PC 225 245 240
Afrique AudioV 163 152 145
PC 187 174 184
produits
Cube de donnés 7
(nommé vente)
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX
MEMBRE
▪Un membre est une instance d'un niveau d’une dimension, spécifié
entre crochets [..] .
▪ Exemples:
▪ [PC], [AudioV] sont les membres de la dimension Produit
▪ [produit].[PC] : les produits PC temps
Excel. Dans la feuille Excel, une Afrique AudioV 163 152 145
PC 187 174 184
cellule est identifiée par A1, A2, A3,
B1, B2, B3, etc.
9
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX (5/7)
MESURE
Dans un tuple, les mesures sont traitées comme une
dimension particulière, nommée [Measures]
▪ Exemples:
▪ SELECT {[Measures].[Quantité vendue],
[produit].[PC].[Acer]} ON COLUMNS
FROM [ventes]
10
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX
SELECT
Select
[Axes spécifiés]
From
[Cube spécifié]
Where
[Filtres spécifiés]
Les crochets peuvent être optionnels sauf pour les noms avec
11
espaces intégrés
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX SELECT
Le mot clé SELECT marque le début de la requête. Il précise ce que vous
voulez sélectionner.
Le mot clé ON est utilisé pour organiser les données sélectionnées. MDX utilise
le concept d'axes. Les données sélectionnées à partir d'une dimension peuvent
être placées sur un axe.
SELECT n'est pas limité à deux axes. Nous pourrions avoir jusqu'à 128 axes
Remarque : Une requête qui utilise l'axe 1 doit également utiliser l'axe 0. Une
requête qui utilise l'axe 2 doit également utiliser l'axe 1 et l'axe 0. Vous ne
pouvez pas ignorer un axe dans une requête.
Dans la clause FROM, nous spécifions le cube qui sera utilisé pour interroger
12
les données spécifiées dans la clause SELECT.
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX SELECT
Dans la requête ci-dessous, nous avons sélectionné les membres de la
dimension [Measure] et les avons placés sur l'axe 0, ou COLUMNS. Et nous
avons sélectionné les membres de la dimension [Region] et les avons placés
sur l'axe 1, ou ROWS.
SELECT
{
([Measures].[quantité vendue], [produit].[PC]), PC AudioV
([Measures].[quantité vendue], [produit].[AudioV]) }
ON AXIS(0), 2020
{ 2021
([Temps].[2020]),
([Temps].[2021]) }
ON AXIS(1)
13
FROM [ventes]
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX SELECT
14
STRUCTURE GÉNÉRALE D’UNE REQUÊTE MDX SELECT
FROM Sales
15
SPÉCIFICATION D’UN AXE EN MDX
▪ Une autre façon plus simple :
▪ Définir un axe et présenter sur l’axe tous les membres d’une
dimension : [nom de la dimension].CHILDREN
▪ Exemple
SELECT
{[Temps]. [année].CHILDREN} ON COLUMNS,
{[Régions].[pays]. CHILDREN} ON ROWS
FROM [ventes] 2008 2009 2020 2021 2022
France
Espagne
Tunisie
16
Italie
Canada
SPÉCIFICATION D’UN AXE EN MDX
▪ Exemple
SELECT
{ [Temps]. [année].CHILDREN } ON COLUMNS,
{ [Régions].[pays]. CHILDREN } ON ROWS
FROM [ventes]
Remarque : Comme la mesure
n’est pas précisée, c’est une mesure
2008 2009 2020 2021 2022
par défaut (default mesure)
France
Espagne
Tunisie
Italie
Canada
L’axe horizontal (columns) contient tous les membres de la dimension temps (les années)
17
L’axe vertival est (rows) contient tous les membres du niveau « pays » de la dimension
"régions »
SPÉCIFICATION D’UN AXE EN MDX
▪ Une autre façon simple Aussi:
▪ Définir un axe et présenter sur l’axe tous les membres d’une
dimension : [nom de la dimension].MEMBERS
▪ Exemple
SELECT
{[Temps].[année].MEMBERS} ON COLUMNS,
{[Régions].[pays].MEMBERS} ON ROWS
2008 2009 2020 2021 2022
FROM [ventes]
Tous
France
Espagne
Tunisie
18
Italie
Canada
SPÉCIFICATION D’UN AXE EN MDX
"CHILDREN" et "MEMBERS"
Par exemple, une hiérarchie "Pays" avec des membres tels que "France",
"Allemagne" et "Espagne"
[Pays].CHILDREN
donnera la mesure spécifiée pour les membres "France", "Allemagne" et
"Espagne".
[Pays].MEMBERS
Donnera la mesure spécifiée pour les membres "France", "Allemagne",
"Espagne", mais aussi celle pour tous les autres membres pour tous les pays.
19
Requêtes de base
OPÉRATION SLICE
▪ Dans MDX l’opération de Slice est traitée par une clause WHERE :
SELECT
{[temps]. [année]. MEMBERS} ON COLUMNS,
{ [Regions].[pays].MEMBERS } ON ROWS
FROM [ventes]
WHERE ([produits].[produit Group]. [Computers])
21
Requêtes de base
OPÉRATION DICE
▪ Plusieurs membres de différentes hiérarchies peuvent être ajoutés à la clause
WHERE. La requête suivante affiche les valeurs de toutes les mesures pour
toutes les années pour les clients résidant en France et ayant acheté des
produits de la catégorie boissons (Beverages) :
23
Requêtes de base
NOT EMPTY
Pour filtrer les valeurs "non vides" dans MDX, vous pouvez
utiliser la fonction MDX "NON EMPTY :
24
Requêtes de base
OPÉRATION ROLLUP ET DRILLDOWN
25
Requêtes de base
OPÉRATION DRILLUPLEVEL
Cube AnalyseVentes
27
Requêtes de base
OPÉRATION DRILLUPLEVEL
Exemple:
AnalyseVentes
28
Requêtes de base
OPÉRATION DRILLDOWNLEVEL
DrilldownLevel( <Liste> , <Niveau> )
Retourne : un ensempbe complété des enfants du plus bas niveau du set d’origine
Exemple:
AnalyseVentes
29
On voit que le niveau le plus bas de l’arbre précédent (2ème trimestre 2011) a bien été développé
Requêtes de base
OPÉRATION DRILLDOWNLEVEL
Si on souhaite descendre d’un étage autre que les feuilles de plus bas niveau, on peut utiliser le paramètre
niveau: descendre le niveau semestre
Exemple:
AnalyseVentes
30
FONCTIONS SUR LES MEMBRES ET LES DIMENSIONS
31
FONCTIONS SUR LES MEMBRES ET LES DIMENSIONS
PrevMember([Année].[2019])
Cela retournera le membre de l'année 2018 s'il existe dans l'hierarchie.
[Europe].[Allemagne].FirstSibling
renverra "Autriche" s’ il est le premier membre de
l'ensemble "Europe" 32
EXERCICES
Exercice1
Considérez le cube (schéma multidimensionnel ) nommé
cinémacube :
Qui contient 4 dimensions
• Film(idFilm, titre, annéeParit, description);
• Personne(idPersonne, nom, dateNaissance, tel);
• GenreFilm(idGFilm, genre);
• Date (date, année, mois, semaine, jour)
Page(PageKey,TypePage…)
Promotion(PromotionKey, TauxPromotion, …)
• https://www.iccube.com/support/documentation/mdx_tutorial/gentle_introduction.php
• https://docplayer.fr/8319111-Entrepots-de-donnees-introduction-au-langage-mdx-multi-
dimensional-extensions-pour-l'olap.html
• https://www.youtube.com/watch?v=CIz9E1vbi7c
• https://www.youtube.com/watch?v=FqlDM_HzkO4
• 37
CORRECTION DES EXERCICES
Exercice 1
1.Donner la requête MDX permettant d’avoir le nombre de films vus par genre de film durant l’année
2022. Genre documentaire Genre science fiction
2022 x y
SELECT {[measures]. [nbfilmVu], [GenreFilm].[genre].MEMBERS} ON COLUMNS
[Date].[annee].[2022] ON ROWS
FROM cinémacube
Ou
SELECT {[measures]. [nbfilmVu], [GenreFilm].[genre].MEMBERS} ON COLUMNS
FROM cinémacube
WHERE [Date].[annee].[2022]
• 38
CORRECTION DES EXERCICES
Exercice 1
2. Donner la requête MDX permettant d’avoir le CA par films chaque année.
Film 1 Film2 ….
2021 x y
2022 v w
…..
Film 1 Film2 …
SELECT {[measures]. [CA], [Film].[titre].MEMBERS} ON COLUMNS .
[Date].[annee].MEMBERS ON ROWS Nbfilm x+y+v+w
FROM cinémacube
2021 x y
Ou 2022 v w
SELECT {[measures]. [CA], [Film].[titre].CHILDREN} ON COLUMNS …..
[Date].[annee].CHILDREN ON ROWS
FROM cinémacube
Remarque: La différence entre MEMBERS et CHILDREN: MEMBERS donne le CA global de tous les• 39
ans pour tous les films, en plus des CA année par année pour chaque film. CHILDREN donne
uniquement les CA année par année pour chaque film.
CORRECTION DES EXERCICES
Exercice 1
3. Si on suppose que la dimension GenreFilm comprend le niveau « catégorieAge » et la catégorieAge
comprend les niveaux : enfant, adultes. Sachant que les membres du niveau enfant = « 4-6, 7-10, 11-
13 », donner la requête MDX permettant d’avoir le nombre de films vus par genre de film
(exemple action, horreur,…), chaque année par les enfants de 11-13 ans.
G1 G2 ….
GenreFilm(idGFilm, genre, catégorieAge)
2021 x y 11-13ans
2022 v w
…..
SELECT {[measures]. [nbfilmVu], [GenreFilm].[genre]. CHILDREN} ON COLUMNS
[Date].[annee]. CHILDREN ON ROWS
FROM cinémacube
WHERE ([GenreFilm].[catégorieAge]. [enfant].[11-13]
• 40
CORRECTION DES EXERCICES
Exercice 1
4.Donner la requête MDX permettant d’observer toutes les mesures pour chaque personne durant
toutes les années pour un genre de film d’action. m1 m2 ….
Film d’action
2021 x y
2022 v w
…..
SELECT [measures]. CHILDREN ON 0
[Date].[annee]. CHILDREN ON 1
[Personne].[nom]. CHILDREN ON 2
FROM cinémacube
WHERE ([GenreFilm].[genre].[action]
Ou
Ou
• 43
ORRECTION DES EXERCICES
Exercice 2
2. Donner la requête MDX, permettant d’avoir le montant des achats par visiteur durant toutes les
années, uniquement pour le produit « montre » et la promotion "50% " V1 V2 ….
a1 x y
a2 v w
…..
• 44
CORRECTION DES EXERCICES
Exercice 2
3. Donner la requête MDX, permettant d’avoir le nombre de secondes passées sur les pages P1 et P2 par
visiteur, durant les mois d’octobre et novembre.
FROM SiteCube
CORRECTION DES EXERCICES
Exercice 2
4. Donner la requête MDX équivalente, mais permettant de visualiser le résultat uniquement pour
les visiteurs V1, V2 et V3
--le nombre est cumulé pour octobre et novembre
FROM SiteCube