Les tables de faits sans faits semblent être un oxymore, un peu comme des crevettes géantes. Comment pouvez vous avoir une table de faits qui n'ait pas de faits? Dans ce conseil, nous utilisons une table de faits sans faits pour compléter nos stratégies de dimensions à évolution lente.
Pour rappel, une table de faits sans faits capture les relations plusieurs-à- plusieurs entre des dimensions, mais ne contient aucun faits numérique ou textuel. Elles sont souvent utilisées pour enregistrer des événements ou couvrir une information. En voici quelques exemples:
- identifier les promotions sur les produits (pour voir les produits en promotion qui ne se vendent pas)
- suivre l'assiduité des étudiants ou les inscriptions
- suivre les accidents pour les assurances
- identifier les bâtiments, installations et équipements annexes pour un hôpital ou une université
Imaginez que nous travaillons sur une modélisation pour une grande entreprise qui fournit des produits aux consommateurs (compagnie aérienne, assurance, établissement de carte de crédit, banque...). L'entreprise traite avec des dizaines de millions de clients. En plus d'un schéma de type transaction pour suivre le comportement des clients et un schéma de type instantané périodique pour suivre la tendance de nos clients à travers le temps pour couvrir les besoins de base, nos partenaires ont besoins de fonctionnalités pour voir le profil exact d'un client (incluant des dizaines d'attributs) à n'importe quel moment dans le temps.
Supposons que nous concevons une dimension Client classique (avec une évolution lente de type 2 pour certains attributs),
Supposons que nous concevons une dimension Client de base (avec un minimum d'attributs à évolution lente de type 2), ainsi que quatre dimensions "mini" pour suivre les modifications apportées aux attributs de crédit du client, de préférences du client, de segmentation de marché, et à la géographie du client. Les cinq clés étrangères sont inclues dans la table de faits à la transaction, ainsi que l'instantané mensuel. Ces clés étrangères représentent "l'état" du client lorsque la ligne d'information est chargée. Jusqu'ici tout va bien, mais nous avons encore besoin de fournir le profil des clients à tout moment. Nous utilisons une autre table de faits d'instantané périodique, chargée quotidiennement pour chaque client pour capturer la relation à un moment dans le temps entre la dimension Client et les mini-dimensions associées. Cela se traduit par le chargement de dizaines de millions d'enregistrements avec plusieurs années d'historique. Nous faisons rapidement le calcul et décidons d'évaluer d'autres alternatives.
Et maintenant vous pensez "C'est très bien, mais qu'en est-il des crevettes géantes?" Nous pouvons utiliser une table de faits sans faits pour enregistrer la relation entre la dimension Client et les mini-dimensions à travers le temps. On charge une ligne d'information dans la table de faits sans faits à chaque fois qu'il y a un changement de type 2 dans la dimension Client de base ou dans la relation entre la dimension de base et les mini-dimensions. La table de faits sans faits contient les clés étrangères pour la dimension Client et chacune des quatre mini-dimensions lorsque la ligne est chargée. Nous améliorons alors cette conception avec deux dates, date d'effet et date de fin, pour trouver le profil d'un client à tout moment. Nous pourrions aussi ajouter une dimension simple pour signaler le profil actuel d'un client, ainsi que de la raison du changement pour indiquer ce qui a provoqué l'ajout d'une nouvelle ligne dans la table de faits sans faits.
Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #50: Factless fact tables? sounds like jumbo shrimp?", publié le 16 octobre 2003.
Aucun commentaire:
Enregistrer un commentaire