Entrepôts de données

Transcription

Entrepôts de données
Entrepôts de données
Cours 2 et 3 : modélisation et interrogation
Anne Doucet
[email protected]
1
Plan
• Modélisation des données
– Concepts multidimensionnels
– Opérations
• Modèle de données ROLAP
– Étoile, flocon, constellation
– Transformation OLTP-ROLAP
• Extensions de SQL pour les requêtes OLAP
– Dimensions, agrégation, rollup, cube
– Partition et Model
2
Données relationnelles
Table des ventes :
Produit
Région
Chiffre
Soda
Vins
Entretien
Soda
Vins
Ouest
Est
Centre
Centre
Centre
300
250
150
400
300
Calcul du total des ventes de soda ?
requêtes, tables redondantes, attribut redondant
3
Données pour l’analyse
grille des ventes : les axes correspondent à des attributs
ayant des associations m-n
Est
Ouest
Centre
Sud
Soda
Vins
Entretien
150
250
90
300
200
100
400
300
150
450
150
80
Total
490
600
850
680
Total
1300
900
420
2620
• facilité de lecture et de navigation
• intégration des calculs
4
Concepts du modèle multidimensionnel
• mesure = critère d’évaluation du processus décisionnel (ex :
chiffre d’affaires, quantité en stock)
• dimension = axe d’analyse associé à un indicateur, représentant
un sujet d’intérêt (ex : temps, produit, localisation)
• hiérarchie = décomposition d’une dimension en une
arborescence de niveaux (ex : temps décomposé en mois,
trimestre, année, ...)
• attribut = caractéristique d’un niveau d’une hiérarchie (ex : prix
d’un article)
• agrégat = résultat d’un indicateur par rapport à des niveaux (ex :
chiffre d’affaires du mois)
5
Cube multidimensionnel
année
trimestre
mois
janvier
temps
février
1998 1° trimestre mars
•
•
•
•
•
•
Est
France
Ouest
Strasbourg
Nancy
Rennes
Nantes
Sud
Nord
•
•
•
classe
Cap Cola
Soda
limonade
Alimentation
•
•
•
Produit
Centre
article gamme
Vins
6
Interrogation OLAP
Principes:
• Affichage d’une « face projetée » du cube multi-dimensionnel
• Opérations de manipulations d’un cube
• Visualisation des résultats
7
Exemple
Projection :
slicing : classe = alimentation et année=1998
Produit : classe alimentation
Temps : année 1998
trimestre 1
Soda
1900
Vins
….
trimestre 2
2000
trimestre 3
2200
trimestre 4
1300
….
8
Exemple
Pivotement : ajout de localisation
Slicing : trimestre=4 et pays=France
Produit : alimentation
Temps : trimestre 4, année 1998
Localisation : pays France
Soda
Est
Ouest
Centre
Sud
Total
150
300
400
450
1300
9
Autre visualisation
1998
30
25
20
15
10
5
l
o
P
EN
Droit
Philo
Phys
Info
Avantage visuel
Problème de
multiplicité des
diagrammes
y
S
P
C
E
Nombre de succès par matière (droit, philo, phys, info) et par
école (Centrale ECP, Normale Sup ENS, Polytechnique)
10
Opérations sur le cube
•
Sur la structure
–
–
–
–
–
–
•
Rotate (pivot)
Switch
Split
Nest/unnest
Push/pull
Slice
Sur le contenu
– Dice (sélection)
– Roll-up (grain supérieur)
– Drill-down (grain inférieur)
•
Entre cubes
– Jointure
– Opérations ensemblistes (union, intersection, différence)
11
Rotation (slicing)
• Rotation (Pivot) : rotation par rapport à l’un des axes de
dimension
Droit Philo Phys Info
1996
18 24 7
1997
9 12 25
1998
Droit Philo Phys Info
15
8
15
18
18
5
5
ENS 15
9
8
8 25
5
5 5 17
8
12
12
6
Poly 25
22
12
18 18
ECP
7
7
ECP
7
18 5
5
ENS
15 9
12 5
8
Poly
25 22 12 18 12 8
18 17
25
22
12
18
1998
15
6
6
25
1997 <> <> <>
8 8
1996 <> <> <>
pivot
12
Permutation de valeurs de dimensions (switch)
Droit Philo Phys Info
Droit Philo Info Phys
1996 18
24 7 15
15
1997
9 12 25 8
1998
8
7 18
5
5
25
5
18 5
5
ECP 7
17
8
12
ENS 15
9
8 12
6
Poly 25 22 12 18 18
1996 18 24 15
7
7
1997 9
12
8
25
25
1998
5
<>
7 18 5
5
18 5
5
ECP 7
<>
<>
ENS 15
9 12 8 8 <>
Poly
25
22
18
12 12
switch
SWITCH
13
Décomposition (split)
Droit Philo Phys Info
1996 18 24 7
15
15
1997 9
12 25
8
1998
8 25
18
7
5
5
7
18
5
5 5 17
ECP
8
12
15
9
8
12
6
ENS
Poly
Info
25
22
1998 1997 1996
12
Droit
Spl
it
18 18
Phys
1998 1997 1996
1998 1997 1996
ECP
7
9
18
ENS
15
<>
<>
Poly 25
Philo
<>
<>
1998 1997 1996
ECP
5
8
15
ECP
5
25
7
ECP
18
12
24
ENS
12
17
25
ENS
8
<>
<>
ENS
9
<>
<>
6
8
Poly 12
Poly
22
<>
<>
Poly
18
<>
<>
14
Imbrication/désimbrication (nest/unnest)
Droit
Phys
Info
1998
1996
1997
1998
UNNEST Poly
1996
1997
ENS
1997
1998
ECP
1998
1996
NEST
1996
1997
Droit Philo Phys Info
1996 18
7
15
24
1997 9
15
8
25
12
1998
8 25
7
18
5
5
7
18
5
5 5 17
ECP
8
12
15
9
8
12
ENS
6
Poly 25 22 12 18 18
Philo
18
9
7
24
12
7
25
5
15
8
<>
<>
15
<> <>
9
<>
<>
8
<> <>
12
<>
<> 25
<> <>
22
<>
<>
12
<> <>
18
18
5
15
Concaténation (push/pull)
Droit Philo Phys Info
1996 18
24
15
7
1997
15
25
8
9
12
1998
8
18
5
7
5
25
7
18
5
5 5 17
ECP
8
9
8
12 12 6
ENS 15
Poly
25
22
12
18
18
Push
Pull
Droit
Philo
Phys
Info
ECP
1996 18 1997 9 1998 7
ENS
1996<> 1997<> 1998 15 1996<> 1997<> 1998 9 1996 <> 1997<> 1998 8 1996<> 1997<> 1998 12
Poly
1996 <> 1997 <> 1998 25 1996 <> 1997 <> 1998 22 1996<> 1997 <> 1998 12 1996 <> 1997 <> 1998 18
1996 24 1997 12 1998 18 1996 7 1997 25 1998 5 1996 15 1997 8 1998 5
16
Projection (slice)
S’applique sur les valeurs des dimensions
SLICE
Droit Philo Phys Info
1996
18
15
24 7
1997
9
1998
8 15
12 25
8
5
7
18
5
25
5
7
18
5
5
17 8
ECP
15
9
8
12 12 6
ENS
Poly
25 22 12 18 18
Info
1996 15
1997 8
1998
5
25
5
17 8
ECP
ENS
Poly
12
6
18
Droit Philo
SLICE
1997 9
12
1998
18 12
7
7
18 18 <>
ECP
ENS
15
9
9
17
Projection agrégative
Matière
Droit Philo Phys Info
1996 18 24 7
15
1997
9
12 25
8 15
1998
8 25
18
7
5
5
7
18
5
5 5 17
ECP
8
12
9
8
12
6
ENS 15
Poly
25
22
12
Slice
1996
64
1997
54
1998
35
ECP 35
ENS
44
Poly
77
18 18
18
Sélection (Dice)
S’applique sur les valeurs des cellules
Droit Philo Phys Info
1996 18 24 7
15
1997 9
12 25
8 15
1998
8 25
18
7
5
5
7
18
5
5 5 17
ECP
8
12
9
8
12
6
ENS 15
Poly 25 22 12 18 18
Droit Philo Phys Info
1996 18
24
15
1997
15
25
1998
18
25
18
17
ECP
ENS 15
Poly
25
22
18 18
19
Roll up/Drill-down
ll-u
o
R
p
e)
d
o
ri
é
P
(
Droit Philo Phys Info
1996 18 24 7
15
1997 9
15
12
25
8
1998
8 25
18 5
5
7
7
18
5
5 5 17
ECP
8
12
9
8
12
ENS 15
6
Poly 25 22 12 18 18
Droit Philo Phys Info
Période 11,3 18 12,3 9,3
9,3
ECP 11,3 18 12,3 9,3
ENS <> <> <> 18 18
Poly
<>
<>
Roll-u
<>
10,6 10,6
p (*.)
13,5
5
3,
1
13,5
Droit Philo Phys Info
u
llRo
Ra
p(
)
ng
1996
16
1997
10,3 16
1998
15,6 16,3 8,3 11,6
15,6 16,3 8,3 11,6
Ecole Rang A
20
Composition d’opérations
Droit Philo Phys Info
Dice
Droit Philo Phys Info
1996 18
24
7
15
1997
9
12
25
8 15
1998
8 25
18
7
5
5
7
18
5
5 5 17
ECP
8
9
8
12 12 6
ENS 15
Poly
25
22
12
1996
1997
1998
ECP
ENS
Poly
25
Roll-up
ECP
15
15
25
18
18
25
17
18 18
22
Philo
1996
1997
1998
18
18
22
24
15
18 18
22
18
Slice
24
24
18
ENS
Poly
22
21
Jointure
Droit Philo Phys Info
1996 18
24
7
15
15
1997 9
12
25
8
1998
8 25
18
7
5
5
5
7
18
5
5
ECP
17 8
15
9
8
12 12 6
ENS
Poly
25
22
12
18
1996
80
80
1997 75
1998 60
75
76
60 60
80 72
ECP
70 70 70
ENS
Poly
18
Droit
Philo
Phys
Info
18 80 24 80 7 80 15 80
80
1997
9 75 12 75 25 75 8 75
1998
75
7 60 18 60 5 60 5 60
76
7 60 18 60 5 60 5 60 60
80
72
ECP
15 70 9 70 8 70 12 70 70
70
ENS
25 65 22 65 12 65 18 65 65
Poly
1996
65 65
22
Union
Droit Philo Phys Info
1996 18
1997 9
12
1998
18
7
7
18
ECP
9
ENS 15
Poly
25
22
24
7
15
25
5
5
15
8
8
5
5
5
8
17 8
12 12 6
12
18 18
Droit Philo Phys Info
1996 15
17
717 25
1997 7
25
14
21
12
1998
12 25
12
23
7
16
16
12
23
7
16
20
U1
12
12
U2
20
8
27
42
16
U3
22
28
32
Droit Philo Phys Info
25
1996 18
24
7
15
15
1997 9
12
25
8
1998
8 25
18
7
5
5
5
7
18
5
5
17
ECP
Droit Philo
Phys
Info
8
12
159
178
717
ENS
15
12 25 6
25
7
14
21
12
18
Poly
25
22
12
18
12 25
23
12
7
16
16
12
23
7
16
20 12
U1
12
U2
20
8
27
42
16
U3
22
28
32
27 27
27 27
Universités U1, U2, U3
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ésumés (effectuer des précalculs)
– Partitionnement vertical (diminuer la taille des tables)
• Trois modèles : étoile, flocon, constellation
24
Modèle en étoile
Product Table
Product_id
Product_desc
…
– Une table « fact » par indicateur
– Une table dénormalisée pour
chaque dimension
– associations en étoile entre les
tables « fact » et « dimension »
Time Table
Day_id
Month_id
Period_id
Year_id
Store Table
Store_id
District_id
...
Sales Fact Table
Product_id
Store_id
Item_id
Day_id
Sales_dollars
Sales_units
...
Item Table
Item_id
Item_desc
...
25
Choix des tables « fact » et « dimension »
• Analyse des requêtes
– attributs « group-by » indiquent les dimensions
– attributs agrégés indiquent les mesures
– attributs « where » sont les attributs des tables « 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
26
Choix des tables
• Analyse des procédés métier
– table fait est dérivée d’une activité liée à un
procédé métier
– les attributs de la table fait sont des attributs clés
qui identifient l’activité plus des mesures
– les dimensions sont dérivées des attributs clés des
tables faits
27
Modèle en flocon
Product Table
Product_id
Product_desc
Store Table
Store_id
Store_desc
District_id
District Table
District_id
District_desc
Sales Fact Table
Item_id
Store_id
Sales_dollars
Sales_units
Time Table
Week_id
Period_id
Year_id
Item Table
Item_id
Item_desc
Dept_id
Dept Table
Dept_id
Dept_desc
Mgr_id
Mgr Table
Dept_id
Mgr_id
Mgr_name
28
Avantages/Inconvénients
• Modèle en étoile :
– évite jointures par dénormalisation
• Modèle en flocons
– chargement/rafraîchissement plus rapide
29
Modèle en constellation
Warehouse Table
Warehouse_id
Warehouse_loc
Product Table
Product_id
Product_desc
Store Table
Store_id
District_id
Sales Fact Table
Item_id
Product_id
Week_id
Store_id
Sales_dollars
Sales_units
Inventory Fact Table
Product_id
Warehouse_id
Week_id
Cost_dollars
Qty_on_hand
Time Table
Week_id
Period_id
Year_id
Item Table
Item_id
Dept_id
30
Temps dans les dimensions
Fact Table
Day_id
Fact Table
Day_id
Fact Table
Day_id
Time Dimension
Day_id
Month_id
Quarter_id
Half_year_id
Year_id
Time Dimension
Day_id
Month_id
Quarter_id
Half_year_id
Year_id
Fiscal_month_id
Fiscal_ quarter_id
Fiscal_ half_year_id
Fiscal_ year_id
Time Dimension
Day_id
Month_id
Quarter_id
Half_year_id
Year_id
31
Modélisation de la dimension Temps
• Gestion du changement des valeurs dans les
dimensions
• modifier les données :
– perte de l’historique
– perte des contraintes référentielles
• créer de nouveaux tuples :
– ID doit inclure une notion de version
– complique la sémantique des requêtes
32
Versions dans les dimensions
Customer History Table
Cust_id Cust_name Version
1
ABC Co
1
1
ABC Ltd
2
2
XYZ Inc
1
Customer Table
Cust_id
1
2
3
Sales Fact Table
Unit Sell Price
Dollar Sales
Unit Sales
Dollar Cost
33
Difficultés de la modélisation
• Choix des attributs mesures
– mesures vs propriétés
– caractéristiques qui déterminent requêtes possibles
• Représentation des agrégats
– granularité des données dans les tables « facts »
– modélisation des agrégats
– choix des agrégats
34
Mesures et propriétés
• Propriété : attribut d’une dimension représentant une
constante ou une valeur discrète
– couleur
– prix d’un article en catalogue
• Mesure : attribut d’une table « fact » représentant une
valeur à variation continue
– solde
– nombre total des articles commandés
35
Propriétés des mesures
• Mesures additives, semi-additives : peuvent être
sommées, moyennées, etc, selon toutes ou certaines
dimensions. Exemple : quantité, bénéfice, coût, ...
• Mesures non additives : doivent être traitées de
façon atomique. Exemple : quantité cumulée (solde,
etc)
• Les mesures qui s’accumulent avec le temps peuvent
seulement être moyennées par rapport au temps
– Inventaire de chaque produit
– solde sur un compte en banque
36
Exemples de mesures
Time Dimension
Additive
Product Dimension
Sales Fact Table
Time_key
Product_key
Store_key
Promotion_key
Quantity_sold*
Revenue*
Cost*
Customer Count
Store Dimension
Semi-Additive
Promotion Dimension
Cost by Product + Store + Time
Cost by Product + Promotion + Time
Revenue by Product + Promotion + Time
Revenue by Product + Promotion + Store + Time . . .
37
Granularité des données
• Analyse d’un métier au niveau de ses transactions
– comparaison des ventes entre matin et après-midi
– périodes de pointe des demandes de renseignement
• Nécessite une granularité fine
– ventes par produit, par client, par minute, par magasin
– demandes par produit, par client, par minute
38
Granularité des données (2)
• Analyse d’un métier par tranche de temps
– variations des demandes de renseignements sur les jours du
mois
• Nécessite une agrégation périodique des données
– demandes par produit, par nombre de clients, par jour
39
Modélisation des agrégats
• agrégats : attributs calculés à partir d’attributs
mesures et de fonction de calcul. En général,
modélisé par des tables « fact » spécifiques
• problème : choix de ces tables ?
– Accélère le traitement des requêtes OLAP
– ralentit le rafraîchissement de l’entrepôt et augmente la
taille de l’entrepôt
40
Table fact avec agrégat
Customer Table
Cust_id
Cust_name
Store Table
Store_id
District_id
Sales Fact Table
Unit Sell Price
Dollar Sales
Unit Sales
Dollar Cost
Time Table
Week_id
Period_id
Year_id
Summary for Product,
Store, and Time for all
Customers
Customer Summary
Cust_id
Total Sales
Highest Sales Value
Average Sales
Product Table
Product_id
Product_desc
41
Choix des agrégats
• But: optimisation des requêtes très coûteuses en
temps d’exécution
• problème : inflation du nombre d ’agrégats
• solution :
– les agrégats sont réutilisables pour plusieurs requêtes,
même partiellement
– choisir les meilleurs agrégats communs à l’ensemble des
requêtes
42
Réutilisation des agrégats
SALES FACTS
Sales$ Region
10,000 North
12,000 South
11,000 North
15,000 West
18,000 South
20,000 North
10,000 East
2,000 West
Month
Jan 97
Feb 97
Jan 97
Mar 97
Feb 97
Jan 97
Jan 97
Mar 97
SALES BY MONTH/REGION
Month Region Tot_Sales$
Jan 97 North
41,000
Jan 97 East
10,000
Feb 97 South 40,000
Mar 97 West
17,000
SALES BY MONTH
Month Tot_Sales
Jan 97 51,000
Feb 97 40,000
Mar 97 17,000
43
Méthodes de conception
Dimensions de la démarche
• descendante : on part d ’un schéma conceptuel du DW, puis
on produit un schéma ROLAP, puis on définit la traduction
des sources dans ce schéma
• ascendante : on part des schémas des sources qu’on intègre
progressivement pour obtenir un schéma global structuré selon
un modèle ROLAP
• local vers global : débuter par des data marts puis passer à un
entrepôt global
• global vers local : débuter par le DW global puis définir des
entrepôts locaux
44
Descendante vs ascendante
• Approche descendante
– principe : concevoir un schéma d’entreprise intégré
(Modèle d’entreprise) dont les schémas des sources seront
dérivés
– nécessite outils de modélisation
– approche robuste mais lente et coûteuse
• Approche ascendante
– principe : intégrer les schémas des sources de façon à
dériver un schéma global
– approche pragmatique mais évolution difficile
45
Approche ascendante
1. Intégration de schémas conceptuels hétérogènes en un
schéma global
–
–
–
–
pré-intégration
comparaison de schémas
conformance de schémas
fusion et restructuration
2. Transformation d’un schéma opérationnel en un
schéma ROLAP
46
Transformation OLTP-ROLAP
• Méthode générale
–
–
–
–
–
–
éliminer les attributs inutiles dans les sources
isoler les dimensions et les faits
estampiller les données
choix et modélisation des mesures
arrangement en modèle ROLAP
enrichissement par données contextuelles
• Exemple :
– transformation d’un schéma de type TPC-C
47
Etape 1 : élimination de données
Order
Ord ID
Ord Sales ID
Cust ID
Sales Location
Order Date
-Date Filled
-Comments
-Routing
-Ship Address
Customer
Cust ID
Cust Name
Address
Phone
-Created By
-Credit Checked By
-Credit Clerk ID
Salesman
Salesman ID
Manager ID
Projected Sales
-Created By
-Hire Date
Order Item
Ord ID
Line No
Product ID
Quantity
Unit Price
Item Total
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
-Product Status
-Created By
48
Etape 2 : ajout du temps
Order
Ord ID
Ord Sales ID
Cust ID
Sales Location
Order Date
Customer
Cust ID
Cust Name
Address
Phone
+Snapshot Date
Salesman
Salesman ID
Manager ID
Projected Sales
+Snapshot Date
Order Item
Ord ID
Line No
Product ID
Quantity
Unit Price
Item Total
+Snapshot Date
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
+Snapshot Date
49
Etape 3: choix des mesures
Order
Ord ID
Ord Sales ID
Cust ID
Sales Location
Order Date
+Total Order Value
+Discount Applied
Customer
Cust ID
Cust Name
Address
Phone
Snapshot Date
+Total Cust Orders
Salesman
Salesman ID
Manager ID
Projected Sales
Snapshot Date
+Total Sales Orders
Order Item
Ord ID
Line No
Product ID
Quantity
Unit Price
Item Total
Snapshot Date
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
Snapshot Date
+Total Products
Ordered
50
Etape 4 : ajout de données
Order
Ord ID
Cust ID
Ord Sales ID
Sales Location
Order Date
Total Order Value
Discount Applied
Customer
Cust ID
Cust Name
Address
Phone
Snapshot Date
Total Cust
Orders
Salesman
Salesman ID
Manager ID
Projected Sales
Snapshot Date
Total Sales Orders
Order Item
Ord ID
Line No
Product ID
Quantity
Unit Price
Item Total
Snapshot Date
+Warehouse ID
+Order Lead
Time
+Stock Out
+Stock Level
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
Snapshot Date
Total Products
Ordered
+Inventory Item
+Product ID
+Warehouse ID
+Order Lead Time
+Stock Out
+Stock Level
51
Etape 5: réarrangement
Order
Ord ID
Cust ID
Ord Sales ID
Sales Location
Order Date
Total Order Value
Discount Applied
Customer
Cust ID
Cust Name
Snapshot Date
Salesman
Salesman ID
Manager ID
Snapshot Date
Customer Detail
Cust ID
Snapshot Date
Address
Phone
Total Orders
Salesman History
Salesman ID
Snapshot Date
Projected Sales
Total Orders
Order Item
Ord ID
Line No
Product ID
Quantity
Unit Price
Item Total
Snapshot Date
Warehouse ID
Order Lead Time
Stock Out
Stock Level
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
Snapshot Date
Total Products
Ordered
52
Etape 5 (suite)
Order
Ord ID
Cust ID
Ord Sales ID
Sales Location
Order Date
Total Order Value
Discount Applied
+Line No
+Product ID
+Quantity
+Unit Price
+Item Total
+Warehouse ID
+Order Lead Time
+Stock Out
+Stock Level
Customer
Cust ID
Cust Name
Snapshot Date
Salesman
Salesman ID
Manager ID
Snapshot Date
Customer Detail
Cust ID
Snapshot Date
Address
Phone
Total Orders
Salesman History
Salesman ID
Snapshot Date
Projected Sales
Total Orders
Order Item
Ord ID
Line No
Product ID
Quantity
Unit Price
Item Total
Snapshot Date
Warehouse ID
Order Lead Time
Stock Out
Stock Level
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
Snapshot Date
Total Products
Ordered
53
Etape 6 : ajout des données de contexte
+Sales Location
+Region ID
+Effective From
+Effective To
+Contains Region ID
+Region Description
Product
Product ID
Class ID
Category ID
Vendor ID
SKU
Snapshot Date
Total Products
Ordered
Order
Ord ID
Cust ID
Ord Sales ID
Sales Location (Region ID)
Order Date
Total Order Value
Discount Applied
Line No
Product ID
Quantity
Unit Price
Item Total
Warehouse ID
Order Lead Time
Stock Out
Stock Level
Salesman History
Salesman ID
Snapshot Date
Projected Sales
Total Orders
Salesman
Salesman ID
Manager ID
Snapshot Date
Customer
Cust ID
Cust Name
Snapshot Date
Customer Detail
Cust ID
Snapshot Date
Address
Phone
Total Orders
54
Approche descendante
Problème : on dispose d’un schéma d’entrepôt ROLAP = ens. de
vues. Pour chaque vue de ce schéma, il faut spécifier sa
construction à partir des sources.
Exemple d’approche possible :
1. Décrire les propriétés sémantiques des sources et des vues
2. Pour chaque vue,
– déterminer les relations source pertinentes
– définir les opérations pertinentes entre ces relations
– choisir les requêtes à générer
55
Extensions de SQL pour OLAP
• Plusieurs propositions d’extensions :
– SQL : Dimension, Agrégation, Roll up, Cube
– Densification
– SQL Model (spreadsheet)
56
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
57
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);
58
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);
59
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
60
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)
61
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] …
[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] …
[null, null, c1, 200] …
total par mag. par client
total par client
62
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
…
63
Exemple de ROLLUP (3)
SELECT Type, Store, SUM(Number)
FROM Pets
GROUP BY type,store
Type
Dog
Cat
Turtle
Dog
Store
Miami
Miami
Tampa
Tampa
Number
12
18
4
14
Cat
Dog
Turtle
Naples
Naples
Naples
9
5
1
Résultat avec ROLLUP
Type
Cat
Cat
Cat
Dog
Store
Miami
Naples
NULL
Miami
Number
18
9
27
12
Dog
Dog
Dog
Turtle
Turtle
Turtle
NULL
Naples
Tampa
NULL
Naples
Tampa
NULL
NULL
5
14
31
1
4
5
63
64
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 d1, d2
…
group by d1, …dn
group by d2
group by d1, d2
group by d3
group by d1, d3
…
…
Cube partiel : moins de niveaux
GROUP BY D CUBE(D’)
65
Exemple de CUBE
Cat
Miami
18
SELECT Type, Store,
SUM(Number)
FROM Pets
GROUP BY CUBE (type, store)
Cat
Naples
9
Cat
NULL
27
Dog
Miami
12
Dog
Naples
5
Exercices
• Ecrire en SQL une requête
équivalente (sans utiliser cube)
• Combien de clauses select sontelles nécessaires pour obtenir un
cube de dimension n ?
Dog
Tampa
14
Dog
NULL
31
Turtle
Naples
1
Turtle
Tampa
4
Turtle
NULL
5
NULL
NULL
63
NULL
Miami
30
NULL
Naples
15
NULL
Tampa
18
66
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.
67
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 (what if,…)
68
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
69
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
70
Déroulement d’une requête
Mapping des colonnes vers des entités Model
Country
Partition
Product
Dimension
Year
Dimension
Sales
Measure
Règles
Sales(Prod1, 2002) = Sales(Prod1,2000) + Sales(Prod1,2001)
Sales(Prod2, 2002) = Sales(Prod2, 2000) + Sales(Prod2, 2001)
71
Résultat
Country
Product
Year
Sales
Partition
Dimension
Dimension
Measure
A
Prod1
2000
10
A
Prod1
2001
15
A
Prod2
2000
12
A
Prod2
2001
16
B
Prod1
2000
21
B
Prod1
2001
23
B
Prod2
2000
28
B
Prod2
2001
29
A
Prod1
2002
25
A
Prod2
2002
28
B
Prod1
2002
44
B
Prod2
2002
57
Données d’origine
Résultat des règles
72
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
73
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%
74

Documents pareils