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 -1 ère partie- Présentation de lexemple et des outils utilisés -1-

Présentations similaires


Présentation au sujet: "Mise en œuvre du langage MDX -1 ère partie- Présentation de lexemple et des outils utilisés -1-"— Transcription de la présentation:

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

2 Le cube Sales (1) -2-

3 Le cube Sales (2) -3-

4 Le cube Sales (3) -4-

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

6 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]

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

8 -8- Principes des requêtes MDX (1) Les axes représentent des dimensions et/ou des Measures Slicer représente le prédicat de sélection

9 -9- Principes des requêtes MDX (2) Il est possible de faire appel à : - Des ensembles : {} - Des tuples : () -Des noms associés aux éléments dun cube (dimensions, levels, members and properties) : [] ON ROWS et ON COLUMNS permettent dexprimer la configuration daffichage souhaitée

10 -10- Principes des requêtes MDX (3) 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

11 -11- Principes des requêtes MDX (4) A propos des ensembles : Une expression qui désigne un ensemble de membres associés à un tuple {([Time].[1997]), ([Time].[1998]), ([Time].[1998].[9-1998])} Une telle expression peut être utilisée pour désigner un axe dune requête MDX

12 -12- Principes des requêtes MDX (5) 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])}

13 -13- Principes des requêtes MDX (6) CROSSJOIN : Un axe peut être défini comme le produit cartésien de différents ensembles CROSSJOIN({[Time].[Year].Members}, {[Store].[USA],[Store].[Canada]})

14 -14- Principes des requêtes MDX (7) 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

15 -15- Principes des requêtes MDX (8) Exemple pour lopérateur DESCENDANTS SELECT {([Measures].[Store Sales])} On COLUMNS, DESCENDANTS ([Time].[1998], [Quarter]) ON ROWS FROM [SALES]

16 -16- Principes des requêtes MDX (9) 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 Pas autorisé de préciser une tranche avec plus dun membre dune même dimension

17 -17- Principes des requêtes MDX (10) 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]

18 -18- Principes des requêtes MDX (11) Fonctions de calcul SUM ( set, expression ) MAX ( set, expression ) AVG( set, expression ) MIN( set, expression ) AVG([Time].Members, [Measures].[Store Profit])

19 -19- Principes des requêtes MDX (12) 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]

20 Mise en œuvre du langage MDX -3 ème partie- Application des requêtes MDX sur le cube Sales -20-

21 -21- Forme la plus simple de requête Exemple : select [Measures].Members ON COLUMNS, [Store].Members ON ROWS from [Sales]

22 -22- Sélection de tuples (1) Exemple : SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA], [Store].[Store State].[WA]} ON ROWS FROM [Sales]

23 -23- Sélection de tuples (2) Exemple (pour avoir les enfants à lintérieur dune hiérarchie): SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA].CHILDREN, [Store].[Store State].[WA].CHILDREN} ON ROWS FROM [Sales]

24 -24- Sélection de tuples (3) Exemple ( pour avoir les descendants à lintérieur dune hiérarchie ): SELECT Measures.MEMBERS ON COLUMNS, {[Store].[Store State].[CA], DESCENDANTS([Store].[Store State].[CA], [Store City])} ON ROWS FROM [Sales]

25 -25- Slicing (1) Exemple ( on choisit une des mesures ): SELECT {[Store Type].[Store Type].MEMBERS} ON COLUMNS, {[Store].[Store State].MEMBERS} ON ROWS FROM [Sales] WHERE ([Measures].[Customer Count])

26 -26- Slicing (2) Exemple ( on choisit une des mesures et une année ): select {[Store Type].[Store Type].Members} ON COLUMNS, {[Store].[Store State].Members} ON ROWS from [Sales] where ([Measures].[Customer Count], [Time].[1997])

27 -27- Calculs dans les requêtes (1) Exemple (on affiche le profit sur deux semestres de 97): WITH MEMBER [Time].[1997].[H1] AS '[Time].[1997].[Q1] + [Time].[1997].[Q2]' MEMBER [Time].[1997].[H2] AS '[Time].[1997].[Q3] + [Time].[1997].[Q4]' SELECT {[Time].[1997].[H1], [Time].[1997].[H2]} ON COLUMNS, [Store].[Store Name].MEMBERS ON ROWS FROM [Sales] WHERE (Measures.Profit)

28 -28- Calculs dans les requêtes (2) Exemple ( on affiche les pourcentages de profits sur des périodes de 97 ): with member [Measures].[ProfitPercent] as '(([Measures].[Store Sales] - [Measures].[Store Cost]) / [Measures].[Store Cost])', FORMAT_STRING = "#.00%" member [Time].[First Half 97] as '([Time].[1997].[Q1] + [Time].[1997].[Q2])' member [Time].[Second Half 97] as '([Time].[1997].[Q3] + [Time].[1997].[Q4])' select {[Time].[First Half 97], [Time].[Second Half 97], [Time].[1997].Children} ON COLUMNS, {[Store].[Store Name].Members} ON ROWS from [Sales] where [Measures].[ProfitPercent]

29 -29- Crossjoin (1) Exemple : SELECT [Product].[Product Family].MEMBERS ON COLUMNS, {CROSSJOIN([Customers].[City].MEMBERS, [Time].[Quarter].MEMBERS)} ON ROWS FROM [Sales] WHERE (Measures.[Unit Sales])

30 -30- Crossjoin (2) Exemple : SELECT [Product].[Product Family].MEMBERS ON COLUMNS, NON EMPTY {CROSSJOIN([Customers].[City].MEMBERS, [Time].[Quarter].MEMBERS)} ON ROWS FROM [Sales] WHERE (Measures.[Unit Sales])

31 -31- Filter Exemple : select NON EMPTY {[Store Type].[Store Type].Members} ON COLUMNS, Filter({[Store].[Store City].Members}, (([Measures].[Unit Sales], [Time].[1997]) > 500.0)) ON ROWS from [Sales] where ([Measures].[Profit], [Time].[1997])

32 -32- Comptage Exemple ( On prend les 12 villes ayant le mieux vendu ): SELECT Measures.MEMBERS ON COLUMNS, TOPCOUNT({[Store].[Store City].MEMBERS}, 12, Measures.[Sales Count]) ON ROWS FROM [Sales]

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

34 -34- 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

35 -35- Il faut produire un fichier XML … (2)... CubeTableCube Possibilité dutiliser et pour construire des requêtes SQL plus complexes

36 -36- Il faut produire un fichier XML … (3) Le cube Sales a des mesures : Measure Measure Chaque mesure a un nom, correspond à une colonne dans la table de faits et spécifie un opérateur dagrégation tel que "sum", "count", "min", "max", "avg", and "distinct count"

37 -37- Il faut produire un fichier XML … (4) Le cube Sales a des dimensions : DimensionHierarchyTableLevelHierarchyDimension Lattribut foreignKey dans est le nom dune colonne de la table de faits La 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}'.

38 -38- Il faut produire un fichier XML … (5) Avec éventuellement des hiérarchies multiples : DimensionHierarchyTableLevel Hierarchy TableLevel HierarchyDimension

39 -39- 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 : CubeDimensionHierarchyTable HierarchyDimensionCube

40 -40- Il faut produire un fichier XML … (6) 1/ La constitution dun 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...

41 -41- Exemple de loutil Cube Designer 1/ Choix du nom du cube et de la base de données

42 -42- Exemple de loutil Cube Designer 2/ Choix des informations utilisées

43 -43- Exemple de loutil Cube Designer 3/ Définition des mesures

44 -44- Exemple de loutil Cube Designer 4/ Définition des autres dimensions

45 -45- Exemple de loutil Cube Designer 5/ Sauvegarder et exploiter le fichier XML produit

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


Télécharger ppt "Mise en œuvre du langage MDX -1 ère partie- Présentation de lexemple et des outils utilisés -1-"

Présentations similaires


Annonces Google