Entrepôt des Données, année 2019
Bases de données vs Entrepôts de données
Précédemment:
On a vu comment on pouvait utiliser des bases de données dans des processus d’analyse de données.
Nous avons abordé la différence entre base de données OLAP et OLTP ainsi que l’importance de distinguer base de données en production, base de données d’analyses. Nous avons abordés les processus ETL qui permettent d’alimenter les bases de données analytique de données aux formats variés.
Aujourd’hui nous allons voir comment utiliser une base de données relationnelle classique pour faire de l’analyse de données. On parle alors de bases de données ROLAP (pour relationnel OLAP)
Bases de données ROLAP
Dans la suite, nous supposons que les opérations d’analyses que nous souhaitons réalisés sont celles du Cube OLAP (rotation, projection, agrégation, désagrégation).
La table des faits contient l’ensemble des lignes bruts qui nous intéressent. Chacune de ses colonnes peut faire partie d’une dimension d’analyse et chaque dimension d’analyse peut être composé de plusieurs colonnes.
Modélisation naïve
Si la table des faits (voire cours3) est stockée telle quelle dans une table
relationnelle, il est possible de faire toutes les opérations
d’agrégation via de simple GROUP BY
.
Réaliser des projections est très simple, il suffit de rajouter des
conditions dans la WHERE
clause mais agréger et desagrégé
les dimensions peut rapidement devenir très compliquer.
Rappels sur les bases de données relationnelles
Dans une base de données classique sur une table T
,
réaliser une projection d’une vue du cube dans les dimensions
d1
et d2
qui agrège selon une dimension
d3
se fait simplement:
SELECT d1,d2, AGG(d3)
FROM T
WHERE --- ici on met les projections ---
GROUP BY (d1, d2);
Ici, l’opération AGG
doit être une opération
d’agrégation supporter par la base de données. En SQLite3
il y a peu d’opération supporter (typiquement la moyenne, la somme, le
nombre mais pas la médiane). Dans des logiciels plus complet, les
opérations statistiques classiques sont supportées.
Par exemple dans PostgreSQL
,
les corrélations, covariance, et opération de régression.
Performance d’un Group By
Vous trouverez ici un notebook qui permet d’étudier la performance des GroupBy sur des tables SQLite.
Le schema en étoile
Il arrive (en fait c’est tous le temps le cas), qu’une dimension d’analyse soit l’accumulation de plusieurs colonnes de la table des faits. Par exemple, une position géographique peut être représenter un pays, une région, une ville, une adresse.
Réciproquement, certaines colonnes peuvent être dimensionnée et agréger pour augmenter ou diminuer la granularité de l’analyse.
Le schéma en étoile permet de structurer les données pour simplifier la mise en place des requêtes. Il s’agit de créer une table par dimension ou chaque colonne correspond à un niveau de granularité et de reconstituer la table des faits via une vue (matérialisée ou non) sur les dimensions.
Vous trouverez ici un notebook qui
illustre la mise en étoile dans le cas de l’analyse des données
sirene
du TD précédant.
TD4
Reprenez le dataset openfoodfact du premier TD. Mettre en place une base de données SQLite qui réalise un schéma en étoile autours de vos dimensions d’analyses.
Compiled the: mer. 04 sept. 2024 12:49:41 CEST