Skip to content

SCD Type 2 (Slowly Changing Dimensions)

Le mode scd2 gère automatiquement l'historisation des dimensions à variation lente. Noria ajoute et gère les colonnes _valid_from, _valid_to et _is_current.

Configuration

nodes:
  dim_client:
    sql: sql/dim_client.sql
    target: "{{ params.schema }}.dim_client"
    output_write: scd2
    scd2_key: [id_client]             # clé métier (pas la clé technique SCD)
    scd2_updated_at: date_modification  # optionnel : colonne de timestamp source
    description: "Dimension client historisée (SCD2)"
    needs: [raw_clients]

SQL source

-- sql/dim_client.sql
SELECT
    id_client,
    nom,
    email,
    segment,
    date_modification
FROM {{ params.schema }}.raw_clients

Colonnes ajoutées automatiquement

Colonne Type Description
_valid_from TIMESTAMP Date de début de validité
_valid_to TIMESTAMP Date de fin de validité (NULL = courant)
_is_current BOOLEAN TRUE si c'est la version active

Exemple de résultat

id_client nom email _valid_from _valid_to _is_current
1 Martin martin@old.com 2024-01-01 2024-06-01 false
1 Martin martin@new.com 2024-06-01 NULL true

Algorithme SCD2 Noria

  1. CREATE IF NOT EXISTS la table cible avec les colonnes SCD2.
  2. UPDATE les lignes actives (_is_current = TRUE) dont la clé métier apparaît dans la nouvelle sélection → _valid_to = CURRENT_TIMESTAMP, _is_current = FALSE.
  3. INSERT toutes les nouvelles lignes avec _valid_from = CURRENT_TIMESTAMP, _valid_to = NULL, _is_current = TRUE.