AccueilBlogTest technique complet Analytics Engineer : SQL, dbt, modélisation
Guide recrutement data

Test technique complet Analytics Engineer : SQL, dbt, modélisation

L Analytics Engineer est le profil le plus demandé en data en 2025. Voici le test technique complet qu on mène chez Data Builder pour évaluer rigoureusement ce profil.

Data Builder·Juin 2025·8 min de lecture·Analytics Engineer
Sommaire
  1. Ce qu on évalue
  2. Épreuve SQL
  3. Épreuve dbt
  4. Modélisation dimensionnelle
  5. Python analytique
  6. Questions de contexte
  7. Grille de décision

1Le profil Analytics Engineer : entre data et business

L Analytics Engineer fait le pont entre les Data Engineers (pipelines bruts) et les Data Analysts (consommation). Il produit des modèles dbt robustes, versionnes, testés et documentés que toute l équipe peut consommer en confiance.

2Épreuve SQL : les questions discriminantes

Question discriminante

Quelles sont les 3 requêtes SQL que vous posez systématiquement pour évaluer un AE ?

-- Question 1 : cohortes de rétention -- Calculer le taux de rétention par cohorte hebdomadaire WITH premiere_commande AS ( SELECT user_id, DATE_TRUNC('week', MIN(order_date)) AS cohorte FROM commandes GROUP BY user_id ), activite AS ( SELECT pc.cohorte, DATE_TRUNC('week', c.order_date) AS semaine, COUNT(DISTINCT c.user_id) AS actifs FROM premiere_commande pc JOIN commandes c USING (user_id) GROUP BY 1, 2 ) SELECT cohorte, semaine, DATEDIFF('week', cohorte, semaine) AS semaine_num, actifs, FIRST_VALUE(actifs) OVER (PARTITION BY cohorte ORDER BY semaine) AS taille_cohorte, ROUND(actifs * 100.0 / FIRST_VALUE(actifs) OVER (PARTITION BY cohorte ORDER BY semaine), 1) AS retention_pct FROM activite ORDER BY cohorte, semaine_num; -- Question 2 : déduplication avec préférence -- Garder la commande la plus récente par client SELECT * FROM commandes QUALIFY ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC) = 1; -- Question 3 : running total avec reset -- Solde cumulatif par compte, réinitialisé à zéro si négatif SELECT compte_id, date_op, montant, GREATEST(SUM(montant) OVER (PARTITION BY compte_id ORDER BY date_op), 0) AS solde_cumul FROM mouvements;

3Épreuve dbt : modélisation et bonnes pratiques

Question discriminante

Comment évaluez-vous la maturité dbt d un candidat AE ?

-- Structure attendue d un projet dbt bien organisé models/ ├── staging/ -- 1 modèle par table source, renommage, cast │ ├── stg_commandes.sql │ └── _stg_commandes.yml -- tests + documentation ├── intermediate/ -- jointures et logique métier complexe │ └── int_commandes_enrichies.sql └── marts/ ├── finance/ │ └── fct_revenus.sql └── marketing/ └── dim_clients.sql -- Ce qu on teste dans le YAML : models: - name: fct_revenus columns: - name: order_id tests: [not_null, unique] - name: montant tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0

4Modélisation dimensionnelle

Question discriminante

Quelle est la différence entre un schéma en étoile et un schéma en flocon ? Quand choisissez-vous l un ou l autre ?

-- Schéma en étoile : recommandé pour la BI -- Table de faits centrale + dimensions dénormalisées fct_commandes ( order_id PK, date_id FK, -- dim_date client_id FK, -- dim_clients (inclut ville, pays, segment) produit_id FK, -- dim_produits (inclut catégorie, marque) montant, quantite ) -- Les dimensions sont plates : pas de table dim_ville séparée -- Schéma en flocon : dimensions normalisées -- dim_produits -> dim_categories -> dim_sous_categories -- Plus économique en stockage mais jointures plus complexes -- Déconseillé pour la BI self-service

5Python pour l Analytics Engineer

Question discriminante

Quel niveau de Python attendez-vous d un AE ? Quels sont les cas d usage typiques ?

6Questions de contexte business

Question discriminante

Pourquoi les questions de contexte métier sont-elles importantes pour évaluer un AE ?

7Grille de décision GO / NO-GO

CompétenceJunior AEConfirmé AESenior AE
SQL window functionsBases (ROW_NUMBER)LAG/LEAD, frames, cohortesCTEs récursives, QUALIFY, JSON
dbt modèlesStaging + marts, ref()Intermediate, macros, tests customPackages, CI slim, snapshots SCD2
ModélisationComprend étoile vs floconConçoit un schéma en étoile completSCD2, late-arriving facts, bridge tables
Pythonpandas basique, scriptsAutomatisation dbt API, pytestMacros dbt avancées, outils admin
Communication métierExplique son travailAnime des ateliers de définition métriquesDéfinit les standards de l équipe

Vous recrutez un Analytics Engineer ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.