Slowly Changing Dimensions

Ralph a introduit le concept de « slowly changing dimension (SCD)» attributs en 1996.

Slowly Changing Dimensions (SCD) – dimensions qui évoluent lentement au fil du temps, plutôt que de changer la base de temps dans le calendrier régulier. Dans l’entrepôt de données, il est nécessaire de suivre les changements des attributs dans la dimension afin de rendre les données historisées. En d’autres termes, l’implémentation d’un type SCD doit permettre aux utilisateurs d’attribuer la valeur d’attribut de dimension appropriée pour une date donnée. Exemple de ces dimensions pourrait être : client, géographie, employé.

Il existe de nombreuses approches pour implémenter le SCD, Les plus populaires sont :

o    Type 0 – La méthode passive

o    Type 1 – Ecraser l’ancienne valeur

o    Type 2 – Création d’un nouveau record supplémentaire

o    Type 3 – Ajout d’une nouvelle colonne

o    Type 4 – Utilisation de la table historique

o    Type 6 – Combiner les approches de types 1,2,3 ( 1 + 2 + 3 = 6 )

Type 0La méthode passive.

Dans cette méthode, aucune action spéciale n’est effectuée sur les changements dimensionnels. Certaines données de dimension peuvent rester les mêmes que la première fois insérées, d’autres peuvent être écrasées.

Type 1 – Ecraser l’ancienne valeur.

Dans cette méthode, aucune histoire de changement de dimension n’est conservée dans la base de données. L’ancienne valeur est simplement écrasée par la nouvelle. Ce type est facile à entretenir et souvent utilisé pour les données dont les changements sont résultats de traitement de corrections (par exemple : caractères spéciaux d’enlèvement, de correction de fautes d’orthographe).

Avant le changement :

EmployeeKey FirsName Title
13 Sidney Production Technician

Après le changement :

EmployeeKey FirsName Title
13 Sidney Production Supervisor
Type 2 – Création d’un nouveau record supplémentaire.

Dans cette méthodologie, toute l’histoire des changements de dimension est conservée dans la base de données. Vous capturez le changement d’attribut en ajoutant une nouvelle ligne avec une nouvelle clé de substitution à la table de dimension. Les deux lignes contiennent l’attribut de la clé naturelle . Aussi « date effective » et «indicateur en cours » sont utilisés dans cette méthode . Il pourrait y avoir un seul enregistrement avec l’indicateur en cours réglé sur ‘Y’ . Pour les colonnes « date effective », à savoir start_date et end_date , le end_date pour l’enregistrement en cours est généralement fixé à la valeur 9999-12-31 .

Avant le changement :

EmployeeKey FirsName Title Start_Date End_Date Current_Flag
13 Sidney Production Technician 01/08/2014 31/12/9999 Y

Après le changement :

EmployeeKey FirsName Title Start_Date End_Date Current_Flag
13 Sidney Production Technician 01/08/2014 01/10/2015 N
25 Sidney Production Supervisor 02/10/2015 31/12/9999 Y
Type 3 – Ajout d’une nouvelle colonne .

Dans ce type, généralement la valeur actuelle et la valeur précédente de dimension sont conservées dans la base de données . La nouvelle valeur est chargée dans la colonne ‘courant / nouveau’ et l’ancienne dans la colonne  ‘ancienne / précédente’.

D’une manière générale, l’historique est limité au nombre de colonnes créées pour stocker des données historiques

Avant le changement :

EmployeeKey FirstName Current_Title Previous_Title
13 Sidney Production Technician Production Technician

Après le changement :

EmployeeKey FirstName Current_Title Previous_Title
13 Sidney Production Technician Production Supervisor
Type 4 – Utilisation de la table historique.

Dans cette méthode, une table historique distincte est utilisée pour suivre les changements des attributs historisés pour chaque dimension .

La table de dimension «principale» ne conserve que les données actuelles, par exemple : les tables customer et customer_history.

Table courante:

EmployeeKey FirstName Title
13 Sidney Production Technician

Table historique:

EmployeeKey FirsName Title Start_Date End_Date
13 Sidney Production Technician 01/08/2014 01/10/2015
13 Sidney Production Supervisor 02/10/2015 01/01/2016
13 Sidney Production Control Manager 02/01/2016 31/12/9999
Type 6 – Combiner les approches de type 1,2,3 ( 1 + 2 + 3 = 6 ).

Dans ce type que nous avons les colonnes supplémentaires suivantes dans la table de dimension:

current_title – pour maintenir la valeur actuelle de l’attribut . Tous les enregistrements historisés  ont la même valeur actuelle .

historical_title – pour maintenir la valeur historique de l’attribut . Tous les enregistrements historisés  peuvent avoir des valeurs différentes .

start_date – pour garder la date de début  de l’histoire de l’ attribut.

end_date – pour maintenir la date de fin de l’histoire de l’ attribut.

current_flag – pour garder des informations sur l’ enregistrement le plus récent.

Dans cette méthode, pour capturer le changement d’attribut , nous ajoutons un nouveau record comme dans le type 2. Les informations de current_title est remplacé par le nouveau comme dans le type 1. Nous stockons l’histoire dans une colonne historical_title comme dans le type 3.

EmployeeKey FirsName Current_Title Historical_Title Start_Date End_Date Current_Flag
13 Sidney Production Control Manager Production Technician 01/08/2014 01/10/2015 N
25 Sidney Production Control Manager Production Supervisor 02/10/2015 01/01/2016 N
30 Sidney Production Control Manager Production Control Manager 02/01/2016 31/12/9999 Y
 

2 thoughts on “Slowly Changing Dimensions

  1. I was curious if you ever considered changing the structure of your website?
    Its very well written; I love what youve got to say. But maybe you could a little more
    in the way of content so people could connect with it better.

    Youve got an awful lot of text for only having one or two
    images. Maybe you could space it out better?

    Reply

    1. Hi,
      Thank you for these remarks, I will take them into consideration and try to improve the best possible.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.