Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Le cube Sales (1) -2-
Le cube Sales (2) -3-
Le cube Sales (3) -4-
JRubik -5- Une application Java intégrant le moteur OLAP Mondrian Démonstration sur un exemple : Select {[Measures].[Unit Sales]} ON COLUMNS, {[Store].[All Stores]} ON ROWS from [Sales]
Mondrian Web Application -6- Une application Web (Servlet Tomcat) intégrant le moteur OLAP Mondrian Démonstration sur un exemple : Select {[Measures].[Unit Sales]} ON COLUMNS, {[Store].[All Stores]} ON ROWS from [Sales]
Mise en œuvre du langage MDX -2 ème partie- Les bases du langage de requête MDX -7-
-8- Le langage MDX SELECT ON COLUMNS, ON ROWS FROM WHERE select {[Store]} ON COLUMNS, {[Measures]} ON ROWS from [HR] Syntaxe de base : Exemple:
Le Langage MDX : les constructeurs Un membre Une valeur possible de dimension [1997] [Canada] [Drink] [All Stores] Un chemin dans la hiérarchie dune dimension [Time].[1997] [Product].[Food] [Product].[Food].[Baked Goods] [Product].[All Products].[Food].[Baked Goods] Un tuple: Une liste de membres ([Time].[1997], [Product].[Food]) Un set : Un ensemble ordonné de tuples { ([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), ([Measures].[Store Sales], [Product].[All Products].[Food].[Baked Goods]) } Une spécification daxe cest un set -9-
Exemple de requêtes select {[1997]} ON COLUMNS from [Sales] select {[Time].[1997]} ON COLUMNS from [Sales] select {([Time].[1997], [Product].[Food])} ON COLUMNS from [Sales] -10-
Exemples de requêtes MDX select {([Product].[All Products].[Food].[Baked Goods], [Time].[1997])} ON COLUMNS from [Sales] -11- select {([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), ([Measures].[Store Sales], [Product].[All Products].[Food].[Baked Goods])} ON COLUMNS from [Sales]
select { ([Measures].[Unit Sales], [Product].[Food]), ([Measures].[Unit Sales], [Product].[Drink]) } on COLUMNS, { ([Time].[1997]), ([Time].[1998]) } on ROWS from [Sales] -12- Exemples de requêtes MDX
select { ([Measures].[Unit Sales], [Product].[Food]), ([Measures].[Unit Sales], [Product].[Drink]) } on columns, {([Time].[1997]), ([Time].[1998])} on rows from [Sales] where { ([Gender].[M]) } -13- Utilisation dun prédicat de slice [Measures].[Unit Sales] [Product].[Food][Product].[Drink] Exemples de requêtes MDX
-14- Le langage MDX Opérateur. Pour accéder à un membre dune certaine dimension [Time].[1997] member 1997 of the level Year Pour accéder à un certain niveau dune dimension [Time].[Year] Year Level Pour accéder à une fonction [Time].[Year].Members operation Members
-15- A propos des tuples : Ils doivent être cohérents : -Chaque tuple spécifié doit inclure des membres appartenant à une même dimension -Les tuples spécifiés peuvent correspondre à différents niveaux de hiérarchie {([Time].[1997], [Store].[Canada]), ([Time].[1998], [Store].[USA]), ([Time].[1998].[9-1998], [Store].[Canada])} Le langage MDX
-16- CROSSJOIN : Un axe peut être défini comme le produit cartésien de différents ensembles select { CrossJoin ( {([Time].[1997].[Q1]), ([Time].[1997].[Q2])}, {([Measures].[Unit Sales]), ([Measures].[Store Sales])} ) } on columns, { ([Product].[Drink].Children) } on rows from [Sales] Le langage MDX
-17- Les opérations : x.Members = ensemble des membres dun niveau ou dune dimension donnée x.Children = ensemble des enfants du membre x DESCENDANTS (x, l) = ensemble des descendants dun membre x au niveau l Le langage MDX
-18- Exemple pour lopérateur DESCENDANTS SELECT {([Measures].[Store Sales])} On COLUMNS, DESCENDANTS ([Time].[1998], [Quarter]) ON ROWS FROM [SALES] Le langage MDX
-19- A propos du slicer WHERE permet de sélectionner une tranche du cube On spécifie la tranche en utilisant des membres qui ne font pas partie des dimensions utilisées au niveau des axes ON ROWS et ON COLUMNS SELECT {([Measures].[Unit Sales])} ON COLUMNS, {([Time].[Year].Members)} ON ROWS FROM SALES WHERE ([Store].[USA].[WA]) -> tranche de létat de WA Il nest pas autorisé de préciser une tranche avec plus dun membre dune même dimension Le langage MDX
-20- Membres calculés Ils sont utilisés pour calculer des mesures et faire des comparaisons with member [Measures].[Store Profit] as '([Measures].[Store Sales] - [Measures].[Store Cost])' select {[Measures].[Store Profit]} ON COLUMNS, {[Time].[Year].Members} ON ROWS from [Sales] where [Store].[All Stores].[USA].[WA] Le langage MDX
-21- Fonctions de calcul SUM ( set, expression ) MAX ( set, expression ) AVG( set, expression ) MIN( set, expression ) AVG([Time].Members, [Measures].[Store Profit]) Le langage MDX
-22- Un exemple de calcul with member [Store].[USA+Canada] as 'Sum({[Store].[All Stores].[USA], [Store].[All Stores].[Canada]}, [Measures].[Store Sales])' select {[Store].[All Stores].[USA], [Store].[All Stores].[Canada], [Store].[USA+Canada]} ON COLUMNS, Descendants([Time].[1997], [Time].[Quarter]) ON ROWS from [Sales] Le langage MDX
Mise en œuvre du langage MDX -3 ème partie- A vous de jouer … -23-