Extract, Transform, Load (ETL) est un processus informatique en trois phases utilisé pour intégrer des données provenant d'une ou plusieurs sources dans un conteneur de données cible, tel qu'un entrepôt de données, un lac de données ou un magasin de données opérationnel. Le processus consiste à extraire les données brutes des systèmes sources, à les transformer par nettoyage et restructuration, puis à les charger dans la destination. L'ETL est généralement automatisé par des applications logicielles, bien qu'il puisse être effectué manuellement par des opérateurs système. C'est une technique fondamentale dans l'entreposage de données et elle a évolué pour prendre en charge les scénarios cloud et de streaming en temps réel.
Les systèmes ETL sont conçus pour garantir la qualité et la cohérence des données. Ils extraient les données de sources hétérogènes, appliquent des règles de validation et de transformation, et s'assurent que la sortie est conforme au schéma cible. Un pipeline ETL bien conçu peut fournir des données prêtes à la présentation, permettant aux développeurs d'applications et aux utilisateurs finaux de prendre des décisions sans traitement supplémentaire. Le processus est souvent utilisé pour combiner des données provenant de plusieurs applications, qui peuvent être développées par différents fournisseurs ou hébergées sur du matériel séparé, et sont fréquemment gérées par différentes parties prenantes. Par exemple, un système de comptabilité analytique pourrait intégrer des données provenant des systèmes de paie, de vente et d'achat.
Phases
L'ETL se compose de trois phases distinctes : l'extraction, la transformation et le chargement. Chaque phase a des objectifs et des défis spécifiques, et ensemble, elles forment un pipeline qui déplace les données de la source vers la destination.
Extraction
La phase d'extraction consiste à récupérer les données des systèmes sources. C'est souvent l'étape la plus critique, car une extraction correcte des données prépare le terrain pour les processus en aval. Les sources peuvent inclure des bases de données relationnelles, des fichiers plats, XML, JSON, des structures non relationnelles comme IBM Information Management System, ou des formats tels que Virtual Storage Access Method (VSAM) et Indexed Sequential Access Method (ISAM). Les données peuvent également être récupérées à partir de sources externes via des robots d'exploration Web ou du scraping de données. Dans certains cas, l'ETL peut diffuser les données directement de la source vers la destination sans stockage intermédiaire.
Une partie intrinsèque de l'extraction est la validation des données, qui vérifie si les données ont des valeurs attendues dans un domaine donné, comme des modèles, des valeurs par défaut ou des listes. Si les données échouent aux règles de validation, elles peuvent être rejetées en totalité ou en partie. Les données rejetées sont idéalement renvoyées au système source pour analyse et correction, un processus parfois appelé data wrangling.
Transformation
Dans la phase de transformation, une série de règles ou de fonctions est appliquée aux données extraites pour les préparer au chargement. Le nettoyage des données est une fonction clé, garantissant que seules les données appropriées parviennent à la cible. Des défis surgissent lorsque différents systèmes utilisent des jeux de caractères ou des formats incompatibles. Les types de transformation courants incluent :
- Sélectionner uniquement certaines colonnes à charger, ou ignorer les enregistrements avec des valeurs manquantes.
- Traduire des valeurs codées, comme convertir les codes de genre de "1"/"2" à "M"/"F".
- Coder des valeurs en texte libre, comme mapper "Male" à "M".
- Dériver de nouvelles valeurs calculées, comme montant_vente = quantité * prix_unitaire.
- Trier les données pour améliorer les performances de recherche.
- Joindre des données provenant de plusieurs sources et dédupliquer les enregistrements.
- Agréger des données, comme résumer les ventes totales par magasin ou par région.
- Générer des valeurs de clé de substitution.
- Transposer ou pivoter des données, diviser des colonnes ou désagréger des colonnes répétitives.
- Rechercher et valider des données à partir de tables de référence.
Une validation échouée peut entraîner un rejet total, un rejet partiel ou aucun rejet, selon la conception des règles et la gestion des exceptions. De nombreuses transformations peuvent produire des exceptions, comme lorsqu'une traduction de code rencontre un code inconnu.
Chargement
La phase de chargement insère les données transformées dans la cible, qui peut être un simple fichier plat délimité ou un entrepôt de données complexe. Le processus varie selon les exigences organisationnelles. Certains entrepôts écrasent les informations existantes avec des données cumulatives, souvent selon des calendriers quotidiens, hebdomadaires ou mensuels. D'autres ajoutent de nouvelles données sous une forme historique à intervalles réguliers, comme toutes les heures. Par exemple, un entrepôt conservant les enregistrements de ventes de la dernière année pourrait écraser les données de plus d'un an, tout en conservant les données de l'année en cours de manière historique. Le calendrier et la portée du remplacement ou de l'ajout sont des choix stratégiques dépendant du temps et des besoins commerciaux. Des systèmes plus complexes peuvent maintenir un historique et une piste d'audit de tous les changements.
Pendant le chargement, les contraintes de base de données définies dans le schéma, telles que l'unicité, l'intégrité référentielle et les champs obligatoires, s'appliquent. Les déclencheurs activés lors du chargement des données appliquent également ces règles, ce qui peut entraîner le rejet d'enregistrements invalides.
Variantes et utilisation moderne
L'ETL a une variante appelée ELT (extract, load, transform), où les données sont chargées dans la cible avant la transformation. Cette approche est de plus en plus utilisée dans l'entreposage de données cloud, où le système cible dispose de puissantes capacités de traitement. L'ETL et l'ELT sont tous deux appliqués non seulement dans le traitement par lots, mais aussi dans les scénarios de streaming en temps réel, permettant une intégration de données quasi instantanée.
Les outils ETL modernes prennent souvent en charge les plateformes cloud comme Amazon Web Services, Azure et Google Cloud, et peuvent gérer de grands volumes de données provenant de sources diverses. L'essor de l'intelligence artificielle et de l'apprentissage automatique a également influencé l'ETL, car les pipelines de données alimentent de plus en plus les systèmes d'analyse et de formation de modèles.
Défis et bonnes pratiques
La conception d'un système ETL efficace nécessite une planification minutieuse. Les principaux défis incluent la gestion des problèmes de qualité des données, la gestion des changements de schéma et la garantie des performances à grande échelle. Les bonnes pratiques incluent :
- Définir des règles de validation des données claires et une gestion des exceptions.
- Documenter la logique de transformation pour la maintenabilité.
- Utiliser le chargement incrémental pour réduire le temps de traitement.
- Surveiller les travaux ETL pour détecter les échecs et les goulots d'étranglement de performance.
- Garantir la sécurité et la conformité des données pendant l'extraction et le chargement.
L'ETL reste un composant critique des stratégies d'intégration de données, comblant le fossé entre les systèmes opérationnels et les environnements analytiques. À mesure que les volumes de données augmentent et que les sources se diversifient, les processus ETL continuent d'évoluer, intégrant des technologies de streaming et cloud-native pour répondre aux besoins modernes.