Préparer et réussir la certification dbt Analytics Engineering (version 2023)

dbt (Data build tool) est un outil open source conçu pour transformer et modéliser des données directement dans un data warehouse, un lakehouse ou une base de données. En exploitant le langage SQL et le moteur de templates Jinja, dbt permet la construction de pipelines de transformation de données, pour organiser et traiter efficacement de grands volumes de données. De plus, dbt permet l'application de bonnes pratiques du software engineering, telles que la CI/CD, la collaboration entre développeurs, la gestion des versions et la documentation.

En 2022, dbt Labs a introduit une certification intitulée Analytics Engineering Certification. Le but de cet article est de fournir un guide complet pour préparer et réussir cette certification en 2023 !

Sommaire

  • Vue d’ensemble sur la certification
  • Comment déterminer votre niveau de préparation
  • Comment réviser : mon parcours
  • Format de l’examen et types de questions
  • Retour global sur la certification
  • Ressources supplémentaires

Vue d'ensemble sur la certification

Alors que dbt Core est un outil open source pour l'exécution et la gestion de dbt depuis la ligne de commande, dbt Cloud quant à lui offre une interface utilisateur et des fonctionnalités supplémentaires pour la collaboration, la surveillance et l'automatisation, en tant que plateforme SaaS. Selon l'équipe dbt Labs sur Slack communautaire de dbt, il n'y a pas de questions spécifiques à dbt Cloud dans l'examen et “ toutes questions relatives aux jobs devraient être accessibles à quiconque a défini un job, que ce soit dans dbt Cloud ou avec un outil d'orchestration tiers. ”

L'examen couvre les sujets suivants :

  • Développement de modèles dbt ;
  • Debug d'erreurs dans la modélisation de données ;
  • Surveillance des pipelines de données ;
  • Mise en œuvre des tests dbt ;
  • Déploiement des projets dbt ;
  • Création et maintenance de la documentation dbt ;
  • Promotion du code à travers la gestion des versions ;
  • Mise en place d'environnements dans un data warehouse pour dbt.

dbt Labs a également mis à disposition un guide d'étude pour la certification. Ce guide se termine par une check-list reprenant les fonctionnalités de dbt qui seront abordées lors de l'examen. Je vous conseille de consulter cette check-list avant et après votre préparation pour la certification, afin d'évaluer vos connaissances.

Cependant, d'après mon expérience, se fier uniquement à la lecture de cette check-list ne suffit pas !

Il est important de noter que l'examen ne se limite pas au contenu spécifique de dbt. Il couvre également des sujets comme :

  • Le templating Jinja ;
  • Les workflows Git ;
  • SQL (par exemple, l'usage recommandé des CTEs).

Comment déterminer votre niveau de préparation

Sur la page de certification de dbt, il est mentionné que les candidats idéaux sont ceux qui ont :

  • Plus de 6 mois d'expérience dans la construction de projets sur dbt Core ou Cloud ;
  • Une maîtrise du SQL.
Screenshot-2023-08-01-at-11.59.41

Certains articles recommandent d’avoir 1 an d’expérience d’usage de dbt, cependant je pense que 6 mois peuvent être suffisants, si l’usage de l'outil est quotidien et si la compréhension de tous les sujets que dbt aborde est acquise, notamment sur les concepts les plus avancés.

Voici une check-list exhaustive des compétences requises pour la certification:

Prérequis :

  • SQL : Maîtriser les jointures, les agrégations, les CTEs et les fonctions de fenêtrage ;
  • Git : Comprendre les stratégies de création de branches (y compris les branches de développement par rapport aux branches principales), les commandes de base de git, et les pull requests.

Développement de modèles dbt :

  • Comprendre les dépendances entre les objets ;
  • Maîtriser les principes de modularité et comment les implémenter ;
  • Savoir convertir une logique métier en requêtes SQL performantes ;
  • Comprendre l’utilisation de commandes telles que run, test, docs, seed, snapshot, build, compile ainsi que leurs arguments (comme le –fail-fast par exemple) ;
  • Savoir créer des flux logiques de modèles et construire des DAG propres ;
  • Comprendre la configuration dans dbt_project.yml et les sources dans dbt ;
  • Comprendre l’utilisation des packages dbt.

Débugage des erreurs de modélisation des données :

  • Comprendre les messages d'erreur enregistrés ;
  • Savoir dépanner avec du code compilé et des erreurs de compilation .yml ;
  • Distinguer un problème purement SQL d’un problème dbt qui se présente comme un problème SQL ;
  • Développer et mettre en œuvre un correctif et le tester avant de le fusionner.

Surveillance des pipelines de données :

  • Comprendre les implications au niveau du data warehouse d'un échec de l'exécution d'un modèle à différents points du DAG ;
  • Avoir une bonne vision sur l’ensemble des outils.

Mise en œuvre des tests dbt :

  • Utiliser des tests génériques, singuliers et personnalisés sur une grande variété de modèles et de sources ;
  • Comprendre les hypothèses spécifiques aux ensembles de données générés dans les modèles et aux données brutes dans le data warehouse ;
  • Implémenter diverses étapes de test dans le workflow ;
  • S'assurer que les données sont correctement acheminées vers le data warehouse et valider leur exactitude par rapport aux références.

Déploiement des tâches dbt :

  • Comprendre les différences entre les environnements de déploiement et de développement ;
  • Configurer les environnements de développement et de déploiement ;
  • Configurer les tâches, les paramètres et les déclencheurs appropriés pour le job ;
  • Comprendre comment un travail dbt utilise un environnement pour construire des objets et des artefacts de base de données ;
  • Utilisation des commandes dbt pour exécuter des modèles spécifiques.

Création et maintenance de la documentation dbt :

  • Mise à jour de la documentation dbt ;
  • Implémentation des descriptions de sources, de tables, et de colonnes dans les fichiers .yml ;
  • Utilisation des commandes dbt pour générer un site de documentation ;
  • Utilisation de macros pour afficher la lignée des modèles et des données sur le DAG.

Promotion du code via le contrôle de version :

  • Comprendre les concepts et travailler avec les branches et les fonctionnalités de Git ;
  • Créer des commits et des pull requests propres ;
  • Fusionner (merge) le code avec la branche principale.

Établissement d'environnements dans un data warehouse pour dbt :

  • Comprendre les connexions de l'environnement ;
  • Comprendre les différences entre les données de production, les données de développement et les données brutes.

Formation :

  • Création d'un projet dbt à partir de zéro jusqu'au déploiement ;
  • Refactoring du SQL pour la performance et la clarté ;
  • Utilisation de packages et de macros dans un projet dbt ;
  • Implémentation de toutes les matérialisations de base dans un projet dbt ;
  • Mise en place des seeds ;
  • Définition des environnements dans votre plateforme de données ;
  • Définition des environnements dans dbt ;
  • Promotion du code à travers git, y compris l'utilisation de plusieurs branches, les pull requests ;
  • Dépannage des erreurs dans les exécutions de production ;
  • Définition des tâches dbt pour une performance optimale.

Comment réviser : mon parcours

Mon parcours de révision a commencé par la lecture du guide de certification de dbt et je vous conseille de commencer de la même manière. Ce guide présente une check-list qui offre une vue globale des sujets à maîtriser.

En premier lieu, pour m'assurer de ma maîtrise de tous les sujets de dbt, j'ai décidé de suivre tous les cours (gratuits) que dbt LABS offrent. Ces cours couvrent à la fois les aspects fondamentaux et avancés de dbt. Je vous recommande vivement de tous les suivre, car ils expliquent non seulement les différentes fonctionnalités de dbt, mais aussi les raisons de leur existence. Cela vous permettra de mieux répondre aux questions du type : dans un contexte business, quelle est la meilleure façon de résoudre ce problème ?

Ensuite, je vous conseille fortement de lire la documentation officielle de dbt. Cela inclut :

  • Les docs : Cette partie est légèrement moins technique que la suivante, mais elle vaut le détour. C’est cette ressource qui vous donnera une vision globale de la variété des fonctionnalités de dbt.
  • Les références : À mon avis, c'est la section la plus intéressante. Parcourir toutes les références revient à avoir un récapitulatif des fonctionnalités de dbt et comment utiliser les différentes commandes et fonctionnalités que dbt offre.
  • Les guides : Une partie très intéressante de cette ressource est la section Legacy. Cette section couvre deux sujets d'examen : 'debugging data modelling errors' et 'establishing environments in a data warehouse for dbt'. C'est une lecture qui vous sera certainement bénéfique pour votre examen !

Cependant, j'ai personnellement constaté que la seule lecture des ressources ne m'était pas suffisante, car j'avais du mal à suivre efficacement ma progression. J'ai donc décidé de chercher des tests pratiques en ligne, que je n'ai pas seulement effectués à la fin de ma lecture des ressources, mais également tout au long du processus. Cette méthode m'a permis d'évaluer mon évolution dans la compréhension de dbt en fonction des résultats à ces tests pratiques.

Pour être sûr de ne rien oublier, une fois que j'ai eu l'impression d'avoir suffisamment relu les ressources de dbt, j'ai refait les tests plusieurs fois pour m'assurer que je comprends maintenant et que je sais répondre à certaines questions auxquelles je ne pouvais pas répondre auparavant.

Le manque de ressources pour la préparation de cette certification est un véritable défi. Je vais partager mon avis sur les quatre ressources que j'ai découvertes et utilisées, mais dans l'ensemble, je n'ai pas eu l'impression que cela était suffisant . Le seul "avantage", est que nous pouvons rapidement revoir toutes les questions de tous les tests pratiques car il y en a moins, mais globalement, ces tests pratiques constituent un bon point de départ et je vous conseille d'en faire au moins quelques-uns pour vous préparer. Cependant, ils manquent de profondeur et tous les sujets plus avancés ne sont pas abordés. Les questions d'examen portent principalement sur des sujets plus avancés, ce qui m'a surpris lors de l'examen. À mon avis, il est essentiel de lire attentivement toute la documentation, les références et les guides de dbt pour être bien préparé, ces tests ne suffisent pas.

J’ai fait 4 séries de tests pratiques, parmi lesquels seuls 3 sont encore disponibles :

Qanalabs: dbt Analytics Engineering Certification Practice Questions

Cette série de tests est gratuite et comporte 13 examens de 65 questions chacun.

À mon avis, les tests de Qanalabs sont les meilleurs. Ils fournissent des explications claires aux réponses, l'interface utilisateur est plus agréable, et le nombre de questions est le plus élevé : 845 questions au total. Certaines sont un peu trop simples, mais c'est la meilleure ressource de préparation disponible. Les examens sont organisés par chapitres, donc il ne s'agit pas de 13 tests pratiques qui couvrent tous les sujets traités par dbt. Si vous souhaitez vous entraîner avec des tests pratiques plus généraux, ce ne sera pas possible avec cette série. Cependant, elle est très utile si vous souhaitez préparer un certain nombre de sujets de dbt et ensuite tester directement vos connaissances sur ceux-ci. Je trouve que c'est la ressource la plus complète, cette série couvre la grande majorité des concepts de dbt.

Practice Test: dbt Analytics Engineering Certification Exam

Cette série de tests coûte €19.99 et comprend 4 tests pratiques de 60 questions chacun, soit un total de 240 questions.

Cette série de tests pratiques d'Udemy est aussi une des meilleures. C'est une des plus complètes et c’est certainement la plus complète de celles disponibles sur Udemy. Je pense qu'elle couvre 60 à 70% des sujets que comprend l'examen. Cependant, elle a quelques inconvénients :

  • Les questions sont parfois mal formulées ;
  • Le format des questions rend parfois les questions difficilement lisibles ;
  • Une bonne partie des questions ne sont que des doublons d'autres questions, mais formulées différemment. Même si un grand nombre de notions sont abordées, le nombre de questions uniques n'est pas très élevé ;
  • Il manque des sujets comme le concept de "fail fast", les usages des environnements de développement/déploiement, le concept de "slim CI", et "Pre-Hooks", "Post-Hooks", "ephemeral", "flattening sources", "packages", et des "modèles/macros personnalisés" qui sont nécessaires pour la certification.

Cependant, cela reste l'une des meilleures ressources pour l'entraînement, en raison de l'absence d'autres alternatives.

dbt Analytics Engineering Certification Practice Tests

Cette série de tests coûte €19.99 et comporte six tests pratiques d’un nombre variable de questions par test, avec un total de 464 questions.

Si vous souhaitez vous entraîner davantage, ce cours est une autre bonne option. Similaire à la série précédente, tous les sujets ne sont pas abordés dans ces tests pratiques. Je dirais que le plus grand inconvénient est le nombre important de questions dupliquées ; la duplication des questions est beaucoup plus fréquente ici (je dirais que sur un test de 65 questions, seulement 20 à 30 sont "uniques").

Cependant, si vous voulez avoir un grand nombre de questions pour revenir sur les mêmes sujets à plusieurs reprises, vous pouvez envisager ce test pratique. De plus, de nombreuses questions sont très différentes du type de questions posées lors du véritable examen, donc cette série de tests pratiques vous entraînera principalement sur la matière et non pas sur l'approche de l'examen en lui-même.

Globalement, les questions de l'examen sont beaucoup plus approfondies que celles des tests de pratique. De plus, certains sujets sont particulièrement récurrents dans l'examen (je pense qu’ils représentent jusqu'à 40% des questions), alors qu'ils sont peu abordés dans les tests de pratique. Ces sujets incluent, par exemple, les bonnes pratiques d'utilisation des environnements de développement et de déploiement, la syntaxe Jinja avancée, les Slim CI jobs, des arguments de commandes comme le "fail-fast", ou la syntaxe exacte des sélecteurs. Il peut donc être judicieux de porter une attention particulière à ces domaines lors de vos révisions.

Format de l’examen et types de questions

Format de l’examen

Comme je l'ai mentionné précédemment, l'examen est composé de 65 questions auxquelles il faut répondre en deux heures. L'examen ne peut être passé qu'en format surveillé à distance. Quelques règles communes doivent être respectées, comme: ne pas se déplacer pendant toute la durée de l'examen, être seul(e) dans la pièce, avoir un bureau / une table avec rien d'autre que votre ordinateur (une deuxième chaise ou un lit peuvent servir de bureau), vous serez surveillé(e) pendant toute la durée de l'examen, et l'appel sera enregistré, etc…

Pendant l'examen, vous aurez la possibilité de parcourir les questions, de les marquer et de revenir en arrière si nécessaire. Donc, n'hésitez pas à passer les questions qui vous posent problème pour y revenir plus tard. Personnellement, j'ai marqué toutes les questions sur lesquelles je n'étais pas certain à 100%, ainsi que celles auxquelles je ne savais vraiment pas répondre. J'ai essayé de parcourir toutes les questions avant de revenir sur celles marquées. Vers la fin de l'examen, j'ai constaté une meilleure concentration, ce qui m'a permis de me corriger plus facilement en repassant sur les questions préalablement marquées, ou même de trouver des réponses à certaines questions auxquelles je ne pensais pas savoir répondre.

De plus, cela m'a permis d'avoir une idée générale de la réussite de mon examen une fois toutes les questions répondues, car un onglet vous permet d'avoir une vue d'ensemble des 65 questions (par exemple, pour passer facilement de la question 43 à la question 16, préalablement marquée). Ainsi, je pouvais estimer combien de questions me posaient problème. Je vous conseille de faire de même !

Type de questions

Si vous vous demandez à quoi vous attendre concernant le format des questions lors de l'examen, j'aimerais partager avec vous mon expérience. Personnellement, je ne savais pas vraiment à quoi m'attendre avant de passer l'examen, et j'aurais apprécié avoir une idée plus précise pour éviter certaines surprises. J'espère que cette section pourra vous aider à mieux vous préparer et à ne pas être pris au dépourvu comme j'ai pu l'être !

Questions à choix unique / multiple:

Pas de surprise ici, comme dans un QCM classique, il s'agit d'une question assortie de plusieurs choix de réponses possibles. Les différents formats que j'ai rencontrés sont :

  • 4 réponses, 1 sélection possible, 1 réponse correcte ;
  • 4 réponses, 2 sélections possibles, 2 réponses correctes ;
  • 8 réponses, 3 sélections possibles, 5 réponses correctes. Ce format peut porter à confusion, surtout si vous êtes sûrs de 5 réponses parmi les 8 proposées. Nous pouvons facilement tomber dans le piège de trop réfléchir et de passer beaucoup de temps sur cette question, en doutant de nos connaissances et en se demandant si deux des cinq options que nous pensons correctes sont en réalité fausses. Ne vous inquiétez pas, dans une telle situation, il est probable qu'il y ait plusieurs combinaisons de réponses correctes pour obtenir le point. Donc, il n'est pas nécessaire de sélectionner absolument toutes les bonnes réponses.

Questions Oui / Non

Ces questions présentent une situation qui peut comprendre du code accompagné d'une explication, un contexte, simplement du texte ou même des erreurs dans un terminal. Sous cette explication, vous verrez un bouton "Démarrer". En appuyant sur ce bouton, une courte question apparaît avec deux choix de réponses : Oui et Non. Une fois que vous avez fait votre choix et cliqué sur Oui ou Non, votre réponse est enregistrée et vous ne pouvez plus la modifier. Assurez-vous donc de bien réfléchir avant de confirmer votre réponse, car elle ne sera pas modifiable !

De plus, il peut y avoir entre 1 et 4 mini-questions de ce type, chacune avec son choix Oui ou Non. Par exemple, la question 54 peut comporter 3 mini-questions Oui/Non, tandis que la question 9 peut n'avoir qu'une seule mini-question Oui/Non. Faites attention : que vous marquiez ou non cette réponse, même si vous revenez sur ces questions plus tard, vous ne pourrez PAS changer vos réponses.

Je vous recommande donc de réserver ces questions pour la fin de l'examen (en les marquant), sauf si vous êtes très sûr de vous-même.

Blocs à ordonner

Dans ce type de question, vous vous retrouvez face à un contexte, suivi de blocs que vous devez organiser dans un certain ordre. Ces blocs peuvent être des blocs de code (YML / SQL), mais aussi simplement des étapes à suivre. Comme pour les questions à choix multiples, il existe plusieurs variantes de réponses :

Un contexte avec 4 blocs : ici, l'utilisation des 4 blocs est obligatoire. Il peut s'agir, par exemple, d'une situation nécessitant de mettre en ordre quatre étapes spécifiques.

Un contexte avec 9 blocs : dans ce cas, l'utilisation de tous les blocs n'est pas obligatoire. C'est-à-dire que vous pouvez (et probablement devriez) en utiliser moins, comme 5 ou 6. Par exemple, vous pouvez être amenés à créer un modèle pour répondre à un besoin métier spécifique, avec 9 blocs de code à disposition. Vous devrez en utiliser quelques-uns (mais pas tous) et les mettre dans le bon ordre pour que le modèle se compile sans erreur et qu'il réponde correctement au besoin.

Je dirais que ces questions sont parmi les plus difficiles, surtout lorsqu'il s'agit de blocs de code et que le nombre de blocs à utiliser n'est pas obligatoire. En effet, lors d'un développement normal, une simple commande dbt compile/run peut vous dire si votre code est correct. Ainsi, faire une erreur de temps en temps n'est pas très grave (tant que cela n'arrive pas trop souvent). Cependant, durant l’examen, vous devez savoir exactement quels éléments utiliser et dans quel ordre, sans avoir la possibilité de tester votre code en temps réel.

Pins

Je n'ai rencontré qu'une seule question de ce type lors de mon examen, mais j'ai pensé qu'il pourrait être utile de le mentionner, au cas où dbt labs déciderait d'utiliser davantage ce format à l'avenir. Il s'agit d'un bloc de lignes de code, et vous avez à votre disposition un certain nombre d'épingles (pins). Dans mon cas, il y en avait trois. Vous devez ensuite "placer" les épingles sur l'image du bloc de code, aux endroits indiqués par la question, comme par exemple là où il faut changer des références, modifier une syntaxe Jinja, ajouter une clause SQL, etc.

Je n'ai pas trouvé ce format pertinent, car les épingles sont des points, ce qui ne permet pas, par exemple, de marquer une ligne entière. Cela peut prêter à confusion pour certaines personnes. De plus, tout comme pour les questions à ordonner, l'utilisation de toutes les épingles n'est pas obligatoire. Donc, si on vous en donne cinq, vous pouvez décider d'en utiliser seulement quatre.

Retour global sur la certification

Dans l'ensemble, la principale difficulté pour passer cette certification réside dans le manque de ressources d’entrainement disponibles. Cependant, si vous prenez le temps de parcourir les ressources fournies par dbt, et si vous avez une expérience significative de l'utilisation de cet outil, une bonne compréhension des concepts du data engineering, ainsi qu'une solide expérience en SQL et en Git, alors vous aurez de grandes chances de réussir.

Je vous invite aussi à lire l'article Preparing for the dbt 'Analytics Engineering' Certification (2022) écrit par Paul Fry qui m'a inspiré à écrire celui-ci pour la version 2023 et qui m'a beaucoup aidé dans ma préparation de l'examen !

J'espère que  cet article vous a aidé à avoir une vision d'ensemble sur cette certification. N'hésitez pas à me contacter à epopovici@ippon.fr, ou sur LinkedIn si vous avez des questions !