lundi 4 mars 2013

Conseil 8: Partitionner un historique avec une dimension à évolution lente de type 2

Une dimension à évolution lente de type 2 fournit un autre type de partitionnement. On pourrait appeler cela une partition logique de l'historique. Dans l'approche de type 2, chaque fois que nous rencontrons un changement dans un enregistrement de la dimension, nous publions un nouvel enregistrement, et l'ajoutons à la table de dimension existante. Un exemple simple peut être est la description d'un produit, ou une autre caractéristique du produit tels que le type d'emballage, qui change mais que le numéro d'identification de celui-ci (par exemple, le code à barres) ne change pas. En tant que gardiens de l'entrepôt de données, nous avons pris l'engagement de suivre parfaitement les évolutions et nous devons donc suivre à la fois la nouvelle description du produit ainsi que l'ancienne.

Une dimension à évolution lente de type 2 exige un traitement particulier de la clé de dimension, la clé du Produit dans notre exemple. Nous devons affecter une clé unique, car nous ne pouvons pas utiliser le numéro d'identification du produit comme clé. Cela donne lieu à toute la discussion sur l'attribution de clés de substitution, qui a été largement débattue ailleurs. Lisez les articles ici et ici pour avoir l’histoire complète des clés de substitutions.

Réfléchissez un instant à la façon dont vous utilisiez la clé de dimension avant que vous ayez à fabriquer le nouvel enregistrement décrit ci-dessus. Avant aujourd'hui, vous utilisiez l’ancienne clé de substitution partout où vous aviez créé un enregistrement dans la table de fait décrivant l'activité des produits.

Aujourd'hui, deux choses se produisent. Tout d'abord, nous supposons que le type d'emballage a changé et entre en vigueur avec les nouvelles données de la table de faits que nous recevons aujourd'hui. Deuxièmement, cela signifie qu’ensuite nous créons le nouvel enregistrement dans la dimension Produit avec sa nouvelle clé de substitution, puis nous utilisons cette clé de substitution avec l'ensemble des faits reçu aujourd’hui.

Nous ne revenons pas sur les enregistrements précédents de la table de faits pour modifier la clé Produit.

L’ancien enregistrement du produit dans la dimension pointe toujours correctement vers toutes les données historiques antérieures, mais le nouvel enregistrement du produit dans la dimension pointe désormais vers les données d'aujourd'hui et les suivantes dans la table de faits, jusqu'au moment où nous serons obligés de faire un autre changement de type 2.

C'est ce que nous entendons lorsque nous disons qu’une dimension à évolution lente de type 2 partitionne parfaitement l'historique. Si vous visualisez cela, alors vous comprendrez parfaitement cette technique de conception.


Notez que lorsque vous filtrez sur un champ de la dimension, comme le nom du produit, qui n'est pas affecté par le changement de l'attribut "type d'emballage", alors vous prenez automatiquement à la fois l’ancien et le nouvel enregistrement, et vous obtenez automatiquement tout l’historique de ce produit dans la table de faits. Ce n'est que lorsque vous filtrez ou groupez sur l'attribut "type d'emballage" que la requête divise l’historique en deux parties.

Cette discussion est le cœur de l'approche de type 2. L'approche de type 2 peut être améliorée et rendue plus puissante en plaçant soigneusement des timestamp dans la dimension, mais ces timestamp sont des "extras" qui ne sont pas nécessaires pour le partitionnement de base de l'historique. Lisez cet article pour voir une application de cette approche avec un timestamp.


Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #8: Perfectly partitioning history with the type 2 slowly changing dimension", publié le 21 mai 2000.

Aucun commentaire:

Enregistrer un commentaire