Il existe
plusieurs techniques bien documentées pour traiter les attributs des dimensions
à évolution lente.
En bref, avec les dimensions à évolution lente de type 1, la valeur de l'attribut est remplacée par la nouvelle valeur, effaçant l’historique des valeurs. Par exemple, lorsque l’emballage d’un produit change, l'attribut "Emballage" est simplement mis à jour avec la valeur actuelle.
Avec une dimension à évolution lente de type 2, un nouvel enregistrement avec les nouveaux attributs sont ajoutés à la dimension. Les enregistrements de la table de faits continuent de pointer vers l’ancienne clé de la dimension Produit avec l’ancienne valeur d’emballage, alors que les nouveaux enregistrements pointeront vers la nouvelle clé Produit, faisant référence au nouvel emballage. Ainsi l’historique est parfaitement partitionné.
Enfin, avec les dimensions à évolutions lentes de type 3, les attributs sont ajoutés à la dimension pour obtenir deux emballages simultanés - on peut imaginer avoir un champs "Emballage actuel" et un champ "Emballage précédent", ou bien "Emballage d'origine".
En bref, avec les dimensions à évolution lente de type 1, la valeur de l'attribut est remplacée par la nouvelle valeur, effaçant l’historique des valeurs. Par exemple, lorsque l’emballage d’un produit change, l'attribut "Emballage" est simplement mis à jour avec la valeur actuelle.
Avec une dimension à évolution lente de type 2, un nouvel enregistrement avec les nouveaux attributs sont ajoutés à la dimension. Les enregistrements de la table de faits continuent de pointer vers l’ancienne clé de la dimension Produit avec l’ancienne valeur d’emballage, alors que les nouveaux enregistrements pointeront vers la nouvelle clé Produit, faisant référence au nouvel emballage. Ainsi l’historique est parfaitement partitionné.
Enfin, avec les dimensions à évolutions lentes de type 3, les attributs sont ajoutés à la dimension pour obtenir deux emballages simultanés - on peut imaginer avoir un champs "Emballage actuel" et un champ "Emballage précédent", ou bien "Emballage d'origine".
D'après mon
expérience, les équipes en charge de l'entrepôt de données sont souvent appelés
à conserver l'historique des attributs tout en maintenant la possibilité de croiser les données historiques avec les valeurs actuelles des attributs. Aucune des techniques d’évolution lente présentées ci-dessus ne répond, à elle seule, à cette exigence. Toutefois, en combinant ces techniques, vous pouvez élégamment répondre à ce besoin dans vos modèles dimensionnels.
Nous allons
commencer par utiliser la technique de type 2 pour enregistrer les changements
d'attribut. Lorsque l’emballage change, nous ajoutons un nouvel enregistrement dans la dimension avec une nouvelle clé de substitution.
Nous allons ensuite enrichir la dimension avec un attribut supplémentaire décrivant l'emballage actuel. Dans les enregistrements courants de la dimension Produit, la valeur de l'attribut "Emballage" sera identique à la valeur du nouvel attribut "Emballage actuel". Mais, pour tous les enregistrements précédents d’un produit donné, l'attribut "Emballage actuel" sera mis à jour pour refléter l'état actuel du produit; l'attribut "Emballage" ne changeant pas.
Si nous voulons voir des faits historiques basées sur l'emballage actuel, nous allons faire un filtre ou une agrégation sur le champs "Emballage actuel". Mais si nous voulons conserver la vue historique des emballages, nous utiliserons le champs "Emballage".
Nous allons ensuite enrichir la dimension avec un attribut supplémentaire décrivant l'emballage actuel. Dans les enregistrements courants de la dimension Produit, la valeur de l'attribut "Emballage" sera identique à la valeur du nouvel attribut "Emballage actuel". Mais, pour tous les enregistrements précédents d’un produit donné, l'attribut "Emballage actuel" sera mis à jour pour refléter l'état actuel du produit; l'attribut "Emballage" ne changeant pas.
Si nous voulons voir des faits historiques basées sur l'emballage actuel, nous allons faire un filtre ou une agrégation sur le champs "Emballage actuel". Mais si nous voulons conserver la vue historique des emballages, nous utiliserons le champs "Emballage".
Nous avons décrit une approche hybride qui combine les 3 techniques de dimension à évolution lente. Nous avons créé de nouveaux enregistrements pour capturer les changements (type 2), puis ajouté un attribut pour refléter un point de vue différent (type 3), qui est ensuite mis à jour pour tous les enregistrements précédents d'un produit donné (type 1). Comme un étudiant l’a récemment suggéré, peut être que nous pouvons appeler cela le type 6 (2 + 3 + 1).
Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #15: Combining SCD techniques", publié le 29 octobre 2000.
Aucun commentaire:
Enregistrer un commentaire