Cours pratique : construire des pipelines ETL en Python
Pipelines ETL simples est un cours de niveau avancé de 6 leçons (environ 3 h 49), avec 18 exercices et 18 questions de quiz. Prérequis : Nettoyage et préparation des données, SQL avancé (CTE, fonctions de fenêtre). Les exercices s'exécutent dans le navigateur, sans installation.
- Analyse de données
- Avancé
- 6 leçons
- 3 h 49
- 18 exercices
- Exercices exécutés dans le navigateur
Le cours en bref
Ce cours t'apprend à automatiser la préparation des données avec des pipelines ETL robustes en Python, pandas et SQLite. Tu extrairas des données de sources variées, écriras des transformations pures et testables, mettras en place des contrôles de qualité avec quarantaine, chargeras de façon idempotente par upsert et watermark, puis orchestreras le tout avec journalisation, réessais et rapport d'exécution.
Ce que tu sauras faire
- Concevoir un pipeline ETL ou ELT découpé en fonctions testables et idempotent
- Extraire des données CSV, JSON imbriquées et SQL en maîtrisant types et formats
- Écrire des transformations pures et des jointures sécurisées
- Mettre en place des contrôles de qualité avec quarantaine et seuils bloquants
- Charger de façon idempotente (upsert, partition) et incrémentale (watermark) dans des transactions
- Orchestrer un pipeline avec logging, réessais, rapport d'exécution et test de bout en bout
Programme des 6 leçons
- Décrire les étapes extraire, transformer, charger et la différence entre ETL et ELT
- Structurer un pipeline en fonctions testables
- Expliquer et vérifier l'idempotence d'un traitement
- 02
Extraction : CSV, JSON et bases SQL
- Lire des CSV au format français en imposant les types
- Aplatir des données JSON imbriquées avec json_normalize
- Extraire de façon incrémentale depuis une base SQL avec une requête paramétrée
- 03
Transformation : nettoyage, typage et jointures sûres
- Écrire une fonction de transformation pure, composée d'étapes lisibles
- Normaliser textes, catégories et unités
- Sécuriser les jointures avec validate et indicator
- 04
Contrôles de qualité et mise en quarantaine
- Écrire des contrôles de qualité : schéma, unicité, complétude, plages, référentiel
- Séparer lignes valides et lignes rejetées avec un motif
- Définir des seuils bloquants pour arrêter le pipeline
- 05
Chargement : upsert, transactions et incrémental
- Charger des données dans une base SQL avec un schéma explicite
- Écrire un chargement idempotent par upsert (INSERT ... ON CONFLICT)
- Gérer un chargement incrémental avec un watermark et des transactions
- 06
Orchestration, journalisation et fiabilité
- Assembler un pipeline complet qui produit un rapport d'exécution
- Journaliser avec le module logging et mesurer chaque étape
- Gérer les erreurs transitoires avec des réessais et planifier l'exécution
Projet final
Pipeline quotidien des commandes d'une boutique en ligne
Construis en Python un pipeline complet et rejouable qui alimente une base SQLite analytique à partir de trois sources simulées en mémoire : un export CSV au format français des commandes, une réponse JSON imbriquée d'API de paiement et une table SQL de clients. Le pipeline doit extraire en incrémental, transformer, contrôler la qualité, mettre en quarantaine, charger par upsert et produire un rapport d'exécution historisé.
Livrables
- Un module Python organisé en fonctions extraire, transformer, controler, charger et executer_pipeline
- Le schéma SQL des tables cibles, de quarantaine, de contrôle (watermark) et d'historique des exécutions
- Une suite de tests (assert ou pytest) couvrant chaque étape, une double exécution et un cas d'échec
- Une démonstration : trois exécutions successives avec nouvelles données, données corrigées et lot défectueux
- Une note d'exploitation d'une page : planification, alertes, procédure de rejeu d'un jour passé
Critères d'évaluation
- Le pipeline est idempotent et rejouable par date
- Les types, formats et jointures sont maîtrisés, sans duplication silencieuse
- Les contrôles de qualité sont déclaratifs, les rejets tracés et les seuils bloquants respectés
- Le chargement et le watermark sont transactionnels
- Le journal et le rapport d'exécution permettent de comprendre chaque exécution sans lire le code
Questions fréquentes
Quelle est la différence entre ETL et ELT ?
En ETL, les données sont transformées avant d'être chargées dans la destination. En ELT, elles sont chargées brutes dans l'entrepôt puis transformées en SQL sur place. Les principes de fiabilité du cours s'appliquent aux deux.
Faut-il connaître un orchestrateur comme Airflow ?
Non. Le cours construit l'orchestration en Python pur pour en comprendre les principes (rapport, journalisation, réessais), puis présente le rôle de cron et des orchestrateurs du marché.
Quels prérequis ?
Savoir nettoyer des données avec pandas et maîtriser le SQL avancé (jointures, CTE, fonctions de fenêtre). Les exercices utilisent pandas et SQLite en mémoire.
Qu'est-ce qu'un pipeline idempotent ?
C'est un pipeline que l'on peut relancer sur les mêmes données sans changer le résultat final ni créer de doublons, grâce au remplacement de partitions ou à l'upsert.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « Pipelines ETL simples » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.