5 MDX OLAP 2010 4p
5 MDX OLAP 2010 4p
5 MDX OLAP 2010 4p
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
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
4. 5.
6.
Hirarchie Time
Hirarchie Product
Une hirarchie est compose de niveaux ("levels") correspondant un des attributs de la base de donnes : 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 5
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
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
2 Introduction MDX
Origine de MDX MDX versus SQL
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 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 :
13
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
14
SELECT indique les rsultats que l!on souhaite rcuprer par la requte :
Relationnel (SQL) Table Colonne (chaine de caractre ou valeur numrique) plusieurs colonnes lies ou une table de dimension Colonne (discrte ou numrique) Valeur dans une colonne et une ligne particulire de la table 15
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
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
16
17
18
Membres
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]
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
20
19
Sets (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) :
Sets (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]
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
22
21
24
23
Son rsultat de la requte est une table avec 2 axes :220,000 Asia 30,000 80,000
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
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
26
27
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
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
Europe
Computers Printers
Asia
Computers Printers
32
33
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
34
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
36
35
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
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
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.
40
39
Signification Donne le parent du membre de dimension considr Donne le premier fils du membre considr Donne le dernier fils du membre considr
Remarque Dplacement vertical sur une hirarchie, et on change ainsi de niveau Dplacement horizontal l!intrieur d!un mme niveau
NextMember Donne le membre suivant du membre considr PrevMember Donne le membre prcdent fils du membre considr Ex : FirstSibling
[Aug].PrevMember retourne [Jul]. Les 2 membres appartiennent [Qtr 3] [Oct].PrevMember retourne [Sep]. On traverse la hirarchie en changeant de parents de [Qtr 4] [Qtr 3].
41
42
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
44
43
Derniers lments d'un set Sous-ensemble Subset Subset(<< Set >>, << Start >> [,<< Count >>]) 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
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
46
45
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
52
51
53
54
55
56
Drapeau
Description
Renvoie les membres descendants partir d'un niveau donn ou une distance donne. Le membre donn en entre est renvoy si le niveau donn est le niveau de ce membre. Renvoie les membres descendants de tous les niveaux subordonns d'un niveau ou une distance donne. Renvoie les membres descendants partir de tous les niveaux entre un membre et un niveau donn, ou une distance donne. Le membre donn en entre est renvoy mais pas les membres partir niveau ou de la distance donne. membre donn. Le membre donn en entre est renvoy mais pas les membres partir niveau ou de la distance donne. 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. donn. Le membre donn en entre est galement renvoy.
Before_And_After Renvoie les descendants membres partir de tous les niveaux subordonns d'un niveau d'un Self_And_After Self_And_Before
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 -
Self_Before_After Renvoie les descendants membres partir des niveaux subordonns d'un niveau d'un membre Leaves
Renvoie les descendants feuilles entre un membre et un niveau donn ou une d'une distance donne. 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 Sales] entre deux trimestres conscutifs l'volution de [Unit
[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
Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE Introduction au langage MDX pour l!OLAP - Bernard ESPINASSE -
64
63
65
66