Les tables de faits sont la base de l’entrepôt de données. Ils contiennent les mesures fondamentales de l’entreprise et constituent la cible ultime de la plupart des requêtes d’entrepôt de données. Il ne sert à rien de hisser les tableaux de faits sur le mât à moins qu’ils n’aient été choisis pour refléter les priorités commerciales urgentes, qu’ils aient été soigneusement assurés de la qualité et qu’ils soient entourés de dimensions qui offrent une multitude de points d’entrée pour la contrainte et le regroupement. Maintenant que nous avons ouvert la voie aux tables de faits, voyons comment les construire et les utiliser.
Restez fidèle au Grain
La première et la plus importante étape de conception consiste à déclarer le grain de la table de faits. Le grain est la définition commerciale de ce que représente un enregistrement de table de faits unique. La déclaration grain n’est pas une liste de clés étrangères dimensionnelles qui implémentent une clé primaire pour la table de faits. Le grain est plutôt la description de l’événement de mesure dans le monde physique qui donne lieu à une mesure. Lorsque le scanner d’épicerie mesure la quantité et le prix facturé d’un produit acheté, le grain est littéralement le bip du scanner. C’est une excellente définition du grain!
Immédiatement après avoir déclaré le grain, il est possible de lister les clés étrangères dimensionnelles qui existent à ce grain. En déclarant le grain en premier, la discussion des clés étrangères reste fondée et précise.
Le but réel de la table des faits est d’être le référentiel des faits numériques observés lors de l’événement de mesure. Il est extrêmement important que ces faits soient fidèles au grain. Le « bip » de l’épicerie mesure la quantité et le prix étendu du produit scanné. Nous n’incluons jamais d’autres mesures numériques qui violent le grain, telles que les ventes globales de la catégorie ou les ventes de ce produit le mois dernier. Même si ces autres mesures peuvent être très utiles pour certains calculs, elles ne peuvent pas être combinées entre les enregistrements de faits et elles introduisent des asymétries étranges dans la conception des applications. Nous laissons nos outils de business intelligence (BI) calculer ces valeurs hors sujet au moment de la requête plutôt que de les coder en dur dans nos tables de faits.
Nous nous efforçons toujours de rendre les faits additifs dans les dimensions et parfaitement cohérents avec le grain. Notez que nous ne stockons pas le prix du produit scanné car le prix n’est pas additif. Nous stockons plutôt le prix étendu, qui peut être ajouté librement à travers les produits, les magasins, les heures et toutes les autres dimensions.
Accumulation à partir du grain le plus bas possible
L’entrepôt de données doit toujours être construit sur des tables de faits exprimées au grain le plus bas possible. Dans l’exemple, le bip de la caisse enregistreuse de l’épicerie est le grain le plus bas possible car il ne peut plus être divisé. Les tableaux de faits au grain le plus bas sont les plus expressifs car ils présentent l’ensemble de dimensions le plus complet possible pour ce processus métier. La table de faits sur les grains bip pourrait avoir la Date, le Magasin, le produit, le Caissier, le Gestionnaire, le Client, la Promotion, la Concurrence, le Panier et même la météo si toutes ces sources de données peuvent être rassemblées lorsque les enregistrements de faits sont créés. Les tableaux agrégés de grains plus élevés, tels que les ventes par catégorie par district, ne peuvent pas prendre en charge toutes ces dimensions et sont donc beaucoup moins expressifs. C’est une erreur fondamentale de ne publier que des tables agrégées aux utilisateurs finaux sans rendre les tables de faits sur les grains les plus bas facilement accessibles en les fouillant. La plupart des fausses notions selon lesquelles les tables dimensionnelles présupposent la question commerciale proviennent de cette erreur fondamentale.
Trois types de tables de faits
Si vous restez fidèle au grain, toutes vos tables de faits peuvent être regroupées en trois types seulement: grain de transaction, grain d’instantané périodique et grain d’instantané accumulateur (les trois types sont présentés à la figure 1). Sur la figure 1, les dimensions sont désignées par FK (clé étrangère) et les faits numériques sont en italique.
Le grain de transaction correspond à une mesure prise à un seul instant. Le bip de l’épicerie est un grain de transaction. Les faits mesurés ne sont valables que pour cet instant et pour cet événement. Le prochain événement de mesure pourrait se produire une milliseconde plus tard ou le mois prochain ou jamais. Ainsi, les tableaux des faits relatifs aux transactions sur les grains sont imprévisiblement clairsemés ou denses. Nous n’avons aucune garantie que toutes les clés étrangères possibles seront représentées. Les tables de faits sur les transactions sur les grains peuvent être énormes, les plus grandes contenant plusieurs milliards d’enregistrements.
Le grain de l’instantané périodique correspond à un laps de temps prédéfini, souvent une période de reporting financier. La figure 1 illustre un instantané périodique du compte mensuel. Les faits mesurés résument l’activité pendant ou à la fin de la période de temps. Le grain de l’instantané périodique garantit que toutes les entités déclarantes (comme le compte bancaire de la figure 1) apparaîtront dans chaque instantané, même s’il n’y a pas d’activité. L’instantané périodique est dense et prévisible, et les applications peuvent compter sur des combinaisons de touches toujours présentes. Les tableaux de faits instantanés périodiques peuvent également devenir volumineux. Une banque avec 20 millions de comptes et une histoire de 10 ans en aurait 2.4 milliards d’enregistrements dans le compte mensuel instantané périodique!
La table de faits d’instantanés accumulés correspond à un processus prévisible dont le début et la fin sont bien définis. Le traitement des commandes, le traitement des réclamations, la résolution des appels de service et les admissions au collège sont des candidats typiques. Le grain d’un instantané accumulé pour le traitement des commandes, par exemple, est généralement l’élément de ligne de la commande. Notez dans la figure 1 qu’il existe plusieurs dates représentant le scénario standard auquel une commande est soumise. Les enregistrements d’instantanés accumulés sont revisités et écrasés au fur et à mesure que le processus progresse dans ses étapes du début à la fin. Les tables de faits d’instantané accumulées sont généralement beaucoup plus petites que les deux autres types en raison de cette stratégie d’écrasement.