Académique Documents
Professionnel Documents
Culture Documents
Plan
1. 2. 3. Schma XML d!une BD multidimensionnelle
! Rappels de modlisation multidimensionnelle ! Schma en XML sous Mondrian
Introduction a MDX
! Origine de MDX ! MDX versus SQL
Bernard ESPINASSE
Professeur Aix-Marseille Universit (AMU) Ecole Polytechnique Universitaire de Marseille Septembre 2009
4. 5.
Schma XML d!une BD multidimensionnelle Introduction MDX Syntaxe de base de MDX Membres et tuples dans MDX Fonctions sur les membres et les ensembles (Sets) de MDX Expressions avances de MDX
6.
France Provence
Product Level 1
! hirarchie "Time" est compose des niveaux "Year", "Quarter" et "Month" ! hirarchie "Store" est compose des niveaux "Country", "State", "City", "Store_Name" ! Un niveau est compos de membres qui sont les valeurs d'un niveau dtectes par le moteur OLAP et stockes dans les mtadonnes : ! les membres du niveau "Country" sont "France", "Canada" et "USA" ! les membres du niveau "City" sont "Marseille", "Lyon" et "Paris". ! Une mesure est une quantit intressante que l!on souhaite observer, par exemple : ! montant des ventes ! quantit de produit vendus
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
Marseille Le Merlan
Day
Store_name
Level 2
Baked food
! la table de faits (ici "sales_fact_1997") contient les colonnes partir desquelles les mesures sont calcules et les rfrences vers les tables des dimensions ! chaque mesure a un nom, une colonne de correspondance dans la table de faits, un oprateur d'agrgation ! l'oprateur d'agrgation est souvent "sum", mais aussi "count", "min", "max", "avg" et "distinct-count" peuvent tre utiliss ! ici la mesure (<Measure>) Profit est calcule partir des mesures Store Sales et Store cost
10
11
12
Origine de MDX
MDX est l!acronyme de Multi Dimensional eXpression
est un langage de requtes OLAP pour les bases de donnes multidimensionnelles a t invent par Mosha Pasumansky au sein de Microsoft
2 Introduction MDX
! Origine de MDX ! MDX versus SQL
a t prsent pour la premire fois en 1997 comme un volet de la spcification OLE DB for OLAP (ODBO) version commerciale Microsoft OLAP Services 7.0, Microsoft Analysis Services en1998 dernire version de la spcification OLE DB for OLAP (ODBO) en 1999 MDX peut tre prsent comme une extension de SQL : structures de requtes et mots cls similaires, mais avec de grandes diffrences. Bibliographie et sources du cours : ! ! ! ! ! MDX for Everyone , M. Pasumansky, avril 1998. Fast track to MDX , M. Whithehorn, R. Zare, M. Pasumansky, Springer, 2006. Introduction to Multidimensionnal Expressions (MDX) , auteur inconnu. Cours de Kamel Aouiche, ERIC, Universit de Lyon 2, 2004 Cours de Joseph Fong, City University of Hong Kong, 2008
13
14
SELECT indique les rsultats que l!on souhaite rcuprer par la requte :
! en SQL : une vue des donnes en 2 dimensions (lignes (rows) et colonnes (columns)) les lignes ont la mme structure dfinie par les colonnes ! en MDX : nb quelconque de dimensions pour former les rsultats de la requte. terme d!axe pour viter confusion avec les dimensions du cube. pas de signification particulire pour les rows et les columns, mais il faut dfinir chaque axe : axe1 dfinit l!axe horizontal et axe2 dfinit l!axe vertical
15
16
17
18
M e mb re s
! Un membre = une instance d'un niveau d!une dimension, spcifi entre crochets [..] Ex : [Food], [Drink] sont des membres de la dimension "Products" au niveau 1 ! Les membres = items accessibles dans les hirarchies et peuvent tre rfrencs de diffrentes faons : [1997] [Time].[1997] [Product].[Food] [Product].[Food].[Baked Goods] [Product].[All Products].[Food].[Baked Goods] ! Les enfants d'un membre = membres du niveau immdiatement en dessous de celui-ci ! Ex. d!utilisations de membres dans des requtes simples : SELECT [Time].[1997] ON COLUMNS FROM [Sales] SELECT [Product].[Food] ON COLUMNS FROM [Sales] SELECT [Product].[Food].[Baked Goods] ON COLUMNS FROM [Sales] SELECT [Product].[All Products].[Food].[Baked Goods] ON COLUMNS FROM [Sales]
19
20
S e ts (1 )
! Un set = un ensemble ordonn de tuples ! Un set peut tre vu comme une plage de valeurs ! Un set commence par une accolade "{", dans laquelle sont numrs les tuples spars par des virgules, et se termine par une accolade apparie "}" Ex1 : SELECT { ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), ([Measures].[Store Sales], [Product].[All Products].[Food].[Baked Goods]) } ON COLUMNS FROM [Sales] ce set contient : 2 mesures diffrentes (Units sales et Store Sales) et le mme membre (Baked Goods) :
S e ts (2 )
Ex2 : un set qui comporte 2 mesures et 2 membres diffrents de la mme dimension sur 2 niveaux diffrents ([Food] et [Baked Goods]) : SELECT { ([Measures].[Unit Sales], [Product].[Food]), ([Measures].[Store Sales], [Product].[Food].[Baked Goods]) } ON COLUMNS FROM [Sales] Ex3 : un set qui a la mme mesure et 2 diffrents membres contigus ([Food] et [Drink]) : SELECT { ([Measures].[Unit Sales], [Product].[Food]), ([Measures].[Unit Sales], [Product].[Drink]) } ON COLUMNS FROM [Sales] Ex4 : un set qui ne contient qu'un seul membre ([1997]) : SELECT { ([1997]) } ON COLUMNS FROM [Sales]
21
22
23
24
Son rsultat de la requte est une table avec 2 axes : ! ! l!axe horizontal est (i.e. columns) contient tous les membres de la dimension "Years! l!axe vertival est (i.e. rows) contient tous les membres du niveau "Continent! de la dimension "Regions!
! Remarque : la mesure considre (auxquelles correspondent les valeurs du rsultat) n!est pas prcise, c!est une mesure par dfaut (default measure) : "sales! (valeurs de ventes) 25
26
27
28
Insertion de commentaires
Les commandes MDX peuvent tre commentes de trois faons diffrentes : ! // Commentaire en fin de ligne ! -- Commentaire en fin de ligne ! /* Commentaire sur plusieurs lignes */ Les commentaires peuvent tre imbriqus comme le montre l'exemple ci-dessous : /* Commentaire sur plusieurs lignes /* Commentaire imbriqu */ */
29
30
31
32
33
34
35
36
Membres NULL
Soit la requte suivante : WITH MEMBER Measures.[Sales Growth] AS '(Sales) (Sales, Time.PrevMember)' SELECT { [Sales], [Sales Growth] } ON COLUMNS, Month.MEMBERS ON ROWS FROM Sales Calcule pour chaque mois la croissante des ventes compare au mois prcdent. Pour le premier mois, il n!y a pas de mois prcdent dans le cube : au lieu de retourner une erreur, MDX a la notion de membre NULL reprsentant des membres qui n!existent pas La smantique d!un membre NULL est : 1. When the cell contains as one of its coordinates NULL member, the numeric value of the cell will be zero : Ainsi (Sales, [January].PrevMember) = 0 2. Any member function applied to NULL returns NULL. 3. When NULL member is included in set, it is just ignored. Ainsi{[September], [January].PrevMember} = {[September]}
37
38
Cellules EMPTY
La notion cellule EMPTY est lie celle de membre NULL Quand une cellule est hors du cube alors sa valeur est vide, et la valeur calcule pour cette cellule est 0 (zro). On peut avoir des cellules vides pas seulement hors du cube. Il est important de distinguer : ! le fait qu!une donne existe et sa valeur est 0, et ! le fait qu!une donne n!existe pas rsultant d!une cellule EMPTY, cellule dont la valeur sera value 0. Pour cela MDX a le prdicat IsEmpty qui peut tre appliqu une cellule et retourne la valeur boolenne TRUE ou FALSE.
39
40
41
42
43
44
Description Elments de tte d'un set Derniers lments d'un set Sous-ensemble d'lments d'un set
TopCount TopCount(<< Set >>, << Count >> [,<< Numeric Expression Les premiers lments >>]) ayant la plus grande valeur de la mesure Order (<< Set <<, {<<String Expression>> | <<Numeric Order Tri des lments d'un set
Expression >>} [, ASC | DESC | BASC | BDESC]) Filter(<< Set >>, << conditions >>)
Filter
45
46
La requte suivante, avec la fonction Filter n'affiche que les cellules dont la mesure "[Unit Sales]" est suprieur ou gale (#) une certaine valeur :
SELECT { ([Measures].[Unit Sales]) } ON COLUMNS, { Filter([Time].Children, ([Measures].[Unit Sales]) > 70000) } ON ROWS FROM [Sales]
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
47
48
49
50
6 Expressions avances de MD X
! Analyse comparative (ParallelPeriod) ! Calcul cumulatif ! Expressions conditionnelles
51
52
53
54
56
Before_And_After membre donn. Le membre donn en entre est renvoy mais pas les membres partir niveau Self_And_After Self_And_Before Self_Before_After Leaves
Renvoie les descendants membres partir d'un niveau ou une distance donne, et partir tous les niveaux subordonns du niveau ou de la distance donne. Renvoie les descendants membres partir d'un niveau ou une distance donne, et partir de tous les niveaux entre le membre et le niveau donn ou le distance donne, incluant le membre donn en entre. Renvoie les descendants membres partir des niveaux subordonns d'un niveau d'un membre donn. Le membre donn en entre est galement renvoy. Renvoie les descendants feuilles entre un membre et un niveau donn ou une d'une distance donne.
Requte donnant tous les membres dont le niveau est le suprieur hirarchique du niveau 2 (mois) de la dimension Time :
SELECT { ([Measures].[Unit Sales]) } ON COLUMNS, { Descendants([Time],2, Before) } ON ROWS FROM [Sales]
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
57
58
59
60
! [Measures].[Q-1] : donne [Unit Sales] au trimestre prcdent ! [Measures].[Evolution] : donne l'volution de [Unit Sales] entre deux trimestres conscutifs ! [Measures].[%] : donne l'volution en pourcentage ! [Measures].[Performance] : renvoie une chane de caractres qui nous permet d'appliquer des rgles de gestion lies des conditions
61
62
63
64
65
66