AccueilBlogExercice dbt d'entretien
Tests prêts à l'emploi

Exercice dbt d'entretien : passer d'une CTE à une architecture staging/mart

Écrire une requête avec des CTE est à la portée d'un junior. Structurer un projet dbt en couches réutilisables est une compétence senior. Cet exercice donne un modèle monolithique et demande de le découper proprement — un excellent révélateur de maturité.

Data Builder·Juillet 2025·10 min de lecture·Test dbt · architecture · entretien

Le principe attendu : isoler le nettoyage de chaque source dans des modèles de staging, puis composer la logique métier dans un modèle de mart. Cela rend le projet lisible, testable et réutilisable.

1Le modèle monolithique de départ

La consigne

« Ce modèle empile 4 CTE. Découpe-le en une architecture propre. »

Un seul fichier fait tout : nettoyer les commandes, nettoyer les clients, joindre, agréger. Ça marche, mais rien n'est réutilisable ni testable isolément.

-- models/ca_par_pays.sql (monolithe) WITH commandes AS (SELECT ... FROM raw.commandes WHERE ...), clients AS (SELECT ... FROM raw.clients WHERE ...), jointure AS (SELECT ... FROM commandes JOIN clients ...), final AS (SELECT pays, SUM(montant) FROM jointure GROUP BY pays) SELECT * FROM final

    2Le corrigé (staging / mart)

    La consigne

    Chaque source nettoyée dans son staging, la logique métier dans le mart.

    Le candidat crée un modèle de staging par source (nettoyage isolé, testable) puis un modèle de mart qui les compose avec ref(). C'est la structure standard d'un projet dbt mûr.

    -- models/staging/stg_commandes.sql SELECT id, client_id, montant FROM {{ source('raw','commandes') }} WHERE statut = 'payee' -- models/staging/stg_clients.sql SELECT id, pays FROM {{ source('raw','clients') }} -- models/marts/ca_par_pays.sql SELECT c.pays, SUM(o.montant) AS ca FROM {{ ref('stg_commandes') }} o JOIN {{ ref('stg_clients') }} c ON c.id = o.client_id GROUP BY c.pays
    • Un modèle stg_ par source (commandes, clients).
    • Un modèle mart qui compose via ref().
    • Chaque couche est testable et réutilisable.

    Signal d'alerte : le marqueur senior : le candidat isole le nettoyage de chaque source dans un staging réutilisable, au lieu de tout empiler. Un junior « fait marcher » ; un senior « rend maintenable et réutilisable ».

    3Grille par niveau

    NiveauMaîtrise attendueSignal GONO-GO
    JuniorÉcrit des CTE qui fonctionnentObtient le bon résultatEmpile tout dans un seul modèle
    ConfirméDécoupe en staging et martIsole le nettoyage par sourceDuplique la logique de nettoyage
    SeniorRend chaque couche réutilisableCompose proprement avec ref()Ne pense pas à la réutilisation
    LeadDéfinit des conventions de couchesStructure un projet dbt mûrConfond 'ça marche' et 'c'est maintenable'

    Vous recrutez un profil data ?

    Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.

    Tester gratuitementRéserver un appel