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

  1. 01

    Principes d'un pipeline ETL

    15 minAperçu gratuit
    • 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

    Étapes ETLETL et ELTIdempotence

  2. 02

    Extraction : CSV, JSON et bases SQL

    18 min
    • 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

    Extraction CSVExtraction JSONExtraction SQL

  3. 03

    Transformation : nettoyage, typage et jointures sûres

    20 min
    • É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

    TransformationNormalisationJointures sûres

  4. 04

    Contrôles de qualité et mise en quarantaine

    18 min
    • É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

    Qualité des donnéesQuarantaineSeuils bloquants

  5. 05

    Chargement : upsert, transactions et incrémental

    20 min
    • 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

    ChargementUpsertWatermark et incrémental

  6. 06

    Orchestration, journalisation et fiabilité

    18 min
    • 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

    OrchestrationJournalisationRéessais

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.

L'aperçu est gratuit, et les cours se suivent un par un sans payer. Le parcours ne contient que des leçons du catalogue.