🇬🇧 You'll find the english version here!

Data Team / Exercice technique

👋 Bienvenue à toi ! Tu vas trouver ici tout le contexte dont tu as besoin pour réaliser le test technique qui fait parti du processus de recrutement chez Jump.

Présentation

La Data Platform

Ce dépôt contient l'ensemble du code qui constitue la Data Platform. La Data Platform constitue l'ensemble des moyens techniques mis en oeuvre pour répondre aux besoins qui nécessitent l'exploitation de la donnée chez Jump (rapports et dashboards, extractions ad-hoc, etc.)

La clé de voute de la Data Platform est le Lakehouse : c'est une base de donnée analytique qui est composée de 4 couches :

  • La couche Sources qui contient une copie de l'ensemble des donnĂ©es brutes issue des applications utilisĂ©es chez Jump (l'application dĂ©velopĂ©e par les Ă©quipes Backend et Frontend, le CRM administrĂ© par l'Ă©quipe Sales, etc.)
  • La couche Staging qui est très similaire Ă  la couche prĂ©cĂ©dente mais contient quelques Ă©tapes de nettoyage, de filtrage, etc. ;
  • La couche Intermediate qui s'appuie sur la couche prĂ©cĂ©dente et contient un modèle homogène et cohĂ©rent qui couvre l'ensemble du pĂ©rimètre fonctionnel adressĂ© par Jump (facturation, CDI des salariĂ©s portĂ©s, etc.) ;
  • Le couche Marts qui contient des modèles plus complexes mais Ă  forte valeur ajoutĂ©e nĂ©cessaires pour rĂ©pondre Ă  des besoins fonctionnels plus poussĂ©s.

Architecture

💡 Bien que ce dépôt existe que dans le cadre du test technique, l'architecture que l'on a en interne est très semblable à celle décrite ici (même s'il y a plus que 2 applications à intégrer que les problématiques sont beaucoup plus larges).

Le modèle de données

Le business de Jump est assez simple :

  • Un CDI chez Jump est materialisĂ© par :
    • Une date de dĂ©but,
    • Une date de fin,
    • Une entitĂ© (qui peut ĂŞtre blue si le freelance souscrit Ă  Jump Blue ou green s'il souscrit Ă  Jump Green) ;
  • Un freelance peut avoir plusieurs CDI (Ă  condition que les dates entre deux CDI ne se chevauchent pas) ;
  • Dans le cadre de son CDI, un freelance peut facturer un client.

Modèle de données

DĂ©tails technique

Composants

La Data Platform s'appuie sur les technologies suivantes :

  • Le Lakehouse est une base de donnĂ©es DuckDB :
    • Le fichier se trouve dans ./data/lakehouse/lakehouse.duckdb,
    • Chacune des couches logiques citĂ©es ci-dessus est un schĂ©ma ;
  • L'ensemble des transformations est rĂ©alisĂ© Ă  l'aide de DBT grâce Ă  ce projet ;
  • Une CLI en Python qui orchestre les diffĂ©rentes Ă©tapes d'alimentation de la Data Platform :
    • L'Ă©tape extract pour extraire les donnĂ©es depuis les applications sous forme de fichiers CSV dans le dossier ./data/sources,
    • L'Ă©tape load pour charger les donnĂ©es extraites dans le schĂ©ma sources du Lakehouse (qui va aller se trouver dans ./data/lakehouse),
    • L'Ă©tape transform pour alimenter les schĂ©mas staging, intermediate et marts.

⚠️ Naturellement, dans le cadre du test technique, on extrait les données d'aucune application. Elles sont en réalité générées aléatoirement par la CLI (ici et là).

Utilisation

TL;DR...

Pour pouvoir lancer les commandes, tu auras besoin de Docker et de Make.

Pour construire l'image Docker qui contient la Data Platform et lancer une chaine d'alimentation complète, tu as juste à lancer la commande make (sans argument).

đź’Ą La commande make seule doit fonctionner sans aucune erreur... Si tu rencontre la moindre erreur, contacte-nous : cela ne devrait pas arriver !

Si tu veux plus de détails sur les targets disponibles, tu peux lancer make help.

Et en plus long ?

La conteneurisation est faite à l'aide de Docker et de ce Dockerfile et toutes les commandes pour builder sont embarquées dans ce Makefile.

Les targets suivantes sont disponibles :

  • make build : construit l'image Docker qui embarque la CLI, le projet DBT, etc.
  • make extract : lance l'extract des donnĂ©es de l'application et du CRM
  • make load : lance l'inĂ©gration des extractions dans le schĂ©ma source du Lakehouse
  • make transform : transforme les donnĂ©es et alimente les schĂ©mas staging, intermediate et marts (Ă  l'aide du projet DBT)
  • make export: exporte les analyses DBT au format CSV
  • make query : lance le REPL de DuckDB pour requĂŞter le lakehouse

N'hésite pas à explorer les données en parcourant le projet DBT et en requêtant les tables avec make query.

A noter qu'un workflow GitHub Action est également présent. Il est en charge de :

  • Lancer les commandes ci-dessus
  • Mettre Ă  disposition les exports des analyses DBT (au format CSV) et le Lakehouse (au format DuckDB)

đź’ˇ Assure-toi bien que les modifications que tu apportes au projet ne mettent pas le workflow en Ă©chec !

❓ Tout est clair ? Si oui, retrouve ici les exercices à réaliser !