La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Mise en œuvre du langage MDX

Présentations similaires


Présentation au sujet: "Mise en œuvre du langage MDX"— Transcription de la présentation:

1 Mise en œuvre du langage MDX
-1ère partie- Présentation de l’exemple et des outils utilisés

2 Le cube Sales (1)

3 Le cube Sales (2)

4 Le cube Sales (3)

5 JRubik 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]

6 Mondrian Web Application
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]

7 Mise en œuvre du langage MDX
-2ème partie- Les bases du langage de requête MDX

8 Le langage MDX Syntaxe de base : Exemple:
SELECT <specification axe des colonnes> ON COLUMNS, <specification axe des lignes> ON ROWS FROM <NOM CUBE> WHERE <PREDICAT DE SLICE> Exemple: select {[Store]} ON COLUMNS, {[Measures]} ON ROWS from [HR]

9 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

10 Exemple de requêtes select {[1997]} ON COLUMNS from [Sales]
select {[Time].[1997]} ON COLUMNS from [Sales] select {([Time].[1997], [Product].[Food])}

11 Exemples de requêtes MDX
select { ( [Product].[All Products].[Food].[Baked Goods], [1997])} on columns from [Sales] ) } [Measures].[Unit Sales], [Product].[All Products].[Food].[Baked Goods]), [Measures].[Store Sales], [Product].[All Products].[Food].[Baked Goods]) } on columns from [Sales]

12 Exemples de requêtes MDX
select { ([Measures].[Unit Sales], [Product].[Food]), [Product].[Drink]) } on COLUMNS , { ([Time].[1997]), ([Time].[1998]) } on ROWS from [Sales]

13 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]) } Utilisation d’un prédicat de slice

14 Le langage MDX Pour accéder à un membre d’une certaine dimension
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 Le Langage MDX 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])}

16 Le Langage MDX 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]

17 Le langage MDX 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

18 Le Langage MDX Exemple pour l’opérateur DESCENDANTS
SELECT {([Measures].[Store Sales])} On COLUMNS, DESCENDANTS ([Time].[1998], [Quarter]) ON ROWS FROM [SALES]

19 Le Langage MDX 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 n’est pas autorisé de préciser une tranche avec plus d’un membre d’une même dimension

20 Le Langage MDX 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]

21 Le Langage MDX Fonctions de calcul SUM (set, expression)
MAX (set, expression) AVG(set, expression) MIN(set, expression) AVG([Time].Members, [Measures].[Store Profit])

22 Le Langage MDX 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]

23 Mise en œuvre du langage MDX
-3ème partie- Comment concevoir un cube avec Mondrian…

24 Il faut produire un fichier XML … (1)
spécifiant : le nom du cube les Measures les Dimensions -> Shared dimensions -> Multiple Hierarchies -> Parent-child hierarchies -> Snowflake schema les membres calculés les fonctions définies

25 Il faut produire un fichier XML … (2)
<Cube name="Sales"> <Table name="sales_fact_1997"/> ... </Cube> Possibilité d’utiliser <View> et <Join> pour construire des requêtes SQL plus complexes

26 Il faut produire un fichier XML … (3)
Le cube Sales a des mesures : <Measure name="Unit Sales” column="unit_sales" aggregator="sum" datatype="Integer" formatString="#,###"/> <Measure name="Store Sales" column="store_sales" aggregator="sum" datatype="Numeric" formatString="#,###.00"/> Chaque mesure a un nom, correspond à une colonne dans la table de faits et spécifie un opérateur d’agrégation tel que "sum", "count", "min", "max", "avg", and "distinct count"

27 Il faut produire un fichier XML … (4)
Le cube Sales a des dimensions : <Dimension name="Gender" foreignKey="customer_id"> <Hierarchy hasAll="true" primaryKey="customer_id"> <Table name="customer"/> <Level name="Gender" column="gender" uniqueMembers="true"/> </Hierarchy> </Dimension> L’attribut foreignKey dans <Dimension> est le nom d’une colonne de la table de faits La <Hierarchy> a un attribut clé primaire (primaryKey) Par défaut, la Hiérarchie a un élément de plus haut niveau nommé ‘All’ avec un seul membre appelé 'All {hierarchyName}'.

28 Il faut produire un fichier XML … (5)
Avec éventuellement des hiérarchies multiples : <Dimension name="Time" foreignKey="time_id"> <Hierarchy hasAll="false" primaryKey="time_id"> <Table name="time_by_day"/> <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> <Level name="Quarter" column="quarter" type="Numeric" uniqueMembers="false"/> <Level name="Month" column="month_of_year" type="Numeric" uniqueMembers="false"/> </Hierarchy> <Hierarchy name="Time Weekly" hasAll="false" primaryKey="time_id"> <Table name="time_by_week"/> <Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> <Level name="Week" column="week" uniqueMembers="false"/> <Level name="Day" column="day_of_week" type="String" uniqueMembers="false"/> </Hierarchy> </Dimension>

29 Il faut produire un fichier XML … (6)
Un exemple de schéma en étoile (La dimension Produit est constituée de 3 tables : product, product_class, product_type: <Cube name="Sales"> <Dimension name="Product" foreignKey="product_id"> <Hierarchy hasAll="true" primaryKey="product_id" primaryKeyTable="product"> <Join leftKey="product_class_id" rightAlias="product_class" rightKey="product_class_id"> <Table name="product"/> <Join leftKey="product_type_id" rightKey="product_type_id"> <Table name="product_class"/> <Table name="product_type"/> </Join> </Join> </Hierarchy> </Dimension> </Cube>

30 Il faut produire un fichier XML … (6)
1/ La constitution d’un tel fichier est complexe 2/ Il existe des outils facilitant l’écriture du fichier XML (vérification de la syntaxe) 3/ Il existe des générateurs (wizards) offrant une interface utilisateur pour générer automatiquement le fichier XML selon la bonne syntaxe : les outils existants sont cependant limités ...

31 Exemple de l’outil Cube Designer
1/ Choix du nom du cube et de la base de données

32 Exemple de l’outil Cube Designer
2/ Choix des informations utilisées

33 Exemple de l’outil Cube Designer
3/ Définition des mesures

34 Exemple de l’outil Cube Designer
4/ Définition des autres dimensions

35 Exemple de l’outil Cube Designer
5/ Sauvegarder et exploiter le fichier XML produit

36 Mise en œuvre du langage MDX
-6ème partie- A vous de jouer …


Télécharger ppt "Mise en œuvre du langage MDX"

Présentations similaires


Annonces Google