lundi 21 janvier 2013

Conseil 2: Représenter plusieurs dates à partir d'une seule dimension


La question la plus fréquente dans mes cours et e-mails est de savoir comment gérer plusieurs timestamp sur un enregistrement d'une table de faits. Bien que la réponse correcte et immédiate est « faites de chaque timestamp, une dimension Temps », il est utile de décrire cette approche avec précaution car elle illustre bien tout un ensemble de techniques modernes de conception d'entrepôt, sur lesquels je mettrais l'accent en MAJUSCULES.


Tout d'abord, choisir le GRAIN FONDAMENTAL de votre table de faits. Chaque table de faits que j’ai conçus avait comme grain une transaction, une période, ou une agrégation (voir l'article sur les grains fondamentaux). Quand vous comprendrez le grain fondamental, vous serez en mesure de juger quelle est la signification et la pertinence de multiples timestamp pour celui-ci.
Les multiples timestamp surviennent le plus souvent lorsque l’enregistrement est une agrégation. Lorsque, par exemple, l’enregistrement représente l'histoire complète d'une ligne de commande. Les multiples timestamp peuvent représenter :
  • La date de commande
  • La date de livraison souhaitée
  • La date de chargement
  • La date de livraison réelle
  • La date de retour 

Deuxièmement, pour l'exemple de la ligne de commande ci-dessus, créer cinq ROLES pour une dimension Temps sous-jacente unique (voir l'article sur les rôles). Cela signifie cinq champs dans la table de faits, où chaque champ est une clé étrangère reliée à une dimension. La dimension Temps unique est « exposée » à la table de faits à travers cinq points de vue, ce qui rend chaque instance de la dimension Temps sémantiquement indépendante.

Troisièmement, assurez-vous que les clés étrangères dans la table de faits soient des clés de substitution (SURROGATE KEY). En d'autres termes, ce ne sont ni des dates ni des timestamp, mais sont plutôt de simples entiers. Résister à l’envie de mettre du sens dans ces clés (voir les articles ici et ici pour en savoir plus sur les clés de substitution). Si vous pensez sérieusement à notre exemple de ligne de commande, vous aurez à accepter que certains enregistrements doivent contenir les valeurs "inconnu" ou "n'est pas encore arrivé" là où l’on souhaite un timestamp. C'est une des raisons classique d'utilisation des clés de substitution.




Si vos timestamp sont précis à la minute ou à la seconde, alors vous devez séparer le jour et l’heure pour en faire des dimensions distinctes. 
Nous discuterons des variations sur ces modélisations de timestamp dans un prochain article.


Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #2: Multiple Time Stamps", publié le 7 janvier 2000.

Aucun commentaire:

Enregistrer un commentaire