Vous êtes sur la page 1sur 48

Requêtes

 OLAP  
Rappels  
Au  cours  précédent,  on  a  vu  
•  La  dis9nc9on  OLTP  /  OLAP  
•  Le  modèle  mul9dimensionnel,  et  son  implémenta9on  en  
rela9onnel  (schéma  en  étoile/flocon)  
•  La  représenta9on  des  faits  et  des  dimensions  à  l’aide  d’un  cube  
 

L. Jourdan – Aide à la décision


Rappels  
•  Une  mesure  =  une  
valeur  selon  n  
dimensions,  d'où  la  
no9on  de  (hyper)cube  
de  données.  
•   Un  fait  est  un  cube  
atomique  à  l’intérieur  
d’un  plus  grand  cube.  
•   Requête  OLAP  :  
manipula9on  de  ce  
cube.    
  L. Jourdan – Aide à la décision
Requêtes  SIO/SID  
•  Dans  un  SIO  :  
–  Requêtes  transac9onnelles  
–  Insert,  update,  delete,  select  
–  Requêtes  portant  sur  peu  de  tuples  
•  Dans  un  SID  :  
–  Requêtes  analy9ques  
–  insert  (par  lots)  et  select  
–  Manipula9on  du  cube  et  des  dimensions  avec  
leurs  hiérarchies  :  drill  down,  slice,  dice,…  
 
L. Jourdan – Aide à la décision 4  
Exemples  de  requêtes  OLAP  
•  Naviga9on  dans  un  cube  
«  Nombre  de  livres  pour  enfants  vendus  en  janvier,  
indépendamment  du  lieu  »  
•  Naviga9on  à  travers  les  hiérarchies  
«  Montant  des  ventes  par  famille  de  produits,  par  
trimestre  et  région  »  
•  Classement  
«  Les  10  livres  les  mieux  vendus  en  2013,  par  
région  »  

L. Jourdan – Aide à la décision 5  


Manipula9on  du  cube  
Une  requête  OLAP  permet  de  naviguer  dans  le  modèle  mul9  
dimensionnel  :  
•  Rotate  :  Choisir  le  pivot  d’analyse  en  faisant  tourner  le  cube    
•  Applica9on  d’un  critère  de  sélec9on  :  
–  Slice  :  sélec9on  sur  une  dimension  
–  Dice  :  sélec9on  sur  plusieurs  dimensions  
•  Naviga9on  dans  les  hiérarchies  :  
–  Roll  up  :  naviguer  vers  une  granularité  plus  grossière  
–  Drill  down  :  vers  une  granularité  plus  fine  (zoom)  
•  Modifica9on  du  nombre  de  dimensions  :  
–  Drill  out/split  :  ajouter  des  dimensions  
–  Drill  in/merge  :  enlever  des  dimensions  
•  Nous  ne  verrons  ici  que  des  opéra1ons  portant  sur  1  cube,  il  existe  aussi  
des  opéra1ons  perme9ant  de  faire  le  lien  entre  plusieurs  cubes.  

L. Jourdan – Aide à la décision 6  


Rota9on  
Change  l’orienta9on  dimensionnelle  de  l’analyse.  Par  
exemple  :  
  2009   2010   2011   2009   2010   2011  
Oeuf   221   263   139   IDF   101   120   52  
Viande   275   257   116   Nord   395   400   203  

produit   lieu   produit  


lieu  

temps   temps  

L. Jourdan – Aide à la décision 7  


Slice  
•  Permet  d’extraire  des  informa9ons  représentées  
par  un  cube,  en  fonc9on  des  termes  définis  pour  
une  dimension.  
•  Le  paramètre  de  l’opérateur  slice  est  un  critère  
de  sélec9on  portant  sur  une  dimension.  
•  Exemples  :  
–  (mois  >  2)  and  (mois  <=  11)  and  (mois  <>  4)  
–  Pays  =  ‘DE’  and  code_postal  =  10179  (ici,  dimension  
géographique  avec  plusieurs  niveaux)    
•  Nota9on  :  slice(F,D)  sélec9on  des  «  tranches  »  
qui  sa9sfont  la  formule  F  sur  la  dimension  D.  
L. Jourdan – Aide à la décision 8  
Slice  -­‐  Exemple  
•  Slice(année  =  2011  ou  année  =  2013,  Temps)  

Produit  
(catégorie)   Lieu    
(ville)  

11   13   Temps    
(année)  

L. Jourdan – Aide à la décision 9  


Dice  
•  Applica9on  d’une  sélec9on  sur  plusieurs  
dimensions,  donc  peut-­‐être  vu  comme  la  
combinaison  de  plusieurs  slices.  
•  Slice  produit  des  «  tranches  »  du  cube  ini9al,  
Dice  produit  des  «  sous-­‐cubes  »  

L. Jourdan – Aide à la décision 10  


Dice  -­‐  Exemple  
Slice(année=2011  or  année  =  2013,  Temps)    
and  slice(famille  =  ‘médias’,Produit)    
and  slice(ville=‘Lille’  or  ville  =  ‘Lyon’,  Lieu)  

Produit  
(catégorie)  

Lieu  
CD   (ville)  
DVD  
Blu  ray  

Lille  
Lyon  
11   13  
Temps  
(année)  
L. Jourdan – Aide à la décision 11  
Roll  up,  Drill  down  
Opéra9on  modifiant  la  granularité  :  
•  Forage  vers  le  haut,  roll  up  :  comme  on  va  
vers  une  granularité  plus  grossière,  il  faut  
u9liser  des  fonc9ons  d’agréga9on  pour  
calculer  les  nouvelles  mesures  (aoen9on  aux  
mesures  non  addi9ves  ou  semi  addi9ves)  
•  Forage  vers  le  bas,  drill  down  :  on  ob9ent  des  
données  plus  détaillées,  jusqu’à  la  granularité  
de  l’entrepôt.  

L. Jourdan – Aide à la décision 12  


Roll  up,  Drill  down  
Roll  up  
09 10 11
Dimension  
Roll  up   Alim. 496 520 255 Temps  

09-11 09 10 11 1S09 2S09 1S10 2S10 1S11


Fruits 623 Fruits 221 263 139 Fruits 100 121 111 152 139
Viande 648 Viande 275 257 116 Viande 134 141 120 137 116

09 10 11
Drill  down  
Pomme 20 19 22
… … … …
Boeuf 40 43 48 Drill  down  
Dimension  Produit  
L. Jourdan – Aide à la décision
Roll  up  –  Exemple  
Roll  up  de  (catégorie/mois/ville)  vers  (famille/trimestre/ville)  
Produit  
(catégorie)   Produit  
(famille)  

Lieu     Lieu    
CD   (ville)  
(ville)  
DVD  
Blu  ray  
Viande   Médias  
Fruit   Alim.  
1   2   3   Temps   T1  T2   Temps  
(mois)   (trimestre)  

L. Jourdan – Aide à la décision 14  


Drill  down  -­‐  Exemple  
Drill  down  de  (famille/trimestre/ville)  vers  (catégorie/mois/ville)    
   
Produit   Produit  
(famille)   (catégorie)  

Lieu    
(ville)   Lieu    
CD  
(ville)  
DVD  
Blu  ray  
Médias   Viande  
Alim.   Fruit  
T1  T2   Temps   1   2   3   Temps  
(trimestre)   (mois)  

L. Jourdan – Aide à la décision 15  


Split  /  Merge  
•  Split  :    
–  un  cube  à  n  dimensions  est  complété  par  k  
dimensions.    
–  On  ob9ent  des  données  plus  détaillées,  pas  à  cause  
du  changement  de  granularité  mais  parce  qu’on  
détaille  en  fonc9on  de  nouvelles  dimensions  
•  Merge  :    
–  On  supprime  des  dimensions  
–  On  ob9ent  des  données  moins  détaillées,  parce  qu’il  y  
a  moins  de  dimensions  (mais  pas  de  changement  de  
granularité)  
 
L. Jourdan – Aide à la décision 16  
Split  -­‐  exemple  
•  Split  de  la  dimension  Temps  (passage  de  1  à  2  dimensions)  

Produit   Produit  
(catégorie)   (catégorie)  

CD   30   CD   5   5   10   10  

DVD   40   DVD   10   15   5   10  

Blu  ray   20   Blu  ray   3   3   10   4  

Viande   15   Viande   5   4   3   3  

Fruit   20   Fruit   5   5   5   5  

T1   T2   T3   T4   Temps  
(trimestre)  

L. Jourdan – Aide à la décision 17  


Merge  -­‐  exemple  
•  Merge  de  la  dimension  Temps  (passage  de  2  à  1  dimensions)  

Produit   Produit  
(catégorie)   (catégorie)  

CD   5   5   10   10   CD   30  

DVD   10   15   5   10   DVD   40  

Blu  ray   3   3   10   4   Blu  ray   20  

Viande   5   4   3   3   Viande   15  

Fruit   5   5   5   5   Fruit   20  
T1   T2   T3   T4   Temps  
(trimestre)  

L. Jourdan – Aide à la décision 18  


Implémenta9ons  
•  Il  existe  principalement  2  approches  
–  Extension  du  langage  SQL  (SQL-­‐OLAP),  pour  un  cube  
stocké  dans  un  SGBD  rela9onnel,  sous  la  forme  de  
schéma  en  étoile  ou  en  flocon.  On  parle  de  modèle  
ROLAP  ou  Rela9onal  -­‐  OLAP  
–  Expression  mul9dimensionnelle  (ex  :  MDX  de  
Microsov)  s’appliquant  directement  à  un  SGBD  
mul9dimensionnel.  On  parle  de  modèle  MOLAP  ou  
Mul9dimensional  –  OLAP  
Il  existe  aussi  un  modèle  hybride  entre  ces  2  solu1ons,  
appelé  HOLAP  pour  Hybrid  -­‐  OLAP  

L. Jourdan – Aide à la décision 19  


Produits  commerciaux  
Source Wikipedia
•  ROLAP : Microsoft SQL Service Analysis Services
(SSAS), MicroStrategy, SAP Business Objects, Oracle BI
Suite EE (précédemment Siebel Analytics) et Tableau
Software + solution open source Mondrian.
•  MOLAP : IBM Cognos Powerplay, Oracle Database
OLAP Option, ElegantJ BI, MicroStrategy, Microsoft
SSAS (langage MDX), Essbase de Hyperion, TM1,
Jedox, icCube + solution open source Palo.
•  HOLAP : Holos de Crystal Decisions, Microsoft SSAS,
Oracle Database OLAP Option, MicroStrategy,  SAP  BI  
Accelerator

L. Jourdan – Aide à la décision 20  


MOLAP  

21  
Principes  
•  Stockage  des  données  de  manière  
mul9dimensionnelle,  dans  des  tableaux  à  n  
dimensions  (hypercubes)  
•  Pré-­‐calcul  des  mesures  donc  des  agréga9ons,  
sur  tous  les  niveaux  des  hiérarchies  
•  Pas  de  cadre  technologique  commun  :  chaque  
produit  a  ses  stratégies  de  stockage    
•  Langage  de  requête  MDX  

L. Jourdan – Aide à la décision


MDX  
•  MDX  =  Mul1dimensional  expressions  
•  De  Microsov,  non  standard  mais  adopté  par  
beaucoup  d’éditeurs.    
•  Proche  du  modèle  conceptuel  :  naviga9on  
dans  les  hiérarchies,  lecture  des  mesures  des  
faits,  et  des  membres  des  dimensions.  

L. Jourdan – Aide à la décision 23  


MDX  -­‐  exemple  
Faits  Ventes  de  voitures  :      
•  Mesures  :  price,  amount,  …  
•  Dimensions  :  Cars  (<  Category),     Price  
Customers,  Salesmen,  Time   All   14508000  
•  Cube  appelé  «  Car  Transac9ons  »   Conver9ble   3873000  
 
Coupe   5077000  
SELECT  [Measures].[Price]  ON  
COLUMNS,   Hatchback   235500  
[Cars].[Category].MEMBERS  ON   Sedan   4173000  
ROWS  
SUV   905500  
From  [Car  Transac9ons]  
  Wagon   244000  
D’après  
hop://www.learn-­‐with-­‐video-­‐tutorials.com/mdx-­‐ Unknown   (null)  
video-­‐tutorial-­‐free  
 

L. Jourdan – Aide à la décision 24  


Avantages/Inconvénients  
•  Avantage  :  
–  Bonnes  performances  car  pré-­‐calculs,  indexa9on  
adaptée  
•  Inconvénients  :  
–  Comme  on  stocke  tous  les  calculs,  ça  génère  un  
grand  volume  d’informa9ons  (mais  parfois  
stratégies  de  compression)  
–  La  phase  de  chargement  est  longue  (parfois  
maintenance  incrémentale  possible)  

L. Jourdan – Aide à la décision 25  


ROLAP  
Principes  
•  U9lisa9on  d’un  SGBD  rela9onnel  pour  stocker  
un  SID  mul9dimensionnel  :  modèle  en  étoile  /  
flocon  
•  Langage  SQL  étendu  à  OLAP  
•  Nécessité  d’op9miser  les  requêtes  :  
indexa9on,  par99onnement,  matérialisa9on  
des  vues.  

L. Jourdan – Aide à la décision


Avantages/Inconvénients  
•  Avantage  :  
–  Les  données  de  produc9on  (le  SIO)  u9lisent  un  
SGBD  rela9onnel,  on  reste  dans  les  mêmes  
technologies.  
–  Modèle  rela9vement  simple  
–  Mise  à  jour  incrémentale  plus  simple  qu’en  
MOLAP.  
•  Inconvénients  :  
–  Modèle  pas  toujours  adapté  aux  requêtes  OLAP  
complexes,  problèmes  de  performances  
L. Jourdan – Aide à la décision 28  
SQL-­‐OLAP  
•  Extension  de  SQL  3  (SQL’99).  
•  On  u9lise  les  opérateurs  SQL  classiques  :  
–  Jointures  (tables  de  faits  /  dimensions),  sélec9ons,  
projec9ons,  group  by,  …  
•  SQL  est  enrichi  avec  de  nouveaux  opérateurs  :  
–  Clause  Group  by,  avec  Cube,  Rollup  et  Grouping  sets    
–  Fonc9on  grouping  
–  Expressions  analy9ques  :  
•  Fenêtre  glissante  
•  Fonc9ons  de  classement  Rank,  NTile  

L. Jourdan – Aide à la décision 29  


Group  By  
•  Group  by  ao1,  …,  aon  permet  de  par99onner  les  données  
en  meoant  dans  le  même  groupe  les  tuples  qui  ont  la  
même  valeur  pour  (ao1,  …  aon)  
•  Dans  le  select,  peuvent  figurer  ao1,  …,  aon  et  des  fonc9ons  
de  groupe  (count,  sum,  avg,  min,  max)  portant  sur  
n’importe  quel  aoribut.  
•  Clause  Having  pour  sélec9onner  les  groupes  
•  Exemple  :  (on  suppose  une  granularité  jour/produit)  
Select mois, annee, sum(CA)
From Ventes V
Join Temps T on V.TID = T.TID
Join Produit P on V.PID = P.PID
Where P.famille = ‘Médias ’ –-> slice dimension Produit
Group by mois, annee –-> rollup sur la dimension temps
 
L. Jourdan – Aide à la décision 30  
Exemple  
SELECT fact1_id, Fact1_id   Fact2_id   Num   Sales_val  
fact2_id, 1   1   83   4363.55  
COUNT(*) AS num, 1   2   96   4794.76  
SUM(sales_value) AS 1   3   93   4718.25  
sales_val 1   4   105   5387.45  
FROM fact_tab 1   5   101   5027.34  
GROUP BY 2   1   109   5652.84  
fact1_id,fact2_id 2   2   96   4583.02  
ORDER BY 2   3   110   5555.77  
fact1_id,fact2_id; 2   4   113   5936.67  
2   5   94   4508.74  

L. Jourdan – Aide à la décision 31  


Group  by  rollup  
•  Calcule  les  fonc9ons  (sum,  count,  …)  à  tous  les  
niveaux  d’une  hiérarchie  d’une  dimension,  
ainsi  que  le  résultat  final.  
–  Group  by  rollup  (ao1,  ao2,  ao3)  définit  des  
groupements  par  (ao1,  ao2,  ao3),  par  (ao1,  ao2),  
par  (ao1)  et  par  ().  
–  S’il  y  a  n  aoributs  dans  le  group  by  rollup,  on  aura  
donc  n+1  niveaux  d’agréga9on.  

L. Jourdan – Aide à la décision 32  


Exemple  
Fact1_id   Fact2_id   Sales_val  
SELECT fact1_id,
1   1   4363.55  
fact2_id,
1   2   4794.76  
SUM(sales_value) AS
1   3   4718.25  
sales_val 1   4   5387.45  
FROM fact_tab 1   5   5027.34  
GROUP BY ROLLUP 1   24291.35  

(fact1_id,fact2_id) 2   1   5652.84  
2   2   4583.02  
ORDER BY
2   3   5555.77  
fact1_id,fact2_id;
2   4   5936.67  
2   5   4508.74  
2   26237.04  
50528.39  
L. Jourdan – Aide à la décision 33  
Group  by  cube  
•  Calcule  les  fonc9ons  (sum,  count,  …)  pour  
toutes  les  combinaisons  possibles  de  
groupement  
–  Group  by  cube  (ao1,  ao2,  ao3)  définit  des  
groupements  par  (ao1,  ao2,  ao3),  (ao1,  ao2),  (ao2,  
ao3),  (ao1,  ao3),  (ao1),  (ao2),  (ao3)  et  ().  
–  S’il  y  a  n  aoributs  dans  le  group  by  cube,  on  aura  
donc  2n  niveaux  d’agréga9on.  

L. Jourdan – Aide à la décision 34  


Exemple  
Fact1_id   Fact2_id   Sales_val  
1   1   4363.55  
SELECT fact1_id, 1   2   4794.76  
fact2_id, 1   3   4718.25  
1   4   5387.45  
SUM(sales_value) AS 1   5   5027.34  
sales_val 1   24291.35  
2   1   5652.84  
FROM fact_tab 2   2   4583.02  

GROUP BY CUBE 2   3   5555.77  


2   4   5936.67  
(fact1_id, fact2_id) 2   5   4508.74  
ORDER BY fact1_id, 2   26237.04  

fact2_id; 1   10016.39  
2   9377.78  
3   10274.02  
4   11324.12  
5   9536.08  
50528.39  
L. Jourdan – Aide à la décision 35  
Group  by  grouping  sets  
•  Permet  des  groupements  mul9ples    
•  Exemple  :  grouper  par  (mois,  region)  et  (mois,  
produit)  
•  Le  groupe  ()  représente  la  rela9on  en9ère  
•  Le  rollup  et  le  cube  peuvent  être  écrits  avec  
un  grouping  sets.  

L. Jourdan – Aide à la décision 36  


Exemple  
SELECT fact1_id, Fact1_id   Fact2_id   Fact3_id   Sales_val  
fact2_id, fact3_id, 1   1   4363.55  
SUM(sales_value) AS …   …   …  
sales_val, 1   5   5027.34  
FROM fact_tab
1   1   2737.4  
GROUP BY GROUPING SETS
…   …   …  
( (fact1_id, fact2_id),
1   10   2334.06  
(fact1_id, fact3_id) )
2   1   5652.84  
ORDER BY fact1_id,
fact2_id, fact3_id; ...   …   …  
2   5   4508.74  
2   1   3512.69  
…   …   …  
2   10   2027.16  
L. Jourdan – Aide à la décision 37  
Groupements  
•  On  peut  u9liser  des  ensembles  d’aoributs  dans  les  
expressions  de  groupe  :  
–  GROUP BY ROLLUP ((a, b), c)    
On  groupe  selon  (a,  b,  c)  (a,  b)  ()  pas(a)  
–  GROUP BY CUBE ((a, b), c)    
On  groupe  selon  (a,  b,  c)  (a,  b)  (c)  ()  pas  (a,  c)  (a)  (b,  c)  (b)  
•  On  peut  concaténer  des  groupements  en  les  séparant  
par  des  “,”  ce  qui  revient  à  grouper  selon  le  produit  
cartésien  des  différents  groupements  :  
–  GROUP BY GROUPING SETS(a, b), GROUPING SETS(c, d)
On  groupe  selon  (a,  c)  (a,  d)  (b,  c)  (b,  d)  
–  GROUP BY A, GROUPING SETS ((B),(C), ())
Équivalent  à GROUPING SETS ((A,B),(A,C),(A))

L. Jourdan – Aide à la décision 38  


Fonc9on  grouping  
•  On  veut  déterminer  pour  1  aoribut  de  
groupement  si  une  ligne  est  un  total  
•  GROUPING(aP)  renvoie  1  si  on  a  une  
valeur  «  null  »  due  à  un  groupement  pour  
cet  aoribut  (donc  un  sous-­‐total)  
•  U9lisée  dans  une  clause  HAVING,  ceoe  
fonc9on  permet  donc  de  choisir  le  type  de  
groupement  

L. Jourdan – Aide à la décision 39  


Exemple  
SELECT fact1_id, fact2_id, Fact1_id   Fact2_id   Sales_val   f1g   f2g  
SUM(sales_value) AS
1   24291.35   0   1  
sales_val,
GROUPING(fact1_id) AS f1g, 2   26237.04   0   1  
GROUPING(fact2_id) AS f2g 4   11324.12   1   0  
FROM fact_tab
GROUP BY CUBE (fact1_id, 3   10274.02   1   0  
fact2_id) 2   9377.78   1   0  
HAVING
1   10016.39   1   0  
GROUPING(fact1_id) = 1 OR
GROUPING(fact2_id) = 1 5   9536.08   1   0  
ORDER BY GROUPING(fact1_id),
GROUPING(fact2_id); 50528.39   1   1  

Grouping(fact1_id)  renvoie  1  quand  fact1_id  vaut  null  suite  au  groupement  

L. Jourdan – Aide à la décision 40  


Fonc9on  grouping_id  (Oracle)  
•  GROUPING_ID  renvoie  un  nombre  qui  permet  
d’iden9fier  le  type  de  groupement  de  chaque  ligne.  
•  GROUPING  porte  sur  une  seule  colonne,  pour  tester  les  
différents  critères  dʼagréga9on,  il  faut  autant  de  colonnes  
de  GROUPING  que  de  colonnes  de  regroupement  
•  La  fonc9on  GROUPING_ID  synthé9se  en  une  seule  fonc9on  
lʼétat  dʼagréga9on  sur  les  ensembles  de  critères  
 
Niveau  de   Bit  vector   Grouping_id  
Par  exemple  :     groupement   (grouping)  
  a,b   0  0   0  
CUBE(a,b) a   0  1   1  
b   1  0   2  
total   1  1   3  
L. Jourdan – Aide à la décision 41  
Expressions  analy9ques  
•  Syntaxe  Oracle  :  
fonction (expression)
over ([clause de partitionnement] [clause d'ordre [clause de fenêtrage]])
•  La  clause  de  parUUonnement  :  de  la  forme  PARTITION  BY  …    
–  Elle  définit  un  découpage  des  données  suivant  les  valeurs  des  colonnes  du  
PARTITION  BY.    
–  Chaque  valeur  définit  un  groupe  logique  à  l'intérieur  duquel  est  appliquée  la  
fonc9on  analy9que.    
•  La  clause  d'ordre  :  de  la  forme  ORDER  BY  …    
–  Elle  indique  comment  les  données  sont  triées  à  l'intérieur  de  chaque  par99on.  
•  La  clause  de  fenêtrage  indique  l'ensemble  des  lignes  sur  lequel  doit  être  
appliquée  la  fonc9on.    
–  Ceoe  clause  définit  une  fenêtre  glissante,  i.e.  une  suite  de  lignes  autour  de  
(avant/après)  la  ligne  courante.    
–  Si  une  clause  de  fenêtrage  est  spécifiée,  une  clause  d'ordre  doit  
obligatoirement  l'être  aussi.    
–  Lire  la  documenta1on  pour  la  syntaxe  …  

L. Jourdan – Aide à la décision 42  


Exemple  
table COTATION (
isin varchar2 (20), -- identifiant de la société
dte date, -- date de cotation
ouv number, -- premier cours de la journée
max number, -- cours le plus haut de la journée
min number, -- cours le plus bas de la journée
clo number, -- dernier cours de la journée (clôture)
volume number, -- nb d'actions échangées
Constraint cotation_pkey primary key(isin, dte)
);

select isin, dte,


avg(clo) over(partition by isin order by dte rows 4 preceding)
mma_5
from COTATION
--> Moyenne des cours de clôture sur les 5 derniers jours, par
société

L. Jourdan – Aide à la décision 43  


RANK,  DENSE_RANK  
•  Fonc9on  analy9que,  donc  à  u9liser  dans  une  
expression  analy9que  
•  Rank()  donne  le  rang  d’un  enregistrement  à  
l’intérieur  de  son  groupe  (cf  clause  de  par99on)  en  
fonc9on  de  l’ordre  défini  (cf  clause  d’ordre)  
•  avec  la  fonc9on  rank(),  sʼil  y  a  2  tuples  qui  ont  les  
mêmes  valeurs  et  sont  classés  de  rang  n,  le  tuple  
suivant  est  de  rang  n+2.  Avec  dense_rank()  le  tuple  
suivant  a  le  rang  n+1.  

L. Jourdan – Aide à la décision 44  


Exemple  
Table POPULATION(country, number)
 
SELECT country,
rank() OVER (ORDER BY number DESC) AS n_rank
FROM population

Donne  chaque  pays  avec  son  rang  ;  rang  1  pour  le  


plus  peuplé.  
Le  résultat  n’est  pas  trié    
-­‐>  u9liser  une  clause  Order  by  dans  le  select.  
L. Jourdan – Aide à la décision 45  
NTILE  
•  La  fonc9on  NTILE  ordonne  les  lignes  en  N  
paquets  de  même  taille  (à  1  près),  N  étant  un  
en9er  passé  en  paramètre.    
–  La  clause  order  by  est  donc  obligatoire.    
•  NTILE  renvoie  pour  chaque  ligne  le  numéro  du  
paquet  auquel  ceoe  ligne  appar9ent.    

L. Jourdan – Aide à la décision 46  


Exemple  
SELECT last_name, salary,
NTILE(4) OVER (ORDER BY salary DESC) AS quartile
FROM employees
WHERE department_id = 100;
Comme  il  y  a  6  lignes,  et  6  n’est  pas  divisible  par  4,  les  paquets  3  
et  4  ont  1  ligne  de  moins  que  les  paquets  1  et  2.  
Last_name   salary   quarUle  
Greenberg   12000   1  
Faviet   9000   1  
Chen   8200   2  
Urman   7800   2  
Sciarra   7700   3  
Popp   6900   4  

L. Jourdan – Aide à la décision 47  


HOLAP  
•  On  combine  un  mode  de  stockage  ROLAP  avec  un  
mode  MOLAP.  
•  En  général  :  
–  Un  SGBD  rela9onnel  (approche  ROLAP)  pour  stocker  
les  données  détaillées  
–  Un  SGBD  mul9dimensionnel  (approche  MOLAP)  pour  
stocker  les  données  agrégées  
 =  pour  répondre  plus  rapidement  aux  requêtes  
•  Bon  compromis  :  permet  de  gérer  des  grandes  
quan9tés  de  données,  avec  des  temps  de  
réponse  acceptables    

L. Jourdan – Aide à la décision