Ce test évalue l'Analytics Engineer sur son cœur de métier : transformer une donnée brute en une couche analytique fiable, testée et documentée. On donne des sources brutes et on demande une modélisation dbt complète. Corrigé et grille inclus — c'est le test le plus proche de votre offre.
Le fil rouge : la rigueur. On ne juge pas seulement un SQL qui sort le bon chiffre, mais une architecture en couches, des tests de non-régression et de la documentation. C'est ce qui sépare l'analytics engineer du profil « SQL déguisé ».
« À partir de ces sources brutes, construis une couche analytique fiable du CA par pays. »
On fournit deux sources brutes non nettoyées. Le candidat doit livrer une modélisation dbt complète : staging, mart, tests et un minimum de documentation.
raw.commandes(id, client_id, montant, date_commande, statut) -- non nettoyee
raw.clients(id, pays, date_inscription) -- non nettoyeeStaging pour nettoyer, mart pour la logique métier.
Un bon candidat isole le nettoyage de chaque source en staging, puis compose la logique métier en mart avec ref(). C'est la structure attendue d'un projet dbt mûr.
-- staging/stg_commandes.sql
SELECT id, client_id, montant FROM {{ source('raw','commandes') }} WHERE statut = 'payee'
-- marts/ca_par_pays.sql
SELECT cl.pays, SUM(co.montant) AS ca
FROM {{ ref('stg_commandes') }} co
JOIN {{ ref('stg_clients') }} cl ON cl.id = co.client_id
GROUP BY cl.paysLa rigueur qui fait la valeur de l'analytics engineer.
La partie décisive : le candidat ajoute des tests (unicité, non-nul, cohérence) et documente. Sans cela, c'est du SQL, pas de l'analytics engineering.
# marts/schema.yml
models:
- name: ca_par_pays
description: "CA des commandes payees, agrege par pays."
columns:
- name: pays
tests: [not_null]
- name: ca
tests: [not_null]Signal d'alerte : le vrai marqueur : le candidat ajoute des tests et de la documentation spontanément, sans qu'on ait à le demander. C'est exactement ce qui distingue un analytics engineer d'un profil qui « fait du SQL ». Sans tests, la note plafonne.
| Niveau | Maîtrise attendue | Signal GO | NO-GO |
|---|---|---|---|
| Junior | Écrit le SQL de transformation | Sort le bon résultat | Un seul modèle, table en dur |
| Confirmé | Structure en staging/mart | Compose proprement avec ref() | N'ajoute aucun test |
| Senior | Ajoute tests et documentation | Garantit la non-régression aval | Modélise sans tester |
| Lead | Définit conventions et CI | Livre une couche fiable et réutilisable | Confond dbt et écrire du SQL |
Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.