here - Hugo Alatrista

Transcription

here - Hugo Alatrista
OLAP : Mondrian + Pentaho Maguelonne Teisseire Hugo Alatrista Salas – hugo.alatrista-­‐[email protected] Flavien Bouillot Outils Open Source • 
• 
• 
• 
• 
Mondrian : serveur OLAP JFreeReport : ou9l de « Repor9ng » KeHle : ou9ls ETL Pentaho : ou9ls pour faire « Business Intelligence » Weka : ou9ls de fouille de données 2 Mondrian •  Serveur OLAP codé en Java •  U9lise le langage MDX (Mul9Dimensional eXpresion) et XML pour l’analyse XMLA •  Spécifica9ons JOLAP (Api Java OLAP) •  Modèle ROLAP •  Développé pour la société Pentaho 3 Pentaho • 
• 
• 
• 
Ensemble d’ou9ls pour faire de « Business Intelligence » Il existe une version propriétaire et une version open source Il s’appuie sur Mondrian pour faire du MDX Installa9on rela9vement facile (sauf pour Tomcat) 4 Motivation 1 SELECT Magasin.CP , SUM(Ventes) FROM… 34000 342 59100 110 SELECT Magasin.CP, Date.Mois, SUM(Ventes) from… 34000 janvier 33 34000 février 11 34000 mars 4 59100 janvier 45 … … … 5 Motivation 2 •  Comment faire mieux? janvier février 34000 ? ? mars … ? … … 59100 … … ? ? ? … … 6 MDX •  Mul9Dimensional eXpresion •  Permet de faire des requêtes très complexes •  Syntaxe très naturelle •  Qui u9lise MDX? MS SQL Server 200X, Oracle, SSAS, icCube, MicroStrategy Intelligence Server, … 7 Premier exemple SELECT {[date].[year].[mois].MEMBERS} ON COLUMNS, {[Magasins].[villes].CHILDRENS} ON ROWS FROM [Ventes] 8 Premier exemple Projec9on SELECT {[date].[year].[mois].MEMBERS} ON COLUMNS, {[Magasins].[villes].CHILDRENS} ON ROWS FROM [Ventes] Colonnes Cube (fait) Lignes 9 Attention à la syntaxe du MDX /* La syntaxe du MDX faire aHen9on */ SELECT {collec9on 0} ON COLUMNS, {collec9on 1} ON ROWS ... {collec9on n} ON AXIS(n) // il se peut FROM [cube] WHERE (tuple) // appelé "slicer dimension" 10 RAPPEL DE CONCEPTS BASIQUES 11 Dimensions et membres •  Dimensions (axes dans un cube) peut contenir différents niveaux de granularité •  Chaque niveau a un nombre déterminé de membres •  Les membres par default d’une dimension sont les éléments les plus généraux (ALL) 12 Axes •  Sont des dimensions qui par9cipent à la forma9on d’un cube (qui représente des faits) •  Une axe peut contenir plusieurs dimensions en concurrence 13 Masures •  AHributs du cube, généralement numériques (associés aux faits) •  Peuvent être agrégées •  Toutes les mesures (indicateurs) font par9e de la dimension appelé « Measures » •  La mesure par default est la première spécifiée dans le cube (fait) 14 Tuples et Collections •  Tuple: tranche du cube ([Magasin].[Ville].[CP].[34000]) •  Collec9on : liste ordonnée de tuples {[Magasin].[Ville].[CP].MEMBERS} 15 Exemple VENTES
unitésVendues
prixUnitaire
MAGASIN
34000
Montpellier
34090
DATE
Lille
Ardennes
59100
Janvier
Février
08090
Janvier
Février
2011
2012
Action
Sport
PRODUIT
Resident Evil
Darkness 2
PES 2014
Fifa 2013
16 Exemple de hiérarchie Dimension Produit Membres de la dimension Produit Produit Produit Catégorie JeuVideo Sport PES2014 Ac9on FIFA2013 Darkness 2 Resident Evil 17 Parcourir les niveaux •  [Produit].[Catégorie].[FIFA2013] = tous les données pour FIFA2013 •  [Produit].[JeuVideo].MEMBERS = {Resident Evil 5, Darkness 2, FIFA2013, PES2014} •  [Produit].[Sport].CHILDREN = {FIFA2013, PES2014} •  [Produit].[Ac9on].[Resident Evil]:[Darkness 2] = {Resident Evil, Darkness 2} •  DESCENDANTS([Produit].[Sport], [JeuVideo]) = {FIFA2013, PES2014} 18 Une requête MDX simple SELECT {[Measures].MEMBERS} ON COLUMNS FROM [Ventes] Quelle informa9on sera montrée? 19 Une requête MDX simple SELECT {[Measures].MEMBERS} ON COLUMNS FROM [Ventes] Quelle informa9on sera montrée? 20 Solu%on : Les indicateurs (ou mesures) Différences entre MDX et SQL • 
• 
• 
• 
Les ensembles de registres doivent se déclarer avant l’instruc9on SELECT L’instruc9on FROM fait référence à un seul cube L’instruc9on WHERE permet de faire l’opéra9on slice du OLAP … 21 Exemple 1 SELECT {[Date].[Année].[2011], [Date].[Année].[2012]} ON COLUMNS, {[Magasin].[Ville].MEMBERS} ON ROWS FROM [Ventes] WHERE ([Measures].[prixUnitaire]) 2011 2012 Montpellier Lille Ardennes 22 Exemple 2 SELECT {[Date].[Year].[2011].CHILDREN} ON COLUMNS, {[Magasin].[Villes].MEMBERS} ON ROWS FROM [Ventes] WHERE ([Measures].[prixUnitaire]) Janvier Février Montpellier Lille Ardennes 23 Opération Slice Exemple : slice sur la dimension produit SELECT {[Date].[Année].[2011].CHILDREN} ON COLUMNS, {[Magasin].[Ville].MEMBERS} ON ROWS FROM [Ventes] WHERE ([Produit].[Catégorie].[Sport],[Measures].[prixUnitaire]) 24 Opérateur Filter Syntaxe : FILTER(collec9on, condi9on) Exemple : extraire le prix unitaire des produits vendus en plus de 150 unités pendant l’année 2011 SELECT {[Date].[Année].[2011].CHILDREN} ON COLUMNS, FILTER ({[Magasin].[Ville].MEMBERS}, ([Measures].
[unitésVendues], [Date].[2011]) > 150) ON ROWS FROM [Ventes] WHERE ([Measures].[prixUnitaire]) 25 Opérateur Order Syntaxe : ORDER(collec9on, expression, [, ASC | DESC | BASC | BDESC] SELECT {[Measures].MEMBERS} ON COLUMNS, ORDER ({[Magasin].[Ville].MEMBERS}, [Measures].[prixUnitaire], BDESC) ON ROWS FROM [Ventes] 26 Opérateur Head Exemple : Montrer les top-­‐10 villes en termes de unités vendus SELECT {[Measures].[unitésVendues]} ON COLUMNS, HEAD (ORDER ({[Magasin].[Ville].MEMBERS}, [Measures].
[PrixUnitaire], BDESC), 10) ON ROWS FROM [Ventes] 27 Opérateur CrossJoint Combine deux dimensions et les représente comme une seule dimension SELECT {[Date].[2011].CHILDREN} ON COLUMNS, CROSSJOIN ({[Magasin].[Ville].MEMBERS}, {[Produit].
[Catégorie].MEMBERS}) ON ROWS FROM [Ventes] WHERE ([Measures].[unitésVendues]) 28 Opérateur Non Empty Filtre les résultats en excluant les membres vides du résultat SELECT {[Date].[2011].CHILDREN} ON COLUMNS, NOT EMPTY (CROSSJOIN ({[Magasin].[Ville].MEMBERS}, {[Produit].[Catégorie].MEMBERS})) ON ROWS FROM [Ventes] WHERE ([Measures].[unitésVendues]) 29 Operations d’agrégation 1 Syntaxe : WITH MEMBER parent.name AS 'expression' WITH MEMBER [Date].[2011].[Bimestre1] AS '[Date].[2011].
[janvier] + [Date].[2011].[février]' MEMBER [Date].[2011].[Bimestre2] AS '[Date].[2011].[mars] + [Date].[2011].[avril]' SELECT {[Date].[2011].[Bimestre1], [Date].[2011].[Bimestre2]} ON COLUMNS {[Magasin].[CP].MEMBERS} ON ROWS FROM [Ventes] WHERE ([Measures].[unitésVendues]) 30 Operations d’agrégation 2 WITH MEMBER [Measures].[Profit] AS '([Measures].[PrixUnitaire] – [Measures].[PrixProduc9on])' SELECT {[Date].[2011].CHILDREN} ON COLUMNS, {[Magasin].[CP].MEMBERS} ON ROWS FROM [Ventes] WHERE ([Measures].[Profit]) 31 Références •  A Brief MDX Tutorial Using Mondrian, Wei Wang •  Pentaho User Guide hHp://www.osbi.fr/wp-­‐content/Pentaho-­‐Analysis-­‐Viewer-­‐
User-­‐Guide.pdf •  hHp://wiki.pentaho.com/ •  The Baker's Dozen: 13 Tips for Querying OLAP Databases with MDX hHp://www.devx.com/codemag/Ar9cle/37460 32 

Documents pareils