# Extract-transform-load

Extract-transform-load (extraction, transformation et chargement) est une technologie informatique intergicielle permettant d'effectuer des synchronisations massives d'information d'une source de données (le plus souvent une base de données) vers une autre. Cette technologie est connue sous le sigle ETL, ou extracto-chargeur. Selon le contexte, il s'agit d'exploiter différentes fonctions, souvent combinées entre elles : « extraction », « transformation », « constitution » ou « conversion », « alimentation » ou « chargement ».

## Organisation et Historique

Cette technologie repose sur :
* des connecteurs servant à exporter ou importer les données dans les applications (ex. : connecteur Oracle ou SAP…) ;
* des transformateurs qui manipulent les données (agrégations, filtres, conversions…) ;
* et des mises en correspondance (mappages). L'objectif est l'intégration ou la réexploitation de données d'un réservoir source dans un réservoir cible.
À l'origine, les solutions d'ETL sont apparues pour le chargement régulier de données agrégées dans les entrepôts de données, avant de se diversifier vers les autres domaines logiciels. Ces solutions sont largement utilisées dans le monde bancaire et financier, ainsi que dans l'industrie, au vu de la multiplication des nombreuses interfaces.
Des technologies complémentaires sont apparues par la suite : l'intégration d'applications d'entreprise, puis l'ESB (enterprise service bus).
Il existe également des solutions d'ETL de contenu permettant de manipuler des données non structurées ou faiblement structurées, tels que les dossiers ou les documents. Ces solutions sont utilisées pour des projets de migration de documents. Par exemple, lors de migration de documents d'une application GED vers une autre. Leur champ d'application peut également s'étendre à des projets d'archivage électronique.
Ces outils d'ETL sont également exploitables pour la manipulation de données non ou faiblement structurées dans le cadre de la fouille de textes.
Enfin, un extract load transform (ELT) est un ETL particulier qui n'utilise pas de moteur pour effectuer la transformation des données, mais d'autres systèmes capables de faire de la transformation (e.g. bases de données sources ou cibles). C'est le cas d'outils comme Fivetran ou Streams by Datanexions.

## Fonctionnement du processus ETL
### Extraction

L'objectif d'ETL est de produire des données propres, faciles d'accès et qui peuvent être exploitées efficacement par l'analytique, l'informatique décisionnelle et/ou les opérations commerciales. Les données brutes peuvent être extraites de différentes sources, en particulier :
* bases de données existantes ;
* logs d'activité (trafic réseau, rapports d'erreurs, etc.) ;
* comportement, performances et anomalies des applications ;
* événements de sécurité ;
* autres opérations qui doivent être décrites aux fins de conformité.
Les données extraites sont parfois stockées dans un emplacement tel qu'un data lake ou un data warehouse.

### Transformation

L'étape de transformation du processus ETL est celle des opérations les plus essentielles. L'opération la plus importante de l'étape de transformation consiste à appliquer aux données brutes les règles internes de l'entreprise de manière à répondre aux exigences en matière de reporting : les données brutes sont nettoyées et converties aux formats de rapport qui conviennent (si les données ne sont pas nettoyées, il devient plus difficile d'appliquer les règles internes de reporting).
La transformation applique les règles définies en interne. Les normes qui garantissent la qualité des données et leur accessibilité doivent tenir compte des pratiques suivantes :
* Standardisation : Définir les données à traiter, leur format et leur mode de stockage ainsi que d'autres considérations de base qui définiront les étapes qui suivent.
* Déduplication : Transmettre un rapport sur les doublons aux personnes chargées de la gouvernance des données ; exclure et/ou supprimer les données redondantes
* Vérification : Effectuer des vérifications automatisées pour comparer des données similaires telles que durée de transaction ou suivi des accès. Les tâches de vérification permettent d'éliminer les données inutilisables et de signaler les anomalies des systèmes, des applications ou des données.
* Tri : Maximiser l'efficacité des data Warehouse en regroupant et stockant les objets par catégorie (données brutes, données audio, mails, etc.). Vos règles de transformation ETL conditionnent la catégorisation de chaque objet et sa prochaine destination. Le processus ETL est parfois utilisé pour générer des tables d'agrégation qui sont ensuite proposées dans des rapports de base ; dans ce cas, vous devez trier puis agréger les données.
* Autres tâches : Tâches dont vous avez besoin et que vous définissez et paramétrez de telle sorte qu'elles s'exécutent en mode automatique

### Chargement

La dernière étape du processus ETL standard consiste à charger les données extraites et transformées dans leur nouvel emplacement. En général, les entrepôts de données supportent deux modes pour le chargement des données : chargement complet (on recharge l'integralité des données) et chargement incrémental (seules les dernières données sont chargées).

## Pilotage

Le traitement ETL (cycle ponctuel ou programme de cycles) peut être lancé en ligne de commande ou via une interface graphique. Mais il y a certains points à surveiller. La gestion des exceptions, par exemple, peut être un processus très lourd. Dans bien des cas, la génération des extraits de données peut échouer si un ou plusieurs systèmes sont en panne. Si un système contient des données incorrectes, celles-ci peuvent avoir un impact sur les données extraites d'un autre système ; autrement dit, la supervision et le traitement des erreurs sont des activités essentielles.

## Les principaux usages de l'ETL

Dans la plupart des activités de l'entreprise, les données jouent un rôle essentiel : pour réaliser leur potentiel de valeur, elles doivent être déplacées et préparées pour exploitation, et ces opérations exigent les processus ETL. Exemples de cas d'usage pour les outils ETL :
* Migrer des données d'une application à une autre.
* Répliquer des données pour la sauvegarde ou l'analyse des redondances.
* Processus opérationnels tels que la migration des données d'un système CRM vers un gisement opérationnel ODS (Operational Data Store) afin d'améliorer ou d'enrichir les données, puis de les replacer dans le CRM.
* Stocker les données dans un data Warehouse avant de les importer, les trier et les transformer dans un environnement d'informatique décisionnelle.
* Migrer des applications on-premises vers des infrastructures cloud, cloud hybride ou multi-cloud.
* Synchronisation des systèmes critiques.

## Performances et limites
### Avantages

* Optimisé pour la structure de l’entrepôt de données
* Peut traiter de grandes quantités de données dans une même exécution (traitement en lot)
* Permet des transformations complexes et agrégations sur les données
* La cédule d’exécution peut être contrôlée par l’administrateur
* La disponibilité d’outils GUI sur le marché permet d’améliorer la productivité
* Permet la réutilisation des processus et transformations (ex : packages dans SSIS)

### Inconvénients

* Processus de développement long et coûteux
* Gestion des changements nécessaire
* Exige de l’espace disque pour effectuer les transformations (staging area)
* Exécuté indépendamment du besoin réel
* Latence des données entre la source et l’entrepôt
* Unidirectionnel (des sources vers l’entrepôt de données)

## La différence entre l’ETL et EAI
### Définition EAI

L’EAI, ou Enterprise Application Integration (en français, l’intégration des applications d’entreprise), désigne un processus en cours depuis de nombreuses années, l’intégration d’applications variées aﬁn qu’elles puissent partager librement l’information et les traitements. L’EAI est sous le feu des projecteurs des fournisseurs de logiciels et des analystes et permet enﬁn de régler un problème qui coûte aux très grandes entreprises 100 milliards de dollars par an.
Enterprise Application Integration (EAI) pour le terme consacré en anglais, est aussi appelé Echanges Inter-applicatifs de Données en français. Ce terme désigne une architecture SI qui permet à plusieurs logiciels de communiquer entre eux et de gérer les différents échanges. On parle aussi de gestion des flux inter-applicatifs. Par raccourci, les outils logiciels utilisés pour réaliser ces architectures EAI sont eux aussi appelés « logiciels EAI ».
Un logiciel EAI permet de se connecter à tout type de sources de données, d’en extraire des données, de manipuler ces données, de structurer ces données puis de les déposer dans toutes autres structures de données. L’exécution de ces manipulations et la synchronisation de données est programmable et déclenchée par tout type d’évènements.

### Comparaison ETL / EAI

L’ETL est une technique d’intégration de données comme l’EAI. Les produits d’EAI sont orientés événements et supportent des traitements de type transactionnel, que l’ETL ne supporte pas. En revanche, l’ETL permet des transformations beaucoup plus complexes. Certains éditeurs de produits d’EAI et d’ETL deviennent partenaires, et on se dirige vers des solutions où l’EAI capture les données et les événements des applications en temps réel et les passe à l’outil ETL qui transforme les données et les charge dans l’environnement d'informatique décisionnelle.
| Comparaison générale ETL/EAI | ETL | EAI |
| Mode principal | Lot | Flux (pseudo temps-réel) |
| Orientation | Données | Métier |
| Volumétrie | potentiellement forte (ex 15 000 000 de lignes) | relativement faible (ex. 100 000 lignes) |
| Sources / Cibles | ↔SGBD, ←ODS, ↔entrepôts de données, →datamart, ←progiciel de gestion intégré, ←gestion de la relation client | ↔inter-application au sens large |

## ETL virtuel

En 2010, la virtualisation de données a commencé à avancer le traitement ETL. L'application de la virtualisation de données ETL a permis de résoudre les tâches les plus courantes ETL de migration des données et l’intégration des applications pour de multiples sources de données dispersées. Virtual ETL fonctionne avec la représentation abstraite des objets ou des entités recueillies à partir de la variété des relationnelles, semi-structurés et des sources de données non structurées. Outils ETL peuvent tirer parti de la modélisation orientée objet et travailler avec les représentations des entités constamment stockées dans un emplacement central hub-and-spoke architecture. Une telle collection qui contient des représentations des entités ou des objets recueillis à partir des sources de données pour le traitement ETL est appelé un référentiel de métadonnées et il peut résider dans la mémoire ou être fait persistante. En utilisant un référentiel de métadonnées persistantes, les outils ETL peuvent passer des projets ponctuels à middleware persistant, d’effectuer l’harmonisation et des données de profilage des données de manière cohérente et en temps quasi-réel.