OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+%...

32
OLAP : Mondrian + Pentaho Maguelonne Teisseire Hugo Alatrista Salas – [email protected] Flavien Bouillot

Transcript of OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+%...

Page 1: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

OLAP  :    Mondrian  +  Pentaho  Maguelonne  Teisseire  Hugo  Alatrista  Salas  –  hugo.alatrista-­‐[email protected]  Flavien  Bouillot  

Page 2: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 3: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 4: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 5: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Motivation  1  SELECT  Magasin.CP  ,  SUM(Ventes)  FROM…        SELECT  Magasin.CP,  Date.Mois,  SUM(Ventes)  from…  

34000   342  

59100   110  

34000   janvier   33  

34000   février   11  

34000   mars   4  

59100   janvier   45  

…   …   …  

5  

Page 6: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Motivation  2  •  Comment  faire  mieux?    

janvier   février   mars   …  

34000   ?   ?   ?   …  

…   …  

59100   ?   ?   ?   …  

…   …  

6  

Page 7: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 8: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Premier  exemple      SELECT  {[date].[year].[mois].MEMBERS}  ON  COLUMNS,  {[Magasins].[villes].CHILDRENS}  ON  ROWS  FROM  [Ventes]    

8  

Page 9: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Premier  exemple        SELECT  {[date].[year].[mois].MEMBERS}  ON  COLUMNS,  {[Magasins].[villes].CHILDRENS}  ON  ROWS  FROM  [Ventes]      

Lignes  Colonnes  

Cube  (fait)  

Projec9on  

9  

Page 10: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 11: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

RAPPEL  DE  CONCEPTS  BASIQUES  

11  

Page 12: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 13: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 14: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 15: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Tuples  et  Collections  •  Tuple:  tranche  du  cube        ([Magasin].[Ville].[CP].[34000])      •  Collec9on  :  liste  ordonnée  de  tuples        {[Magasin].[Ville].[CP].MEMBERS}  

    15  

Page 16: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Exemple  MAGASIN

34000

34090

59100

08090

Montpellier

Lille

ArdennesPRO

DUIT

Resident Evil

Darkness 2

Fifa 2013

PES 2014

Action

Sport

2011Janvier

FévrierJanvier

Février 2012

DATE

unitésVenduesprixUnitaire

VENTES

16  

Page 17: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Exemple  de  hiérarchie    

Produit  

Catégorie  

JeuVideo  

Produit  

Sport   Ac9on  

Resident  Evil  Darkness  2  FIFA2013  PES2014  

Dimension    Produit   Membres  de  la  dimension  Produit  

17  

Page 18: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 19: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Une  requête  MDX  simple  SELECT  {[Measures].MEMBERS}  ON  COLUMNS    FROM  [Ventes]    Quelle  informa9on  sera  montrée?    

19  

Page 20: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

Une  requête  MDX  simple  SELECT  {[Measures].MEMBERS}  ON  COLUMNS    FROM  [Ventes]    Quelle  informa9on  sera  montrée?      

Solu%on  :  Les  indicateurs  (ou  mesures)   20  

Page 21: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 22: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 23: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 24: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 25: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 26: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 27: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 28: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 29: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 30: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 31: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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  

Page 32: OLAP:%% Mondrian+% Pentaho%hugo.alatristasalas.free.fr/Cours/MDX_DW_OLAP.pdf · OLAP:%% Mondrian+% Pentaho% Maguelonne)Teisseire) Hugo)AlatristaSalas)– hugo.alatristasalas@teledetec9on.fr

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