Les tables de faits sont construites autour de mesures numériques. Quand une mesure est prise, un enregistrement dans la table de fait est ajouté. La mesure peut être le montant d'une vente, la valeur d'une transaction, une balance en fin de mois, le rendement d'un processus de fabrication, ou encore une mesure classique de laboratoire. Si nous enregistrons plusieurs nombres au même moment, nous pouvons souvent les ajouter au même enregistrement.
Nous complétons la mesure avec toutes les chose que nous savons être vraies au moment précis où elle est prise. A coté de la date et de l'heure, nous connaissons souvent des choses comme les clients, les produits, les conditions du marché, les employés, les statuts, les fournisseurs, et bien d'autres entités qui dépendent du processus que nous mesurons.
Nous regroupons toutes les choses que nous savons dans des enregistrements de dimensions contenant des textes descriptifs, et nous connectons les faits à ces enregistrements par l'intermédiaire d'une clé étrangère (FK) / clé primaire (PK).
Cela correspond à une organisation classique d'une table de faits (ici avec N dimensions et deux faits appelés Dollars et Unités):
DimClé1 (FK)
DimClé3 (FK)
...
DimCléN (FK)
Dollars
Unités
Les champs Dollars et Unités sont des emplacements réservés pour ces mesures spécifiques. Cette conception montre que:
- ces deux mesures sont habituellement présentes ensemble
- ce sont les seules mesures dans le processus
- il y a beaucoup d'autres mesures possibles, en d'autres termes, cela vaut la peine de dédier cette table à ces mesures
Mais que ce passe-t-il lorsque ces trois affirmations ne valent plus? Cela arrive fréquemment lorsqu'on suit les investissements financiers complexes où chaque instrument d'investissement possède ces propres mesures. Cela arrive également dans les processus de fabrication industriel lorsque des lots sont petits et que chacun a des mesures particulières. Et enfin, les cliniques et laboratoires médicaux possèdes des centaines de mesures spéciales et rares. Ces trois exemples peuvent être décrits comme des "faits éparses".
Vous ne pouvez pas étendre simplement la table de faits pour enregistrer ces faits éparses. Sans quoi vous vous retrouveriez avec une longue liste de champs inexploitables, dont la plupart seraient nuls.
La réponse consiste à ajouter une "dimension fait" spéciale et de réduire la liste des faits à un simple champs Montant:
DimClé1 (FK)
DimClé2 (FK)
DimClé2 (FK)
DimClé3 (FK)
...
DimCléN (FK)
FaitClé (FK) <== nouvelle dimension
FaitClé (FK) <== nouvelle dimension
Montant
La "dimension fait" décrit la manière et les mesures du Montant. Elle contient le champs du fait, ainsi que l'unité de mesure, et tout autres restrictions nécessaires. Par exemple, si la mesure ressemble à un inventaire ou une balance, alors elle peut être totalement additive sur toutes les dimensions excepté le temps. Mais si c'est une mesure d'intensité comme la température, alors elle est non-additive. Synthétiser ce type de mesure en fonction des dimensions se fait donc avec une moyenne, et non une somme.
Cette approche est élégante parce qu'elle est très flexible. Vous ajoutez de nouveaux types de mesures en ajoutant de nouveaux enregistrements dans la "dimension fait", et non en modifiant la structure de la table. Vous éliminez également toutes les valeurs nulles parce qu'un enregistrement existe uniquement si une mesure existe.
Mais il existe quelques compromis. Vous pouvez générer beaucoup plus d'enregistrements. Si certaines de vos mesures donnent 10 résultats, maintenant vous avez 10 enregistrements au lieu d'un seul. Pour les situations extrêmement éparses, c'est un bon compromis. Mais si la densité des faits augmente, alors le nombre d'enregistrements augmente également et il sera peut être préférable de revenir à une modélisation plus classique.
Cette approche rend également les applications plus compliquées. Combiner deux nombres qui sont liés à un même événement est plus difficile parce que maintenant vous devez aller chercher deux enregistrements. Et vous devez être très prudent pour ne pas combiner des Montants incompatibles, puisque toutes les mesures existent dans un même champs Montant.
Mais ces contraintes valent clairement le coup si vous travaillez dans le monde de la finance, de l'industrie, ou de la pharmaceutique.
Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #20: Sparse facts and facts with short lifetimes", publié le 27 février 2001.
Aucun commentaire:
Enregistrer un commentaire