• Aucun résultat trouvé

OLAP  :     Mondrian  +  Pentaho

N/A
N/A
Protected

Academic year: 2022

Partager "OLAP  :     Mondrian  +  Pentaho"

Copied!
32
0
0

Texte intégral

(1)

OLAP  :    

Mondrian  +  Pentaho  

Maguelonne  Teisseire  

Hugo  Alatrista  Salas  –  hugo.alatrista-­‐salas@teledetec9on.fr   Flavien  Bouillot  

(2)

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  

(3)

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  

(4)

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  

(5)

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  

(6)

Motivation  2  

•  Comment  faire  mieux?  

 

janvier   février   mars   …  

34000   ?   ?   ?   …  

…   …  

59100   ?   ?   ?   …  

…   …  

6  

(7)

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  

(8)

Premier  exemple  

   

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

FROM  [Ventes]  

 

8  

(9)

Premier  exemple  

     

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

FROM  [Ventes]  

   

Lignes  

Colonnes   Cube  (fait)  

Projec9on  

9  

(10)

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  

(11)

RAPPEL  DE  CONCEPTS  BASIQUES  

11  

(12)

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  

(13)

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  

(14)

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  

(15)

Tuples  et  Collections  

•  Tuple:  tranche  du  cube      

 ([Magasin].[Ville].[CP].[34000])      

•  Collec9on  :  liste  ordonnée  de  tuples      

 {[Magasin].[Ville].[CP].MEMBERS}  

 

  15  

(16)

Exemple  

MAGASIN

34000

34090

59100

08090 Montpellier

Lille

Ardennes

PRODUIT

Resident Evil

Darkness 2

Fifa 2013 PES 2014 Action

Sport

2011 Janvier

Février Janvier

Février 2012

DATE unitésVendues

prixUnitaire VENTES

16  

(17)

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  

(18)

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  

(19)

Une  requête  MDX  simple  

SELECT  {[Measures].MEMBERS}  ON  COLUMNS     FROM  [Ventes]  

 

Quelle  informa9on  sera  montrée?  

 

19  

(20)

Une  requête  MDX  simple  

SELECT  {[Measures].MEMBERS}  ON  COLUMNS     FROM  [Ventes]  

 

Quelle  informa9on  sera  montrée?  

   

Solu%on  :  L es   ind icate urs

 (o u  m esu res

)   20  

(21)

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  

(22)

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  

(23)

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  

(24)

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  

(25)

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  

(26)

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  

(27)

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  

(28)

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  

(29)

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  

(30)

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  

(31)

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  

(32)

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  

Références

Documents relatifs

our multifunction model, the multidimensional table allows displaying the ag- gregation functions with their inputs, execution orders and constraints; however, the

Nous proposons de modéliser les données dans un système OLAP par extension du concept de constellation (Ravat et al., 2007) afin de permettre sa personnalisation et d’associer

To cite this version : Chevalier, Max and El Malki, Mohammed and Kopliku, Arlind and Teste, Olivier and Tournier, Ronan Benchmark for OLAP on NoSQL Technologies.. Any

Now, in order to illustrate the relevance of the EnKF estimation compared to other particle filters, mainly, sequential importance sampling (SIS) and sequential importance

This extension uses a query similarity measure tailored for the syntax of OLAP queries that compares the 3 parts of queries (the group-by set, the selection predicates set and

However, while TPC acknowledges the importance of the explorative nature of decision support queries (see e.g., the OLAP interactive queries in the TPC-DS benchmark), none of

Dans ce cadre, un décideur peut vouloir utiliser la graduation en fonction du pays pour les clients français tan- dis qu’il souhaite utiliser simultanément une graduation

Les élèves doivent retrouver les couleurs des différentes surfaces d’un tableau de Mondrian en lumière blanche.. Une fois que les élèves ont proposé une solution