Poly BDM
Poly BDM
Poly BDM
1
Figure 1: Processus complet. OLTP-OLAP
6. dimensionnalité générique
7. gestion des données éparses
8. multi-utilisateurs
9. opérations sur les dimensions
2
10. manipulation intuitive des données
11. souplesse d’affichage et d’édition
12. dimensions et niveaux multiples
Cependant, ces règles sont faussées par le fait que Codd travaillait pour un éditeur de
système OLAP et qu’elle décrivent donc ce système commercial !
On peut donc se référer au modèle FASMI : Fast Analysis of Shared Multidimensional
Information. Les réponses doivent donc être rapides, le système doit fournir des outils d’analyse
numériques et statistiques, l’architecture doit être multi-utilisateurs et offrir une vue multidi-
mensionnelle des données, quels que soient leur volume et leur mode de stockage.
Jusqu’à présent, il n’existe aucun consensus, pas de modèle ou de langage standard.
Bibliographie :
http://www.olapreport.com
http://www.billinmon.com
Codd, Providing OLAP (On-Line Analytical Processing) to User-Analysts: An IT Mandate,
Arbor Software White Paper, 1993.
R. Kimball, The Datawarehouse Toolkit, John Wiley & Sons, 1996.
2 Entrepôts de données
Pour Inmon, un entrepôt de données (Data Warehouse - DW) est : subject-oriented, integrated,
time-variant, and non volatile collection of data in support of management decision making pro-
cess. Les données sont donc historisées, maintenues et matérialisées (stockées physiquement).
Cette collection de données constitue un ensemble homogène (à partir de données hétérogènes,
très nombreuses et distribuées), exploitable (pour un processus de décision). Pour R. Kimball,
un entrepôt de données est a copy of transaction data specifically structured for query and
analysis.
Il existe deux schémas principaux possibles pour la modélisation de l’entrepôt : le schéma
en étoile et le schéma en flocon.
Quel que soit le modèle considéré, on distinguera la table des faits qui contient l’information
à analyser (par exemple les ventes) des tables de dimensions qui contiennent les informations
sur les dimensions d’analyse (par exemple le lieu, le temps, la description du produit).
3
Figure 2: Schéma en étoile
4
Figure 4: Schéma en flocon
5
Figure 5: Schéma en flocon : exemple
6
Figure 6: Cube de données
3 Cubes de données
Le modèle multidimensionnel sur lequel s’appuie OLAP permet la définition d’hypercubes de
données (appelés cubes par abus de langage) afin de faire valoir la représentation dimensionnelle
des données. À partir des schémas étoile et flocon, on construit les cubes de données, comme
indiqué figure 6. Pour des raisons évidentes de visualisation, cet hypercube n’a que trois
dimensions, il faut l’imaginer en k dimensions.
Une base de données multidimensionnelle est un ensemble d’hypercubes définis le long
de dimensions. Ces dimensions peuvent être munies de hiérarchies. On distingue alors les
hiérachies simples des hiérarchies multiples, comme indiqué sur la figure 7. Le niveau ALL
correspond à l’agrégation totale, comme illustré sur la figure 8.
La mesure désigne le contenu des cellules de l’hypercube. La mesure peut être additive,
semi-additive ou non additive :
• Mesure non additive : on ne peut pas sommer les valeurs des cellules en conservant un
sens. Par exemple, si le cube contient des moyennes de ventes par mois, produit et ville,
il n’y a pas de sens à sommer les valeurs des cellules des villes pour les regrouper en
départements.
7
Figure 8: Hiérarchies : niveau ALL
• Mesure semi-additive : on peut sommer sur certaines dimensions en gardant un sens mais
pas sur toutes. Par exemple, si on considère un cube décrivant l’état des stocks par ville,
produit et mois, il est possible de faire la somme sur les dimensions ville et produit pour
connaı̂tre l’état global des stocks pour toutes les villes ou pour tous les produits, mais il
n’y a aucun sens à sommer sur la dimension temporelle des mois.
• Mesure additive : on peut sommer sur toutes les dimensions tout en conservant un sens.
Par exemple, si l’on considère les sommes des ventes par produits, villes et mois, on peut
faire la somme des valeurs des cellules tout en conservant un sens aux données.
8
select dim1, ..., dimk, AGREGATION
from table_faits, table_dim1, ..., table_dimk
where [jointure]
Group By dim1, ... , dimk
[Having ...] ;
PIVOT/ROTATE
12 42
(rotation)
12 42 42 42
35 18 37 42
35
16 3
L’inversion (switch) consiste à inverser l’ordre de certaines valeurs (figure 11). Certaines
informations se retrouvent alors placées l’une à côté de l’autre, ce qui facilite la découverte
d’un phénomène.
9
SWITCH
12 42 12 42
12 42 42 (inversion) 12 42 42
35 18 37 18 35 37
35 35
16 3 16 3
ROLL-UP
12 42 21 17,7 20 42
(generalisation) 42
12 42 42 21 17,7 20 42
35 18 37
35
16 3
4.3 Sélection
Il existe deux types de sélection : sur les cellules et sur les dimensions.
10
SLICE
12 42 12
(restriction)
12 42 42 12
35 18 37
35
16 3 3
DICE
12 42 12
(projection)
12 42 42 12
18
35 18 37 35 18
35
35 35
16 3 16
5 Stockage physique
Le principal problème posé pour le stockage des cubes de données est leur nature peu dense,
éparse (sparsity), de très nombreuses cellules étant vides. Il existe trois stratégies de stockage
physique : le stockage sous la forme relationnelle (ROLAP), sous la forme multidimensionnelle
(MOLAP) ou une solution hybride (HOLAP) combinant ces deux première approches.
5.1 ROLAP
On nomme ROLAP l’approche Relationnel OLAP. Les données sont stockées sous la forme
de tables relationnelles. Elles sont modélisées sous la forme de schémas en étoile ou flocon.
Les requêtes multidimensionnelles doivent alors être traduites en requêtes relationnelles (SQL).
Ce modèle est excellent vis à vis de la capacité de stockage, mais les requêtes sont difficiles à
définir et à mettre en œuvre et sont coûteuses.
5.2 MOLAP
On nomme MOLAP l’approche Multidimensionnelle OLAP. La technologie de stockage
est multidimensionnelle. Les données sont stockées sous la forme de tableaux multidimension-
nels, des index multidimensionnels sont définis. Cette tecnologie de stockage nécessite donc
des techniques de compression face à la faible densité des données (sparsity). La taille des
données pouvant être ainsi stockées est faible par rapport à la solution ROLAP. Cependant,
les requêtes sont écrites de manière intuitive et efficace. Toutefois, il faut redéfinir un langage
de manipulation des données alors qu’il n’existe aucun consensus ni technologie reconnue et
vraiment établie.
5.3 HOLAP
On nomme HOLAP l’approche Hybride OLAP. Cette technologie combine les deux solutions
précédentes. Les données détaillées sont stockées dans une base de données relationnelle, et les
données agrégées dans une base multidimensionnelle.
11
5.4 Systèmes commerciaux
Produit Editeur Type
Essbase Arbor Software MOLAP
DB2 OLAP Server IBM ROLAP/MOLAP
Metacube Informix ROLAP
SQL Server (2000) Microsoft ROLAP
Express Server Oracle MOLAP
9i OLAP Oracle ROLAP/MOLAP
SELECT ...
GROUP BY ... {CUBE | ROLLUP| GROUPING SETS} (dimension_column) ;
ROLLUP calcule des sous-totaux ainsi que le total général, toutes données confondues.
Il est possible d’effectuer des ROLLUP partiels.
CUBE calcule tous les sous-totaux des combinaisons possibles des colonnes. Si n attributs
sont spécifiés dans la clause CUBE, il y aura 2n combinaisons de sous-totaux calculés. CUBE
calcule plus de sous-totaux que ROLLUP.
De même que précédemment, il est possible d’effectuer un GROUP BY CUBE partiel.
12
GROUP BY expr1, CUBE(expr2, expr3)
La fonction RATIO TO REPORT calcule le ratio d’une valeur par rapport à une somme
d’un ensemble de valeurs. Une valeur NULL est traitée comme un zéro pour le calcul de la
somme.
Exemple :
Les fonctions RANK et DENSE RANK permet de retourner le rang d’une valeur parmi
une liste de valeurs. On peut alors par exemple retourner les n meilleurs (requêtes Top-N) ou
les n moins bons (requêtes Bottom-N). La différence entre RANK et DENSE RANK est que
DENSE RANK ne laisse pas de trous dans les rangs quand il y a des ex-aequo.
Exemple :
13
Les options de rafraı̂chissement permettent de définir si le rafraı̂ssement se fait ou non
automatiquement, et s’il se fait automatiquement à quels moments il doit s’effectuer. Par
exemple :
begin
dbms_mview.refresh(’olapv_emp’);
end;
/
Il doit y avoir au moins une clause hiérarchie ou attribut. La clause LEVEL a la forme
suivante :
LEVEL level IS (table.column,...)
La clause hiérarchie a la forme suivante :
HIERARCHY hier (child_level CHILD OF parent_level,... [join_clause])
La clause attribut a la forme suivante :
ATTRIBUTE level DETERMINES (dependent_column,...)
La clause join a la forme suivante :
JOIN KEY (child_key_column,...) REFERENCES parent_level
Par exemple :
14
country CHILD OF
subregion CHILD OF
region
JOIN KEY (customers.country_id) REFERENCES country )
ATTRIBUTE customer DETERMINES
(cust_first_name, cust_last_name, cust_gender, cust_marital_status,
cust_year_of_birth, cust_income_level, cust_credit_limit)
ATTRIBUTE country DETERMINES (countries.country_name) ;
EXEC DBMS_OLAP.validate_dimension(’customers_dim’,USER,FALSE,FALSE);
SELECT table_name,
dimension_name,
relationship,
bad_rowid
FROM mview$_exceptions;
15