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
- CREATE IF NOT EXISTS la table cible avec les colonnes SCD2.
- 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.
- INSERT toutes les nouvelles lignes avec
_valid_from = CURRENT_TIMESTAMP, _valid_to = NULL, _is_current = TRUE.