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 0 – La 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”
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?
data sidney
Hi,
Thank you for these remarks, I will take them into consideration and try to improve the best possible.
Ousama EL HOR