Haïfa Nakouri
hayfa.nakouri@esen.tn
ESEN Manouba
2019/ 2020
1
Données multidimensionnelles
Montant des ventes comme une fonction des
paramètres produit, mois, région.
tous
0-D cuboïde
temps,lieu, fournisseur
temps,item,lieu 3-D cuboïdes
Temps, item, fournisseur item,lieu, fournisseur
4-D cuboïde
Temps, item,lieu,fournisseur
Haïfa Nakouri SID ESEN 2019/ 2020 4
2
Cuboïdes Correspondants au Cube
tous
Cuboïde 0-D (apex)
produit date pays
Cuboïde 1-D
cuboïde3-D(base)
produit, date, pays
3
OLAP
4
Roll up
Roll up :
consolider (résumer)
les données
Passer à un niveau
supérieur dans la
hiérarchie d’une
dimension
Drill down
Drill down :
l’inverse du Roll-up
descendre dans la
hiérarchie d’une
dimension
5
Roll up – Drill down
Slice (Projection)
Slice :
Réoriente le cube
pour visualisation
6
Slice (Projection)
Dice (sélection)
Dice: Sélection
7
Dice (sélection)
Pivot
Pivot: rotation
par rapport à l’un
des axes de
dimension
8
Switch
Split
Split:
Décomposition
9
Nest
Nest: Imbrication
Jointure
10
Union
11
Un cube de données
Un cube offre un espace d’analyse des données stockées
dans le data warehouse
Représentation du cube
12
Opérations sur les cubes
Sur la structure
Rotate (pivot)
Switch
Split
Nest/unnest
Push/pull
Slice
Dice (sélection)
Sur le contenu
Roll-up (grain supérieur)
Drill-down (grain inférieur)
Entre cubes
Jointure
Opérations ensemblistes (union, intersection, différence)
Interrogation OLAP
Principes:
Affichage d’une « face projetée » du cube
multidimensionnel
Opérations de manipulations d’un cube
Visualisation des résultats
13
Choix des tables “fact” et “dimension”
Exemple
select sale.store_id,sale_product_id, sum(sale.price)
from product, sale
where product.product_id=sale.product_id
and product.product_desc = « clothes »
group by store_id, product_id
Densification
14
SQL (Oracle) Définition des dimensions
Avantages
Cohérence des données
Traitement plus efficace des requêtes d’agrégation
15
Dimensions dans un schéma en flocon
Définir une dimension à partir de plusieurs relations
Clients (cl_id, cl_ville, cl_région, cl_pays)
Pays (p_id, p.continent)
CREATE DIMENSION clients_dim
LEVEL client IS (cl_id)
LEVEL ville IS (cl_ville)
LEVEL région IS (cl_région)
LEVEL pays IS (p_id)
LEVEL continent IS (p_continent)
HIERARCHY geographic_rollup (
client CHILD OF ville CHILD OF région CHILD OF pays
CHILD OF continent
JOIN KEY (cl_pays) REFERENCES Pays);
16
Opérateur ROLLUP
Syntaxe: GROUP BY [D ] ROLLUP(D’)
D et D’ sont des listes de dimensions d1 … dn
Agrégation sur n+1 niveaux de regroupements
Niveau 1 : group by d1 … dn-1 dn
Niveau 2 : group by d1 … dn-1
…
Niveau n : group by d1
Niveau n+1 : un seul groupe = la table des faits toute
entière
Rollup partiel : moins de niveaux
GROUP BY D ROLLUP(D’)
Ex: group by e1 rollup (e2, e3) crée les sous-totaux
(e1,e2,e3), (e1, e2) et (e1)
Exemple de ROLLUP(1)
Sales(StoreID, ItemID, CustID, qty, price)
Requête
SELECT StoreID, ItemID, CustID, SUM(price)
FROM Sales
GROUP BY ROLLUP(StoreID,ItemID,CustID);
Résultat [s, i, c, p] ∈ Résultat
[s1, i1, c1, 2] [s1,i1,c3, 1] … //total par mag. par art. par client
[s1, i1,null, 100] [s1, i2, null, 250] … //total par mag. par art
[s1, null, null, 4000 ] … //total par magasin
[null, null, null, 100 000 000]. //total général
mais pas les n-uplets suivants :
[s1, null, c1, 30] … //total par mag. par client
[null, null, c1, 200] … //total par client
17
Exemple de ROLLUP(2)
Requête
Résultat
…
Exemple de ROLLUP(3)
SELECT Type, Store, SUM(Number) Résultat avec ROLLUP
FROM Pets
GROUP BY Rollup (type, store)
18
Opérateur CUBE
Exemple de CUBE
19
Exercice 1
Exercice 1 (corrigé)
a) select sum(quantité) pièces Régions Sum(quantité)
from T écrous Est 50
écrous Ouest 60
group by cube (pièces,régions) ;
écrous Sud 40
clous est 70
pièces Régions quantités clous nord 40
vis ouest 50
écrous Est 50
vis sud 50
écrous Ouest 60 vis nord 60
écrous Sud 40 écrous NULL 150
clous NULL 110
clous Est 70
vis NULL 160
clous Nord 40 NULL est 120
vis Ouest 50 NULL nord 100
NULL ouest 110
vis Sud 50
NULL sud 90
vis Nord 60 NULL NULL 420
20
Exercice 1 (corrigé)
pièces régions Sum(quantité)
b) select sum(quantité)
écrous est 50
from T
écrous ouest 60
group by rollup (pièces,régions) ;
écrous sud 40
écrous Est 50
clous nord 40
écrous Ouest 60
vis ouest 50
Exercice 2
Soit la table Ventes contenant le montant des ventes par produit,
fournisseur et client :
VENTES(nocli, noprod, nofour, montant).
Voici deux requêtes écrites avec SQL OLAP. Donnez leur
équivalent sans les spécificités OLAP (ROLLUP, CUBE) :
21
Exercice 2 (corrigé)
SELECT nocli, noprod, SUM(montant)
FROM ventes
GROUP BY ROLLUP(nocli,noprod);
SELECT nocli, noprod, SUM(montant)
FROM ventes
GROUP BY nocli, noprod
UNION ALL
UNION ALL
22
Opérateur Grouping Sets
23
Opérateur Grouping Sets
Tuple de grand total : Une syntaxe particulière permet d’inclure un tuple
« grand total » dans les résultats :
«Les grands totaux » sont générés implicitement avec ROLLUP et
CUBE
Ex. 2 : Total de ventes par mois, pays, et responsable de vente, et
aussi grand total de vente :
SELECT month, country, sales_mgr, SUM(amount)
FROM Sales
WHERE year = 2014
GROUP BY GROUPING SETS((month, country), () )
UNION ALL
24
Fonction Grouping
Fonction Grouping
SELECT month, country, sales_mgr, SUM(amount), GROUPING(sales_mgr)
FROM Sales
WHERE year = 2014
GROUP BY ROLLUP (month, country, sales_mgr)
25
Extension PARTITION : Densification
Principe
Obtenir un cube sans ‘trous’. Ajouter les agrégats
dont la valeur est nulle.
Cube + jointure externe sur chaque dimension
Syntaxe
PARTITION BY D
[LEFT | RIGHT ] OUTER JOIN table ON pred
D, table : dimensions
pred : prédicat de jointure
Avantages: jointure plus efficace, moins de tri.
26
Evaluation d’une requête OLAP
27
Déroulement d’une requête
Règles
Résultat
28
Model : exemple 1
Relation f: table de faits
Attributs : région r, produit p, année a, ventes v
SELECT r, p, a, v
FROM f
MODEL PBY (r) DBY (p, a) MEA (v) {
v[p=’dvd’, a=2005] = v[p=’dvd’, a=2004] * 1.6,
v[p=’vcr’, a=2005] = v[p=’vcr’, a=2003] + v[p=’vcr’, a=2004],
v[p=’tv’, a=2005] = avg(v)[p=’tv’, 1997<a<2005]
}
Quelles seraient les ventes en 2005 tq:
- DVD : augmentation de 60% par rapport à 2004
- Caméscope : somme des ventes 2003 et 2004
- TV: moyenne de 1998 à 2004
Model : exemple 2
29