dbt: modèles intermédiaires

  • stg_staging (données brutes nettoyées / renommées)
  • dim_dimension (structure descriptive, lente à évoluer)
  • fct_fact (mesures, agrégats, événements)

👉 Mais voyons maintenant int_, qui est très utilisé dans les projets dbt bien structurés.


🧱 Préfixe int_ : intermediate models (modèles intermédiaires)

📌 Signification

int_ vient de “intermediate”
Ce sont des modèles intermédiaires utilisés pour :

  • recomposer des logiques complexes
  • préparer des jointures, regroupements ou calculs
  • faciliter la lecture, la réutilisation et les tests

🧠 Pourquoi on les utilise ?

Parce que dans un projet dbt :

  • tu veux que chaque modèle fasse une seule chose bien
  • tu veux éviter que ta fct_ventes contienne 500 lignes de SQL imbriqué
  • tu veux réutiliser une jointure complexe dans plusieurs modèles sans la dupliquer

✅ Exemples concrets

Exemple 1 : calculer la durée de vie client

-- models/intermediate/int_client_lifetime.sql
SELECT
  client_id,
  MIN(date_achat) AS premier_achat,
  MAX(date_achat) AS dernier_achat,
  DATEDIFF('day', MIN(date_achat), MAX(date_achat)) AS duree_vie
FROM {{ ref('stg_achats') }}
GROUP BY client_id

Puis utilisé dans un modèle final :

-- models/marts/fct_clients.sql
SELECT
  c.client_id,
  c.nom,
  l.duree_vie
FROM {{ ref('dim_clients') }} c
LEFT JOIN {{ ref('int_client_lifetime') }} l ON l.client_id = c.client_id

Exemple 2 : isoler une logique de mapping pays / zones

-- int_country_zones.sql
SELECT
  pays,
  CASE
    WHEN pays IN ('FR', 'BE') THEN 'Europe Ouest'
    WHEN pays = 'US' THEN 'Amérique Nord'
    ...
  END AS zone
FROM {{ ref('stg_clients') }}

Réutilisable dans plusieurs modèles en downstream.


📦 Où les placer dans le projet dbt ?

Tu peux créer un dossier dédié :

models/
├── staging/
├── intermediate/      ← ici
├── marts/
│   ├── dim/
│   └── fct/

Et dans ton dbt_project.yml, tu appliques une convention :

models:
  my_project:
    intermediate:
      +materialized: ephemeral  # souvent utilisé ainsi

✅ Résumé

PréfixeRôle
stg_Nettoyage / renommage depuis les sources
int_Modèles intermédiaires pour factoriser ou préparer des calculs
dim_Tables de dimensions (descriptives)
fct_Tables de faits (événements, agrégats)

Leave a Reply

Your email address will not be published. Required fields are marked *