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.

  • Compétences techniques attendues — SQL Senior, dbt avancé, Python pour l automatisation, Git, notions de data warehouse (Snowflake, BigQuery ou Redshift)
  • Compétences analytiques — modélisation dimensionnelle, définition des métriques métier, compréhension des besoins utilisateurs
  • Différence avec Data Analyst — l AE produit les fondations, le DA les consomme. L AE code en SQL/dbt, le DA analyse dans Power BI/Tableau

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
  • Niveau Junior — staging + marts, tests basiques, ref() utilisé correctement
  • Niveau Confirmé — intermediate layer, macros, incremental models, snapshots
  • Niveau Senior — packages custom, hooks, CI/CD slim, documentation des exposures

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
  • Étoile — recommandé pour la BI. Jointures simples, performances optimales sur les data warehouses modernes
  • Flocon — utile si les dimensions sont très larges et que le stockage est contrainte. Rare en pratique sur les cloud warehouses
  • SCD Type 2 — suivre l historique des changements dans une dimension (ex : un client qui change de segment)

5Python pour l Analytics Engineer

Question discriminante

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

  • Niveau attendu — Python intermédiaire. Pas de ML, mais capable d écrire des scripts d automatisation et des macros dbt
  • Cas d usage : automatiser le déploiement dbt via API, écrire des tests de données avec pytest, parser des fichiers pour alimenter des seeds dbt, scripts d administration (ex : Tableau Server Client)
  • Ce qu on n attend pas — PyTorch, Spark, algorithmes ML. Ce n est pas le rôle
  • Ce qui différencie — un AE Senior sait écrire des macros dbt avec run_query() et automatiser la génération de modèles

6Questions de contexte business

Question discriminante

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

  • 'Comment définissez-vous le chiffre d affaires dans votre modèle ?' — un bon AE sait que la définition d une métrique est un sujet politique autant que technique
  • 'Comment gérez-vous les breaking changes dans vos modèles dbt ?' — révèle la maturité sur le cycle de vie des données
  • 'Qui valide vos définitions de métriques ?' — révèle la capacité à travailler avec les métiers
  • 'Comment sauriez-vous que votre modèle est cassé en production ?' — révèle la culture de monitoring et d alerting

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.