Le rapport est prêt à 7 h
Une enseigne de bricolage compte quarante magasins. Chaque matin à 7 h, la directrice régionale lit les ventes de la veille.
Personne n'a tapé ces chiffres. Pendant la nuit, un programme a récupéré les ventes des caisses, les a nettoyées et rangées.
Ce programme est une chaîne de traitement des données. Un ingénieur données la construit et la surveille.
À la fin de cette leçon
Remarque
Je peux décrire le chemin des données, de la source au rapport.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Source | le système où les données naissent | la caisse |
| Extraire | copier les données hors de la source | |
| Transformer | nettoyer et mettre en forme les données | |
| Charger | ranger les données propres là où on les lit | |
| Pipeline | une chaîne de traitement qui enchaîne ces étapes |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Trois étapes : extraire, transformer, charger
On extrait : on copie les ventes hors du logiciel de caisse, souvent dans un fichier texte.
On transforme : on découpe chaque ligne, on nettoie et on convertit les montants.
On charge : on range les lignes propres dans une base faite pour les rapports.
Les initiales donnent le nom courant : ETL. Un planificateur lance le tout chaque nuit.
Un pipeline est du code qu'on peut lire
Un export français sépare les colonnes par un point-virgule et écrit les décimales avec une virgule.
Le code ci-dessous suit les trois étapes, dans l'ordre. Chaque étape commence par un commentaire.
Lisez-le une fois, puis exécutez-le. Comptez les lignes chargées : une vente a été écartée.
Faire tourner un petit pipeline
# EXTRAIRE : la caisse exporte du texte, une vente par ligne.
export = """2026-10-01;Lyon;12,50
2026-10-01;lyon ;8,00
2026-10-01;Grenoble;
2026-10-01;Grenoble;4,50"""
# TRANSFORMER : découper, nettoyer, convertir.
propres = []
for ligne in export.split("\n"):
parties = ligne.split(";")
montant = parties[2].strip()
if montant != "": # une vente sans montant est écartée
propres.append({"ville": parties[1].strip().title(),
"montant": float(montant.replace(",", "."))})
# CHARGER : ranger les lignes propres dans la base de rapports.
base = {}
for vente in propres:
ville = vente["ville"]
if ville in base:
base[ville] = base[ville] + vente["montant"]
else:
base[ville] = vente["montant"]
print("Lignes chargées :", len(propres))
print("Ventes par ville :", base)
# Ajoutez la ligne 2026-10-01;GRENOBLE;10,00 à l'export, puis exécutez.
Une erreur fréquente
Attention
Beaucoup pensent qu'il faut corriger les erreurs directement dans la caisse. Non : un pipeline ne modifie jamais sa source. Il travaille sur une copie extraite. Si une règle est fausse, on la corrige et on relance la chaîne.