Glossaire
Data

Slowly Changing Dimension

Aussi : SCD, Slowly Changing Dimensions, Dimension history tracking

Une Slowly Changing Dimension (SCD) est une technique de data warehousing pour gérer les attributs de dimension qui évoluent dans le temps, en conservant l'historique ou en écrasant les valeurs selon les règles retenues.

De quoi il s'agit

Une Slowly Changing Dimension (SCD) est une méthode utilisée en data warehousing pour traiter les changements des attributs descriptifs dans les tables de dimension au fil du temps. Les dimensions portent le contexte des faits (les mesures numériques) : clients, produits, employés, magasins et entités similaires. Comme ces attributs (l'adresse d'un client, la catégorie d'un produit, le service d'un employé) changent rarement et de façon imprévisible, l'entrepôt a besoin d'une stratégie convenue pour enregistrer ces changements.

Pourquoi c'est important

Sans stratégie SCD claire, le reporting historique devient faux. Si un client passe d'une région à une autre et que vous écrasez simplement l'ancienne région, toutes les ventes passées apparaissent comme si elles avaient toujours appartenu à la nouvelle région. Les techniques SCD permettent aux équipes de décider si elles s'intéressent seulement à l'état actuel, à l'historique complet, ou à un mélange des deux. Cela touche directement la conformité, l'analyse de tendance, l'attribution et la fiabilité des audits.

Types courants

  • Type 0 : les attributs ne changent jamais (une date de naissance, par exemple). Les mises à jour sont ignorées.
  • Type 1 : on écrase l'ancienne valeur. Aucun historique n'est conservé. Simple, mais le contexte passé est perdu.
  • Type 2 : on ajoute une nouvelle ligne à chaque changement, avec des dates d'effet et un flag « courant ». L'historique complet est préservé. C'est l'approche la plus courante pour une analyse historique pertinente.
  • Type 3 : on conserve un historique limité dans des colonnes supplémentaires (par exemple current_region et previous_region). Utile quand une seule valeur antérieure compte.
  • Types 4 et 6 : approches hybrides s'appuyant sur des tables d'historique ou combinant les types 1, 2 et 3.

Comment on l'utilise en pratique

Les pipelines ETL ou ELT comparent les enregistrements source entrants aux lignes de dimension existantes. Quand un attribut suivi diffère, le pipeline applique la logique SCD configurée. Les outils et frameworks de transformation modernes automatisent souvent la gestion du Type 2 à l'aide de clés de substitution, de comparaisons de hash et d'horodatages de validité.

Exemple concret

Une cliente nommée Maria habite la région Nord. Des ventes lui sont rattachées. Elle déménage dans la région Sud.

  • Avec le Type 1, l'entrepôt écrase Nord par Sud. Les anciennes ventes ressemblent désormais à des ventes du Sud.
  • Avec le Type 2, une nouvelle ligne est créée. Les ventes antérieures au déménagement restent liées au Nord, celles postérieures au Sud. Les rapports reflètent correctement l'endroit où elle habitait au moment de chaque achat.

Choisir le bon type est une décision métier, pas seulement technique.

Type 1 vs Type 2 SCDType 1: OverwriteMaria | Region: SouthNorth is lost (no history)Type 2: New rowMaria | North | 2020-2023current: NMaria | South | 2023-nowcurrent: YSource change: Maria moves North to SouthETL compares incoming vs stored
Type 1 overwrites and loses history, while Type 2 adds a new row with validity dates to preserve it.

Questions fréquentes

Qu'est-ce qu'une Slowly Changing Dimension en data warehousing ?

Une Slowly Changing Dimension (SCD) est la méthode retenue pour enregistrer les changements d'attributs descriptifs dans les tables de dimension : adresse d'un client, catégorie d'un produit, service d'un salarié. Les dimensions portent le contexte autour des faits numériques, et ces attributs changent rarement et de façon imprévisible. Le type de SCD choisi détermine si l'entrepôt conserve l'ancienne valeur, l'écrase, ou garde les deux.

Pourquoi le choix du type de SCD influence-t-il la fiabilité du reporting ?

Parce qu'écraser un attribut réécrit le passé. Si une cliente passe de la région Nord à la région Sud et que vous remplacez simplement la valeur, toutes ses ventes historiques apparaissent d'un coup comme des ventes Sud. Cela faussse l'analyse de tendance, l'attribution et la piste d'audit, ce qui donne à cette décision une portée de conformité et pas seulement technique.

Quelle différence entre une SCD de Type 1 et de Type 2 ?

Le Type 1 écrase l'ancienne valeur et ne garde aucun historique : simple à opérer, mais le contexte passé disparaît. Le Type 2 ajoute une nouvelle ligne à chaque changement, avec dates de validité et indicateur de ligne courante, si bien que chaque fait reste rattaché à la valeur qui s'appliquait au moment où il s'est produit. Le Type 2 est le choix habituel dès que l'analyse historique compte.

Quand un Type 0 ou un Type 3 suffit-il, plutôt qu'un historique complet en Type 2 ?

Le Type 0 convient aux attributs qui ne doivent jamais changer, comme une date de naissance : les mises à jour entrantes sont ignorées. Le Type 3 convient quand une seule valeur antérieure a de la valeur, stockée dans des colonnes supplémentaires du genre current_region et previous_region. Les Types 4 et 6 sont des approches hybrides : table d'historique séparée, ou combinaison des Types 1, 2 et 3 dans une même dimension.

Comment un pipeline ETL ou ELT applique-t-il concrètement la logique SCD ?

Le pipeline compare chaque enregistrement source entrant à la ligne de dimension existante, détecte si un attribut suivi a changé, puis applique la règle SCD configurée. Les outils de transformation actuels automatisent le Type 2 avec des clés de substitution, des comparaisons de hash pour repérer les écarts, et des timestamps de validité pour clôturer l'ancienne ligne et ouvrir la nouvelle.