Tutoriel3 min de lecture · Mis à jour le 29 sept. 2026

Modélisation dimensionnelle — schéma en étoile et SCD

Concevoir un entrepôt de données en étoile : grain, faits, dimensions, clés de substitution et historisation SCD type 2.

  • #etl
  • #sql

Les quatre décisions de Kimball

  1. Processus métier : quelles mesures (ventes, tickets, appels) ?
  2. Grain : que représente exactement une ligne de fait ? (« une ligne de commande », pas « une commande »).
  3. Dimensions : le contexte (client, produit, date, magasin).
  4. Faits : les mesures numériques additives (quantité, montant).

Le grain se décide avant tout le reste ; le mélanger est l'erreur la plus coûteuse.

Schéma en étoile

            dim_date
               |
dim_client — fact_ventes — dim_produit
               |
           dim_magasin
  • Les faits référencent des clés de substitution entières (client_sk), jamais les identifiants sources.
  • Les dimensions sont dénormalisées (pas de flocon sauf nécessité).
  • Une dimension date générée à l'avance (jour, semaine ISO, mois, férié…) simplifie toutes les analyses.

Dimensions à évolution lente (SCD)

TypeComportementUsage
0jamais modifiédate de naissance
1écrasementcorrection d'orthographe
2nouvelle ligne + période de validitésegment client, région
3colonne « valeur précédente »rare

SCD type 2 :

-- clôturer la version courante
UPDATE dim_client SET valid_to = current_date - 1, is_current = false
WHERE client_id = :id AND is_current AND segment <> :nouveau_segment;
-- insérer la nouvelle version
INSERT INTO dim_client (client_id, nom, segment, valid_from, valid_to, is_current)
SELECT :id, :nom, :nouveau_segment, current_date, '9999-12-31', true
WHERE NOT EXISTS (SELECT 1 FROM dim_client WHERE client_id = :id AND is_current);

Les faits chargés pointent vers la version valide à la date de l'événement.

Bonnes pratiques

  • Tests automatiques : unicité des clés, intégrité référentielle faits → dimensions, pas de chevauchement de périodes SCD2.
  • Membre « inconnu » (sk = -1) pour les références manquantes plutôt que des NULL.
  • Documenter chaque mesure (formule, filtre, unité) avec les métiers.

Autres labs de cette technologie