Guide recrutement data
Test technique dbt : ce qu'on evalue en entretien Analytics Engineer
dbt est devenu le standard de la transformation data. Entre lancer dbt run et concevoir une architecture robuste, il y a un monde.
Data Builder·Juin 2025·7 min de lecture·Analytics Engineer
dbt a transforme le metier d'Analytics Engineer. Sa structure impose de bonnes pratiques — mais seulement si le candidat les a vraiment internalisees.
1Structure et materialisations
Question discriminante
Comment organisez-vous les couches de votre projet dbt ? Difference entre staging, intermediate et marts ?
- staging — nettoie les donnees brutes source par source
- intermediate — combine sans logique metier finale
- marts — expose les donnees prets a consommer par la BI
- view / table / incremental / ephemeral — quand choisir chaque type
Signal d'alerte : un profil qui met tout en view ou n'a jamais configure un modele incremental n'a pas travaille sur des volumes reels.
2Tests : la vraie valeur ajoutee
Question discriminante
Quels tests mettez-vous systematiquement sur vos modeles ? Quand creez-vous un test custom ?
- Tests generiques : unique, not_null, accepted_values, relationships
- Singular tests — SQL dans tests/ pour les regles metier complexes
- dbt_expectations — bibliotheque de tests avances
- Freshness — fraicheur des sources
- store_failures — persister les enregistrements en echec
3Documentation et lineage
Question discriminante
Qu'est-ce que vous documentez systematiquement et pourquoi ?
- Tous les modeles marts et colonnes cles dans schema.yml
- Lineage graph — impact analysis avant modification
- Sources et freshness dans sources.yml
4Macros Jinja et packages
Question discriminante Senior
Exemple de macro Jinja que vous avez ecrite. Quel probleme resolvait-elle ?
- var(), if, for — variables et conditions Jinja
- dbt_utils : star(), union_relations(), date_spine()
- Macros custom dans macros/ — centraliser la logique repetitive
5Architecture et CI/CD
Question discriminante Lead
Comment organisez-vous un projet dbt pour une equipe de 4 Analytics Engineers ?
- Snapshots — Slowly Changing Dimensions type 2
- Exposures — declarer les dashboards consommateurs
- Slim CI : dbt build --select state:modified+
- GitHub Actions — tests sur chaque PR
6Grille par niveau
| Niveau | Maitrise attendue | Signal GO | NO-GO |
|---|
| Junior | dbt run/test/docs, 3 couches, tests generiques | Comprend staging/marts, tests not_null et unique | Pas de tests, tout en view |
| Confirme | Incrementaux, Jinja de base, dbt_utils | A configure un modele incremental en prod | N'a jamais ecrit de macro |
| Senior | Macros avancees, snapshots, CI/CD slim | CI GitHub Actions sur les modeles modifies | Pas d'experience CI/CD |
| Lead | Standards equipe, exposures, gouvernance | A defini les conventions de nommage equipe | Ne peut expliquer mono-repo vs multi-repo |
Data hiring guide
dbt technical interview: what we really assess
dbt has become the standard for data transformation. Between running dbt run and designing a robust architecture, there is a world of difference.
Data Builder·June 2025·7 min read·Analytics Engineer
dbt has transformed the Analytics Engineer role. Its structure enforces best practices — but only if the candidate has truly internalized them.
1Structure and materializations
Discriminating question
How do you organize the layers of your dbt project? What is the difference between staging, intermediate, and marts?
- staging — cleans raw data source by source
- intermediate — combines data without final business logic
- marts — exposes data ready to be consumed by BI
- view / table / incremental / ephemeral — when to choose each type
Warning signal: a candidate who puts everything in a view or has never configured an incremental model has not worked with real data volumes.
2Tests: the real added value
Discriminating question
What tests do you systematically apply to your models? When do you create a custom test?
- Generic tests: unique, not_null, accepted_values, relationships
- Singular tests — SQL in tests/ for complex business rules
- dbt_expectations — advanced test library
- Freshness — source data freshness
- store_failures — persist failing records
3Documentation and lineage
Discriminating question
What do you systematically document and why?
- All marts models and key columns in schema.yml
- Lineage graph — impact analysis before making changes
- Sources and freshness in sources.yml
4Jinja macros and packages
Senior discriminating question
Give an example of a Jinja macro you wrote. What problem did it solve?
- var(), if, for — Jinja variables and conditions
- dbt_utils: star(), union_relations(), date_spine()
- Custom macros