tadata
← Retour à l'accueil

Conception Moderne d'Entrepôt de Données : Couches, SCDs et Modèles Incrémentaux

#data-warehouse#data-modeling#analytics#data-engineering

Un entrepôt de données bien conçu est le fondement d'une analytics fiable. Malgré l'engouement pour les paradigmes plus récents, les principes fondamentaux de modélisation dimensionnelle, d'architecture en couches et de suivi des changements restent essentiels. Cet article couvre l'approche moderne de la conception d'entrepôt.

Architecture en Couches : Du Staging au Mart

tadata
  1. Consommateurs — Dashboards · SQL ad hoc · features ML · Reverse ETL
  2. Couche mart (Gold) : fct_orders, dim_customers, rpt_revenue, agg_daily_sales — Prête pour le métier, documentée, gouvernée, SLO définis
  3. Couche intermédiaire (Silver) : int_orders_cleaned, int_customers_deduped, int_products_enriched — Nettoyée, typée, dédupliquée, logique métier appliquée
  4. Couche staging (Bronze) : stg_shopify_orders, stg_stripe_payments, stg_hubspot_contacts — Miroir 1:1 de la source, transformation minimale, append-only

Principes de Conception par Couche

CoucheObjectifMatérialisationFraîcheurAccès
Staging (Bronze)Miroir source brutIncremental append / vueTemps réel à horaireData engineers
Intermédiaire (Silver)Nettoyer, dédupliquer, typerIncremental ou tableHoraire à quotidienEngineers + analystes
Mart (Gold)Entités prêtes pour le businessTable (matérialisée)Planifié (SLO)Tous consommateurs

Comparaison des Types de Dimensions à Évolution Lente (SCD)

Type SCDDescriptionCas d'UsageComplexitéImpact StockageHistorique
Type 0Aucun changement suiviDonnées de référence statiquesAucuneMinimalAucun
Type 1Écraser l'ancienne valeurCorrections, attributs non historiquesFaibleMinimalPerdu
Type 2Ajouter ligne avec dates de validitéHistorique complet requisMoyenneÉlevéComplet
Type 3Ajouter colonne pour valeur précédenteSeulement actuel + précédentFaibleModéréLimité
Type 6Hybride (1 + 2 + 3)Besoin flag actuel + historique + précédentÉlevéeÉlevéComplet
tadata
SCD type 1 (overwrite): customer 42 moves from Lyon to Paris ✗ 42 | Ana | Paris (Lyon is lost) ✗ MERGE ... WHEN MATCHED THEN UPDATESET * ✗ one row per key, small, simple ✗ use for corrections and attributes nobodyreports on historically SCD type 2 (history): a new row, the old one closed ✓ 42 | Ana | Lyon | 2024-01-10 | 2026-09-30 |current = false ✓ 42 | Ana | Paris | 2026-10-01 | null |current = true ✓ facts join on the surrogate key or on datebetween valid_from and valid_to ✓ pipelines: AUTO CDC ... STORED AS SCD TYPE2 adds __START_AT / __END_AT keep history
SCD type 1 (overwrite): customer 42 moves from Lyon to Paris ✗ 42 | Ana | Paris (Lyon is lost) ✗ MERGE ... WHEN MATCHED THEN UPDATESET * ✗ one row per key, small, simple ✗ use for corrections and attributes nobodyreports on historically SCD type 2 (history): a new row, the old one closed ✓ 42 | Ana | Lyon | 2024-01-10 | 2026-09-30 |current = false ✓ 42 | Ana | Paris | 2026-10-01 | null |current = true ✓ facts join on the surrogate key or on datebetween valid_from and valid_to ✓ pipelines: AUTO CDC ... STORED AS SCD TYPE2 adds __START_AT / __END_AT keep history

Extrait de la fiche « DP-750 Domain 3a: Model and Ingest Data in Unity Catalog » · Demander la fiche complète

Matrice de Stratégie de Matérialisation

StratégieQuand UtiliserAvantagesInconvénientsConfig dbt
ViewStaging, transformations légèresPas de coût stockage, toujours fraisRequêtes lentesmaterialized='view'
TableMarts, agrégations lourdesRequêtes rapides, prévisibleRebuild completmaterialized='table'
IncrementalGrandes tables de faitsBuilds rapides, coût faibleLogique complexematerialized='incremental'
EphemeralCTEs, logique réutilisablePas d'objet crééDebugging plus difficilematerialized='ephemeral'
SnapshotSuivi SCD Type 2Historique automatiqueRequiert clé unique + timestampdbt snapshot

Cadre de Convention de Nommage

Type d'ObjetPatternExempleNotes
Modèle stagingstg_{source}_{entite}stg_stripe_paymentsUn par table source
Modèle intermédiaireint_{entite}_{verbe}int_orders_enrichedVerbe décrit la transformation
Table de faitsfct_{événement}fct_ordersGrain = un événement
Table de dimensiondim_{entité}dim_customersGrain = une entité
Rapport/agrégatrpt_{sujet} ou agg_{sujet}rpt_monthly_revenuePré-calculé pour BI
Clé de substitutionsk_{entité}_idsk_customer_idAuto-générée
Clé naturellenk_{entité}_idnk_customer_idDu système source
Timestamps{événement}_atcreated_atToujours UTC
Booléensis_{condition} ou has_{chose}is_activeIntention claire

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.