Vous êtes sur la page 1sur 29

Business Intelligence

L3 Technologies des Systèmes d’Information


Chapitre 4: Interrogation d’un cube de données

Haïfa Nakouri

hayfa.nakouri@esen.tn

ESEN Manouba

2019/ 2020

Des Tables aux Data cubes


 Un data warehouse est basé sur un modèle multidimensionnel
où les données sont vues comme des data cubes
 Un data cube, ex: ventes, permet de voir les données en
multiples dimensions
 Les tables de dimension ex: item (nom_item, marque, type),
ou temps(jour, semaine, mois, trimestre, année)
 La table de fait contient des mesures (ex: unités_vendues) et
les clés externes faisant référence à chaque table de
dimension
 Dans la littérature du data warehousing, un cube de dimension n
est dit un cuboïde. Le treillis des cuboïdes d’un data warehouse
forme un data cube.

Haïfa Nakouri SID ESEN 2019/ 2020 2

1
Données multidimensionnelles
 Montant des ventes comme une fonction des
paramètres produit, mois, région.

Dimensions: Produit, Lieu, Temps


Chemins de consolidation hiérarchiques
Produit

Industrie Pays Année

Catégorie Région Trimestre

Produit Ville Mois Semaine


Mois
Magasin Jour

Haïfa Nakouri SID ESEN 2019/ 2020 3

Cube: Un treillis de cuboïdes

tous
0-D cuboïde

temps item lieu fournisseur


1-D cuboïdes

temps,item temps,lieu item,lieu Lieu, fournisseur


2-D cuboïdes
Temps, fournisseur item,fournisseur

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

produit,date produit,pays date, pays


Cuboïde 2-D

cuboïde3-D(base)
produit, date, pays

Haïfa Nakouri SID ESEN 2019/ 2020 5

Pourquoi les data cubes?

 Utiles pour le datawarehousing


 Requêtes Group By généralisées
 Agrégation des faits selon des dimensions choisies
 Exemple : Fait : Ventes
 Dimensions : Produit, magasin, temps
 Mesures : montant des ventes
 Atout de la visualisation (mieux que des résultats
textuels)
 Modélisation intuitive
 Supporte les opérations interactives OLAP

Haïfa Nakouri SID ESEN 2019/ 2020 6

3
OLAP

OLAP : On-Line Analytical Processing


 Décrit une technologie conçue pour optimiser le
stockage et la consultation d’un large volume de
données multidimensionnelles agrégées sur
plusieurs niveaux de détail en vue de faciliter leur
l’analyse.
 Principes :
 Affichage d’une « face projetée » du cube multi-
dimensionnel
 Opérations de manipulations d’un cube
 Visualisation des résultats

Haïfa Nakouri SID ESEN 2019/ 2020 7

Opérations de l’OLAP sur le cube


OLAP : OnLine Analytical Processing
 Roll up
 Drill down
 Slice
 Dice
 Pivot/rotate:
 Switch
 Split
 Nest
 Select
 Project
 Jointure
 Opérations ensemblistes (union, intersection, différence)

Haïfa Nakouri SID ESEN 2019/ 2020 8

4
Roll up

Roll up :
consolider (résumer)
les données
Passer à un niveau
supérieur dans la
hiérarchie d’une
dimension

Haïfa Nakouri SID ESEN 2019/ 2020 9

Drill down

Drill down :
l’inverse du Roll-up
descendre dans la
hiérarchie d’une
dimension

Haïfa Nakouri SID ESEN 2019/ 2020 10

5
Roll up – Drill down

Roll up : moins de détails (grain supérieur)

Drill down : plus de détails (grain inférieur)

Haïfa Nakouri SID ESEN 2019/ 2020 11

Slice (Projection)

Slice :
Réoriente le cube
pour visualisation

S’applique sur les


valeurs des
dimensions

Haïfa Nakouri SID ESEN 2019/ 2020 12

6
Slice (Projection)

Haïfa Nakouri SID ESEN 2019/ 2020 13

Dice (sélection)

Dice: Sélection

Haïfa Nakouri SID ESEN 2019/ 2020 14

7
Dice (sélection)

Haïfa Nakouri SID ESEN 2019/ 2020 15

Pivot

Pivot: rotation
par rapport à l’un
des axes de
dimension

Haïfa Nakouri SID ESEN 2019/ 2020 16

8
Switch

Switch: Permutation de valeurs


de dimensions

Haïfa Nakouri SID ESEN 2019/ 2020 17

Split

Split:
Décomposition

Haïfa Nakouri SID ESEN 2019/ 2020 18

9
Nest

Nest: Imbrication

Haïfa Nakouri SID ESEN 2019/ 2020 19

Jointure

Haïfa Nakouri SID ESEN 2019/ 2020 20

10
Union

Haïfa Nakouri SID ESEN 2019/ 2020 21

Représentation des cubes OLAP

Architecture des serveurs OLAP


 Relational OLAP (ROLAP)
 Le serveur OLAP traduit les opérations sur le cube en
opérations relationnelles
 Utilise un SGBD relationnel pour stocker les données ainsi qu’un
middle-ware pour implémenter les opérations spécifiques de
l’OLAP (Oracle, SQL Server,..)
 Multidimensional OLAP (MOLAP)
 Le modèle MOLAP stocke la BD multidimensionnelle dans
structures non relationnelles
 Basé sur un stockage par tableaux (techniques des matrices creuses)
 La majorité des serveurs OLAP suivent le modèle ROLAP

Haïfa Nakouri SID ESEN 2019/ 2020 22

11
Un cube de données
 Un cube offre un espace d’analyse des données stockées
dans le data warehouse

 C’est un mécanisme utilisé spécialement pour interroger des


données organisées dans une structure multidimensionnelle

 OLAP (OnLine Analytical Processing) :


 une technologie permettant d’effectuer des analyses de données
multidimensionnelles au sein de bases de données créées à cet
effet.
 Les données OLAP sont stockées dans une base
multidimensionnelle, appelées aussi Cubes OLAP

 Pour faciliter ce type d’analyses, un serveur OLAP est


nécessaire.

Haïfa Nakouri SID ESEN 2019/ 2020 23

Représentation du cube

 Deux façons de représenter le cube :


 Le modèle ROLAP : le serveur OLAP traduit les
opérations sur le cube en opérations relationnelles.
 Le modèle MOLAP stocke la BD multidimensionnelle
dans des structures non relationnelles.
 La majorité des serveurs OLAP suivent le modèle
ROLAP.
 Objectifs :
 Dénormaliser (minimiser les jointures)
 Résumer (effectuer des précalculs)
 Partitionnement vertical (diminuer la taille des tables)

Haïfa Nakouri SID ESEN 2019/ 2020 24

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)

Haïfa Nakouri SID ESEN 2019/ 2020 25

Interrogation OLAP

Principes:
 Affichage d’une « face projetée » du cube
multidimensionnel
 Opérations de manipulations d’un cube
 Visualisation des résultats

Haïfa Nakouri SID ESEN 2019/ 2020 26

13
Choix des tables “fact” et “dimension”

 Analyse des requêtes


 Attributs « group by » indiquent les dimensions (id)
 Attributs agrégés indiquent les mesures
 Attributs « where » sont les attributs des tables dimensions

 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

Haïfa Nakouri SID ESEN 2019/ 2020 27

Extension de SQL pour OLAP

Plusieurs propositions d’extensions:

 SQL : Dimensions, Agrégation, Roll up, Cube by

 Densification

 SQL Model (Spreadsheet)

Haïfa Nakouri SID ESEN 2019/ 2020 28

14
SQL (Oracle) Définition des dimensions

 Une dimension est définie par


 des relations : table + attributs
un attribut = un niveau
 la hiérarchie entre les niveaux : arbre (ou branche)
 les dépendances fonctionnelles entre les attributs

 Avantages
 Cohérence des données
 Traitement plus efficace des requêtes d’agrégation

Haïfa Nakouri SID ESEN 2019/ 2020 29

Dimensions dans un schéma en étoile


Exemple: la dimension des catégories de produits
CREATE DIMENSION products_dim
LEVEL product IS (products.prod_id)
LEVEL subcategory IS (products.prod_subcategory)
LEVEL category IS (products.prod_category)
HIERARCHY prod_rollup (
product CHILD OF subcategory CHILD OF category)
ATTRIBUTE product
DETERMINES (prod_name, prod_desc, prod_min_price, …)
ATTRIBUTE subcategory
DETERMINES (prod_subcategory, prod_subcategory_desc)
ATTRIBUTE category
DETERMINES (prod_category, prod_category_desc);

Haïfa Nakouri SID ESEN 2019/ 2020 30

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);

Haïfa Nakouri SID ESEN 2019/ 2020 31

Agrégation avec SQL : GROUP BY

Regroupement suivant n dimensions


GROUP BY d1, … , dn
Un groupe contient tous les faits qui ont les mêmes
valeurs pour (d1, … , dn). Les groupes sont disjoints.
Clause SELECT : fonction d’agrégation
sum, avg, count, min, max, …
Résultat: un n-uplet par groupe
Exemple : Sales(StoreID, ItemID, CustID, qty, price)
SELECT StoreID, ItemID, CustID, SUM(price)
FROM Sales
GROUP BY StoreID, ItemID, CustID;

Haïfa Nakouri SID ESEN 2019/ 2020 32

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)

Haïfa Nakouri SID ESEN 2019/ 2020 33

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

Haïfa Nakouri SID ESEN 2019/ 2020 34

17
Exemple de ROLLUP(2)

Sales(RegionID, StoreID, ClerkID, hourlyPay)

Requête

SELECT RegionID, StoreID, ClerkID, AVG(hourlyPay)


FROM Sales
GROUP BY RegionID, ROLLUP(StoreID, ClerkID),

Résultat

Haïfa Nakouri SID ESEN 2019/ 2020 35

Exemple de ROLLUP(3)
SELECT Type, Store, SUM(Number) Résultat avec ROLLUP
FROM Pets
GROUP BY Rollup (type, store)

Haïfa Nakouri SID ESEN 2019/ 2020 36

18
Opérateur CUBE

Syntaxe: GROUP BY [D] CUBE(D’)


D et D’ sont des listes de dimensions d1 … dn
Agrégation sur tous les niveaux de regroupements par
face, arrête, sommet du cube (2n groupes)
group by d1 group by d2 group by d3 …
group by d1, d2 group by d2, d3 group by d1, d3…

group by d1, …dn
Cube partiel : moins de niveaux
GROUP BY D CUBE(D’)

Haïfa Nakouri SID ESEN 2019/ 2020 37

Exemple de CUBE

SELECT Type, Store,


SUM(Number)
FROM Pets
GROUP BY CUBE (type, store)
Exercice
 Ecrire en SQL une requête
équivalente (sans utiliser cube)
 Combien de clauses select sont
elles nécessaires pour obtenir un
cube de dimension n ?

Haïfa Nakouri SID ESEN 2019/ 2020 38

19
Exercice 1

 On considère la table suivante.


Quel est le résultat des requêtes
ci-dessous :
pièces Régions quantités
a) select sum(quantité) écrous Est 50
from T écrous Ouest 60
group by cube (pièces,régions) ;
écrous Sud 40
clous Est 70

b) select sum(quantité) clous Nord 40


from T vis Ouest 50
group by rollup (pièces,régions) ; vis Sud 50
vis Nord 60
Haïfa Nakouri SID ESEN 2019/ 2020 39

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

Haïfa Nakouri SID ESEN 2019/ 2020 40

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

pièces Régions quantités


clous est 70

écrous Est 50
clous nord 40

écrous Ouest 60
vis ouest 50

écrous Sud 40 vis sud 50

clous Est 70 vis nord 60

clous Nord 40 écrous NULL 150

vis Ouest 50 clous NULL 110

vis Sud 50 vis NULL 160

vis Nord 60 NULL NULL 420

Haïfa Nakouri SID ESEN 2019/ 2020 41

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) :

a)SELECT nocli, noprod, SUM(montant)


FROM ventes
GROUP BY ROLLUP(nocli,noprod);

b) SELECT nocli, noprod, nofour, SUM(montant)


FROM ventes
GROUP BY CUBE (nocli, noprod, nofour);

Haïfa Nakouri SID ESEN 2019/ 2020 42

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

SELECT nocli, NULL, SUM(montant)


FROM ventes
GROUP BY nocli

UNION ALL

SELECT NULL, NULL, SUM(montant)


FROM ventes;

Haïfa Nakouri SID ESEN 2019/ 2020 43

SELECT nocli, NULL, nofour,


Exercice 2 (corrigé) SUM(montant)
SELECT nocli, noprod, nofour, SUM(montant) FROM ventes
GROUP BY nocli, nofour
FROM ventes
UNION ALL
GROUP BY CUBE (nocli, noprod, nofour);
SELECT NULL, noprod, nofour,
SELECT nocli, noprod, nofour, SUM(montant)
SUM(montant) FROM ventes
FROM ventes GROUP BY noprod, nofour
GROUP BY nocli, noprod, nofour UNION ALL
UNION ALL SELECT NULL, noprod, NULL,
SELECT nocli, noprod, NULL, SUM(montant)
SUM(montant) FROM ventes
FROM ventes GROUP BY noprod
GROUP BY nocli, noprod UNION ALL
UNION ALL SELECT NULL, NULL, nofour,
SELECT nocli, NULL, NULL, SUM(montant)
SUM(montant) FROM ventes
FROM ventes GROUP BY nofour
GROUP BY nocli UNION ALL
UNION ALL SELECT NULL, NULL, NULL,
SUM(montant)
Haïfa Nakouri SID FROM ventes;
ESEN 2018/ 2019 44

22
Opérateur Grouping Sets

Syntaxe: GROUP BY Grouping Sets(D,D’)


D et D’ sont des groupes de dimensions
Permet des groupements multiples

Ex : Total des ventes pour chaque mois de l’année


2014, par pays et par responsable des ventes :

SELECT month, country, sales_mgr, SUM(amount)


FROM Sales
WHERE year = 2014
GROUP BY GROUPING SETS((month, country),(month, sales_mgr))

Haïfa Nakouri SID ESEN 2019/ 2020 45

Opérateur Grouping Sets


SELECT month, country, sales_mgr, SUM(amount)
FROM Sales
WHERE year = 2014
GROUP BY GROUPING SETS((month, country),(month, sales_mgr))

Haïfa Nakouri SID ESEN 2019/ 2020 46

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), () )

Haïfa Nakouri SID ESEN 2019/ 2020 47

Opérateur Grouping Sets


Suite Exercice 2
SELECT nocli, noprod, SUM(montant)
FROM ventes
GROUP BY GROUPING SETS ((nocli),(noprod));

SELECT nocli, NULL, SUM(montant)


FROM ventes
GROUP BY nocli

UNION ALL

SELECT NULL, noprod, SUM(montant)


FROM ventes
GROUP BY noprod;

Haïfa Nakouri SID ESEN 2019/ 2020 48

24
Fonction Grouping

Créé une nouvelle colonne avec des 0 et des 1,


permettant la détection de tuples de total qui sont générés
lors de l’exécution de CUBE ou ROLLUP (1 pour les
tuples de total et 0 pour les autres)
Ex. : Tous les totaux et sous totaux des ventes par pays et
responsable des ventes pour chaque mois de 2014

SELECT month, country, sales_mgr, SUM(amount), GROUPING(sales_mgr)


FROM Sales
WHERE year = 2014
GROUP BY ROLLUP (month, country, sales_mgr)

Haïfa Nakouri SID ESEN 2019/ 2020 49

Fonction Grouping
SELECT month, country, sales_mgr, SUM(amount), GROUPING(sales_mgr)
FROM Sales
WHERE year = 2014
GROUP BY ROLLUP (month, country, sales_mgr)

Haïfa Nakouri SID ESEN 2019/ 2020 50

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.

Haïfa Nakouri SID ESEN 2019/ 2020 51

Extension MODEL : Principes

 Intuition: décrire une requête comme une feuille de


calcul contenant des formules dans des cellules.
 Relation avec N attributs ⇔tableau à N dimensions
 Définir la valeur d’une cellule par une formule.
 Formule récursive, condition d’arrêt et de
convergence
 Requête avec une nouvelle clause pour définir les
formules.
 La nouvelle clause supporte : le partitionnement des
données, mises à jour, prédicats de jointure (a=b)
 Simplifie l’écriture des requêtes OLAP
Haïfa Nakouri SID ESEN 2019/ 2020 52

26
Evaluation d’une requête OLAP

 Evaluation de la nouvelle clause


 après les clauses select, where, group by
 avant order by
 produit une relation : l’imbrication de requêtes est
possible

 Traitement efficace de la nouvelle clause


 en parallèle pour chaque partition
 une seule structure d’accès pour traiter plusieurs
opérations de jointure et d’union

Haïfa Nakouri SID ESEN 2019/ 2020 53

Syntaxe d’une requête OLAP

SELECT … FROM … WHERE … GROUP BY ….


MODEL PBY (cols) DBY (cols) MEA (cols)
{ <regles> * }

PBY (p1, …) : partition by ⇒ découpage en


partitions
DBY (d1, …) : dimension by : nom des dimensions
MEA (m) : mesure, ensemble de valeurs: m[…]
<regles>: affectation m[prédicat] = f(m)
- prédicat : égalité, inégalité, logique
- f(m) : formule algébrique

Haïfa Nakouri SID ESEN 2019/ 2020 54

27
Déroulement d’une requête

 Mapping des colonnes vers des entités Model

 Règles

Haïfa Nakouri SID ESEN 2019/ 2020 55

Résultat

Haïfa Nakouri SID ESEN 2019/ 2020 56

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

Haïfa Nakouri SID ESEN 2019/ 2020 57

Model : exemple 2

Utilisation de la fonction cv() : current value


MODEL DBY (r, p, a) MEA (v) {
v[‘ouest', *, a>2001] = 1.2*v[cv(r), cv(p), a=cv(t)-1]
}
Quelles seraient les ventes, après 2001, de tous les
produits de la région Ouest, telles que :
l’augmentation annuelle pour chaque produit soit de
20%

Haïfa Nakouri SID ESEN 2019/ 2020 58

29

Vous aimerez peut-être aussi