AccueilBlogTest dbt prêt à l'emploi
Tests prêts à l'emploi

Test dbt prêt à l'emploi : refactorer un modèle et écrire les tests

Ce test sépare le vrai analytics engineer de celui qui « a écrit des modèles ». On donne un modèle dbt bancal (table en dur, aucun test) et on demande de le refactorer et de le tester. Ce que le candidat ajoute révèle son réflexe fiabilité. Corrigé inclus.

Data Builder·Juillet 2025·10 min de lecture·Test dbt · analytics engineering · clé en main

Le cœur du test : remplacer les tables en dur par des ref()/source() (pour le lineage) et ajouter des tests (unicité, non-nul). Un candidat qui ne teste pas fait du SQL, pas de l'analytics engineering.

1Le modèle de départ (à refactorer)

La consigne

« Ce modèle marche mais est fragile. Refactore-le et ajoute des tests. »

Un modèle typique de débutant : un nom de table écrit en dur (qui casse le lineage) et aucun test. Le candidat doit repérer les deux problèmes.

-- models/clients_actifs.sql (version fragile) SELECT id, nom, pays FROM analytics.clients -- table en dur : casse le lineage WHERE statut = 'actif'

    2Le corrigé

    La consigne

    ref/sources + tests, la vraie valeur de dbt.

    Un bon candidat remplace la table en dur par une source, puis ajoute des tests dans le fichier YAML. C'est ce qui garantit que le modèle ne casse pas ce qui est en aval.

    -- models/clients_actifs.sql SELECT id, nom, pays FROM {{ source('crm', 'clients') }} -- source declaree, lineage OK WHERE statut = 'actif' -- models/schema.yml models: - name: clients_actifs columns: - name: id tests: [unique, not_null] -- garantit l'integrite - name: pays tests: [not_null]
    • Utilise source()/ref() : le lineage est reconstruit.
    • Ajoute des tests (unique, not_null) sur les colonnes clés.
    • Le modèle devient fiable et intégrable en CI.

    Signal d'alerte : le red flag : un candidat qui refactore le SQL mais n'ajoute aucun test. Sans tests, rien ne garantit qu'un changement ne cassera pas les rapports en aval — c'est exactement ce que dbt est censé apporter.

    3Ce qu'on évalue

    La consigne

    Le réflexe fiabilité, pas la syntaxe.

    On note surtout la présence des tests et l'usage de ref/sources. Un candidat qui y pense spontanément a la bonne culture d'analytics engineering.

    • Remplace les tables en dur par source()/ref().
    • Ajoute des tests pertinents (pas juste pour la forme).
    • Explique comment ça protège l'aval.
    • Pense documentation et intégration continue (CI).

    4Grille par niveau

    NiveauMaîtrise attendueSignal GONO-GO
    JuniorRefactore le SQLNettoie et clarifie le modèleGarde un nom de table en dur
    ConfirméUtilise ref/sourcesReconstruit le lineageN'ajoute aucun test
    SeniorAjoute des tests pertinentsGarantit la non-régression avalTeste pour la forme, sans logique
    LeadPense CI, doc, conventionsIntègre le modèle dans un pipeline fiableConfond dbt et écrire du SQL

    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