lundi 4 février 2013

Conseil 4: Mettre à jour rapidement une dimension Client complexe


Beaucoup de concepteurs d'entrepôt de données ont à traiter avec une dimension Client compliquée, qui est à la fois large et profonde. Une dimension Client peut avoir 100 ou plus attributs descriptifs, et peut avoir des millions de lignes. Parfois, les «Clients» sont des demandeurs d'assurance-maladie, et d'autres fois ce sont des propriétaires de véhicules automobiles.Mais les questions de conception sont les mêmes.

Souvent, dans ces situations, l'entrepôt de données reçoit quotidiennement une copie complète mise à jour de la dimension Client. Bien sûr, ce serait merveilleux si seulement les delta (les enregistrements modifiés) étaient délivrés à l'entrepôt de données, mais le plus souvent c’est à l'entrepôt de données de trouver les enregistrements modifiés en recherchant méthodiquement dans l'ensemble de la table. Cette étape de comparaison enregistrement par enregistrement et champ par champ sur l'ensemble de la table entre la version d'hier et celle d'aujourd'hui est lente et inadéquat.

Voici une technique qui effectue cette étape de comparaison à une vitesse hallucinante et présente l'avantage de rendre votre traitement ETL plus simple. La technique repose sur un simple code CRC qui est calculé pour chaque enregistrement (et non chaque champ) dans le fichier Client entrant. Voici les étapes du traitement:

  1. Lire chaque enregistrement du fichier Client et calculer le code CRC de chaque enregistrement.
  2. Comparez ce code CRC avec le même code CRC calculé la veille et qui avait été enregistré. Vous aurez besoin de comparer la clé primaire de l’enregistrement source, pour vous assurer que vous comparez les bons enregistrements.
  3. Si les codes CRC sont les mêmes, vous pouvez être sûr que l'ensemble des 100 champs de ces deux enregistrement correspondent exactement. Vous n'avez donc plus besoin de vérifier chaque champ
  4. Si les codes CRC diffèrent, vous pouvez créer immédiatement une nouvelle clé client de substitution (surrogate key) et placer l’enregistrement mis à jour dans la dimension Client de l'entrepôt de données. Il s'agit, dans ce cas, d'une dimension à évolution lente de type 2 (SCD). Ou bien, une version plus élaborée pourrait être de rechercher parmi les 100 champs ceux qui ont été modifiés puis de décider quoi faire. Peut-être que quelques-uns des champs ont besoin d’être mis à jour, ce qui dans ce cas, serait une dimension à évolution lente de type 1.
Si vous n'avez jamais entendu parler du code CRC, ne désespérez pas. Votre programmeur ETL sait ce que c'est. Le CRC (Cyclic Redundancy Checksum) est une technique mathématique pour créer un code unique pour chaque enregistrement. Le code CRC peut être mis en œuvre en Basic ou en C. La plupart des manuels d'introduction en informatique en décrivent l'algorithme. Cherchez aussi sur les moteurs de recherche à «code CRC».


Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #4: Super Fast Change Management Of Complex Customer Dimensions", publié le 21 février 2000.

Aucun commentaire:

Enregistrer un commentaire