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éfixe | Rô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) |