# Extraction, Transformation and Load

Extraction, Transformation and Load, afgekort ETL, is een begrip uit de informatica. Het benoemt de processen die gebruikt worden om gegevens uit verschillende gestructureerde databases te verenigen in een andere database, veelal een datawarehouse.
* Extract: data uit een bron ophalen
* Transform: opgehaalde data omzetten volgens regels en opzoektabellen of combinaties maken van data uit verschillende bronnen
* Load: de data wegschrijven op een andere plaats

## Volgorde

Zoals de afkorting ETL aangeeft, bestaat het uit drie processen: extract, transform en load. Deze processen gaan als volgt te werk:

### Extract

Het eerste deel van een ETL-proces haalt de data uit de bronsystemen. De meeste datawarehousingprojecten gebruiken data van verschillende bronsystemen en elk apart systeem kan ook een verschillend formaat/dataorganisatie gebruiken. Gebruikelijke databronformaten zijn relationele databases en flat files, maar kunnen ook niet-relationele databasesystemen gebruiken zoals IMS en andere datastructuren zoals VSAM en ISAM. Extraheren vormt de data om naar een formaat voor het proces van transformatie. Een intrinsiek deel van de extractie is het ontleden van de geëxtraheerde data, gevolgd door controle of de data aan de verwachte structuur beantwoordt. Indien dit niet het geval is, wordt de data in zijn geheel niet toegelaten. Dit wordt ook wel het opschonen van data genoemd.

### Transform

Het omvormen van data past een serie van regels of functies toe op de geëxtraheerde data van de bron om de data af te leiden om geladen te worden naar het einddoel. Sommige databronnen zullen heel weinig of zelfs geen manipulatie nodig hebben. In andere gevallen zullen er één of meer transformatietypes toegepast moeten worden om aan de zakelijke en technische benodigdheden van het einddoel te beantwoorden:
* enkel sommige kolommen selecteren om te laden
* gecodeerde waarden vertalen (bijvoorbeeld het bronsysteem gebruikt andere waarden dan het warehouse voor bepaalde delen), dit gebeurt automatisch
* vrije vormen van data coderen (bijvoorbeeld waarde "Mannelijk" naar a en "Meneer" naar b mappen)
* een nieuwe berekende waarde afleiden, dit is een waarde die bestaat uit een bewerking en twee bekende variabelen, maar het warehouse kent deze nieuwe waarde niet
* data van verschillende bronsystemen samenvoegen
* verschillende rijen samenvatten naar één rij
* kolommen splitsen in verschillende kolommen
* enige vorm van complexe datavalidatie toepassen
* transponeren of pivoteren van data.

### Load

De laatste fase laadt de data in het einddoel (meestal de datawarehouse). Naargelang de eisen van de organisatie, kan dit proces ver gaan. Sommige datawarehouses kunnen elke week bestaande informatie overschrijven met aangepaste, bijgewerkte data, terwijl andere datawarehouses nieuwe data in een tijdstabel-vorm toevoegen (bijvoorbeeld elke minuut). De data wordt vervangen op strategisch gekozen momenten, vooral naar behoefte van het bedrijf. Meer complexe systemen kunnen een geschiedenis bijhouden en een spoor auditten van alle veranderingen van de data, die geladen was in het datawarehouse.

## Gebruik
### Data-uitwisseling

Data worden van het ene systeem naar het andere gestuurd en omgekeerd. Dit kan voorkomen bij grote ERP-systemen, waar een verkoop binnenkomt en waar de data die bewerkt moeten worden, naar de bron doorgestuurd worden. Deze bron bewerkt de data en stuurt die terug naar het eerste systeem (met een update).

### System Migration en Legacy Conversion

Data worden gestuurd van het ene systeem naar het andere. Dit is een eenmalig proces van hoge complexiteit dat vooral dient om oude batchsystemen om te vormen en andere systemen in het warehouse te implementeren.

### Upgraden van infrastructuur

Hierbij wordt de datastructuur veranderd. Het terugmigreren van data hoeft maar een keer.

### Instantieconsultatie

Hierbij wordt de ICT-complexiteit verkleind door systemen en platforms weg te doen. Het is een eenmalig proces van hoge complexiteit.