Table de faits avec faits et table de faits sans fait
Définition : Table de faits avec faits
En général la table des faits comporte un ou plusieurs attributs représentant des faits, que l'on va sommer sur les dimensions lors de l'analyse.
Exemple : Table des fait avec faits
Par exemple une table des faits représentant des achats de produits pourra contenir la quantité de produits achetés, le chiffre d'affaire de la vente...
ventes (fk_date, fk_produit, quantite, ca)
SELECT sum(v.quantite)
FROM ventes v JOIN date d
ON fk_date=pk_date
GROUP BY d.week
Définition : Tables de faits sans fait (factless fact table)
Dans certains cas, on mesure directement dans la table des faits des événements unitaires. Un fait est donc juste un enregistrement dans la table des faits.
Dans ce cas le table des faits ne contient que des clés étrangères, et aucun fait en tant que tel (c'est l'enregistrement qui est le fait).
Attention : Analyse en count
Pour analyser une table de faits sans fait, on ne peut pas utiliser sum
(il n'y a rien à sommer), on utilise count
(on analyse le nombre de faits enregistrés).
Exemple : Tables de faits sans fait
On enregistre ici directement des ventes de produits qui sont toujours vendus à l'unité, en vue d'une analyse en quantité (où le prix de vente n'intervient pas).
ventes (fk_date, fk_produit)
SELECT count(*)
FROM ventes v JOIN date d
ON fk_date=pk_date
GROUP BY d.week
Méthode : Ajouter une colonne avec la constante 1
Afin de rendre ce cas plus lisible, il est parfois conseillé d'ajouter une colonne qui contient la valeur 1 pour toutes les lignes. On matérialise ainsi le fait par une valeur, même si elle est toujours la même, et il est de nouveau possible de travailler en somme.