Upload
launce-ben
View
116
Download
3
Embed Size (px)
Citation preview
Mise en œuvre du langage MDX
-1ère partie- Présentation de l’exemple
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 <specification axe des colonnes> ON COLUMNS, <specification axe des lignes> ON ROWS FROM <NOM CUBE> WHERE <PREDICAT DE SLICE>
select {[Store]} ON COLUMNS, {[Measures]} ON ROWSfrom [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 d’une 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 d’axe c’est 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 COLUMNSfrom [Sales]
-11-
select {([Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), ([Measures].[Store Sales], [Product].[All Products].[Food].[Baked Goods])} ON COLUMNSfrom [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 d’un 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 d’une certaine
dimension[Time].[1997] member 1997 of the level Year
• Pour accéder à un certain niveau d’une 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 d’un niveau ou d’une dimension donnée
• x.Children = ensemble des enfants du membre x
• DESCENDANTS (x, l) = ensemble des descendants d’un membre x au niveau l
Le langage MDX
-18-
Exemple pour l’opé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 ROWSFROM SALESWHERE ([Store].[USA].[WA]) -> tranche de l’état de WA
Il n’est pas autorisé de préciser une tranche avec plus d’un membre d’une 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 ROWSfrom [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