Was sind ETL-Prozesse

Hallo zusammen,
was sind ETL-Prozesse? Genau diese Frage sollt Ihr nach dem Lesen dieses Artikels beantworten können. Zuerst stelle ich Euch die einzelnen Schritte des ETL-Prozesses vor und danach zeige ich euch unterschiedliche Möglichkeiten für die Umsetzungen von ETL-Prozessen.

Aber zuerst, wofür steht eigentlich ETL?

Die Abkürzung ETL steht für die englischen Worte (E)xtract, (T)ransform und (L)oad. Sie beschreibt einen dreistufigen Prozess bei dem Daten aus einer oder mehreren Quellen in mindestens einem Ziel zusammengefasst werden. Dieser Prozess sollte am Besten folgende Bedingungen erfüllen:

Er ist stabil: Ein ETL-Prozess ist stabil, wenn garantiert ist, dass die Daten nach anstarten des Prozess korrekt am Ziel ankommen. Zusätzlich soll er mit fehlerhaften Daten in der Quelle umgehenen können sowie aussagekräftige Fehlermeldungen produzieren, wenn etwas im Prozess schief läuft.

Er terminiert: Der Prozess soll abhängig von der Datenmenge  in der Quelle in endlicher Zeit fertig werden. Zusätzlich sollte die Verarbeitungszeit maximal linear zur Menge der Daten in der Quelle wachsen.

Er ist deterministisch: Determinismus bedeutet, dass der Prozess bei gleichen Input immer das gleiche Ergebnis produziert.

Er ist strukturiert: Das heißt zu erst kommen dieTeilschritte des (E)xtract-Schritts, dann die Teilschritte des (T)ransform-Schritts und zu guter Letzt die Teilschritte des (L)oad-Schritts.

Die einzelnen Schritte – (E)xtract:

Im (E)xtract-Schritt werden Daten aus unterschiedlichen Quellen extrahiert und den nachfolgenden Schritten zur Verfügung gestellt. Dabei gibt es unterschiedliche Möglichkeiten den (E)xtract-Schritt anzustoßen.

periodisch: Die Quelle bietet in regelmäßigen Abständen zum gleichen Zeitpunkt z.B. täglich um 18 Uhr Daten an. Deswegen kann der ETL-Prozess so eingestellt werden, dass er ebenso regelmäßig um z.B. 18:05 die Daten abholt und weiterverarbeitet.

ereignisgesteuert: Die Quelle bietet nach gewissen Ereignissen, z.B. einen Kauf in einem Webshop, Daten an. Dieses Ereignis stößt den ET-l Prozess an und sorgt für die Abholung und Weiterverarbeitung der Daten durch den Prozess

anfragegesteuert: Die Quelle z.B. eine API oder Datenbank hält die Daten beliebig lange bereit und bietet sie dem ETL-Prozess auf Anfrage an. Das Ergebnis der Anfrage wird dann durch den ETL-Prozess weiterverarbeitet

Die einzelnen Schritte – (T)ransform:

Nachdem die Daten im (E)xtract-Schritt abgeholt wurden, können Sie nun im (T)ransform-Schritt weiterverarbeitet werden. Das ist häufig, aber nicht immer notwendig. Transformationen sind immer dann notwendig, wenn sich die Struktur der Daten im Quell- und Zielsystem unterscheiden. Sollten keine Transformationen notwendig sein, werden die Daten einfach an den (L)oad-Schritt weitergegeben. Beispiele für Transformationen sind:

Datumstransformationen: Diese sind notwendig, wenn sich das Datumsformat im Quell- und im Ziel unterscheiden. So hat das Datum in der Quelle z.B. das Format yyyy-MM-dd also 2018-01-27, im Ziel soll das Datum jedoch im Format dd.MM.yy,  also 27.01.18, stehen.

Zahlentransformationen: In der Quelle hat eine Zahl z.B. fünf Nachkommastellen. Im Ziel soll die Zahl auf zwei Nachkommastellen gerundet sein. Ein weiteres Beispiel wäre die Umwandlung einer Zahl vom deutschen Format also 1.000,00 in der amerikanische Format mit 1,000.00.

Umrechnungen: In der Quelle steht eine Temperatur in Grad Fahrenheit, im Ziel soll die Temperatur in Grad Celsius umgerechnet sein. In er Quelle steht ein Geldbetrag in Euro. Im Ziel benötigt man den Geldbetrag in Dollar. Dabei soll nicht der aktuelle Umrechnungskurs zur Ausführung genommen werden, sondern der Kurs, der zum Zeitpunkt der Erstellung des Eintrags in der Quelle gültig war.

Aggregationen: In der Quelle hat man Daten z.B. Besucher einer Homepage auf Tagesbasis. Im Ziel benötigt man die Besucher auf Wochenbasis

Kodierungsänderungen: In der Quelle ist das Geschlecht mit 0/1 kodiert. Im Ziel soll das Geschlecht mit m/w kodiert sein.

Stringänderungen: In der Quelle steht ein Name mit Kapitälchen und mit Sonderzeichen. Im Ziel muss der Name einheitlich nur aus Großbuchstaben bestehen und es dürfen keine Sonderzeichen mehr vorhanden sein. Aus Max Müller in der Quelle würde MAX MUELLER im Ziel werden

Anreicherung von Daten:  In den Quelldaten befindet sich nur ein Alter. Im Ziel soll zusätzlich noch eine durch strenge Regeln definierte Altersgruppe hinzugefügt werden.

Löschen von Daten: In der Quelldatei befinden sich Name, Alter und eine Altersgruppe. Aus Datenschutzgründen darf im Ziel nur noch die Altersgruppe vorhanden sein.

Entfernung von Duplikaten: In der Quelle befinden sich aus irgendwelchen Gründen doppelte Einträge. Im Ziel sollen diese Duplikate entfernt sein.

Die einzelnen Schritte – (L)oad:

Der (L)oad-Schritt speichert die Daten in mindestens ein Ziel. Das kann z.B. eine Datei in einem bestimmten Format sein oder eine Datenbank. Dabei empfiehlt es sich an die Daten ein Erzeugungs- und ein Änderungsdatum anzufügen um bei Bedarf sehen zu können, welche Daten durch den ETL-Prozess im Ziel erzeugt oder verändert wurden. Bei Datenbanken empfehlen sich eventuell vorhandene Merge, Upsert Fähigkeiten zu benutzen. Sollte die Datenbank das nicht unterstützen, dann empfiehlt es sich entweder eine INSERT-UPDATE oder eine DELETE-INSERT Strategie zu benutzen. Wie diese funktionieren, erfahrt Ihr in einem gesonderten Artikeln, den ich, sobald er geschrieben ist, hier verlinken werde.

Möglichkeiten ETL-Prozesse umzusetzen:

Die einfachste Möglichkeit um ETL-Prozesse umzusetzen ist es ein ETL-Tool zu verwenden. Bekannte Beispiele dafür wären Talend Open Studio, Microsoft SSIS, IBM Information Server, Pentaho Kettle oder Oracle Data Integrator

Des weiteren gibt es in unterschiedlichen Programmiersprachen ETL-Frameworks. Beispiele findet Ihr unter folgenden Link https://github.com/pawl/awesome-etl#etl-tools-gui

Und zu guter Letzt besteht natürlich die Möglichkeit die ETL-Prozesse von Grund auf selbst zu programmieren. Ich würde jedoch, gerade bei komplexen ETL-Prozessen, zu einem Tool oder Framework raten, da man sich den Entwicklungsaufwand spart und diese Tools oft deutlich stabiler und weniger fehleranfällig als selbstgeschriebener Code sind.

Vielen Dank für das Lesen des Artikels. Ihr solltet jetzt verstehen, was sich hinter dem Begriff ETL verbirgt und wofür ETL-Prozesse benötigt werden. Sollte der Artikel für Euch nützlich gewesen sein, dann würde ich mich freuen, wenn Ihr ihn in den sozialen Netzwerken teilt.

In diesem Sinne, gehabt euch wohl.

Euer Alex