ETL vs. ELT: was ist der Unterschied?

Bei der Betrachtung von ETL- und ELT-Prozessen ist es wichtig, die Hauptunterschiede und die spezifischen Anwendungsfälle für zu berücksichtigen.

ETL (Extrahieren, Transformieren, Laden) und ELT (Extrahieren, Laden, Transformieren) sind beides Datenintegrationsmethoden, die Daten von einer Quelle in ein Data Warehouse übertragen. Trotz ihrer Ähnlichkeiten unterscheiden sich ETL und ELT in wesentlichen Punkten.

ETL- Prozess – Überblick

Extrahieren, Transformieren und Laden (ETL) ist eine Methode der Datenintegration, bei der Rohdaten aus Quellen extrahiert, auf einem sekundären Verarbeitungsserver transformiert und dann in eine Zieldatenbank geladen werden.

ETL wird eingesetzt, wenn Daten so umgewandelt werden müssen, dass sie mit dem Datenregime einer Zieldatenbank übereinstimmen. Diese Methode ist vor allem bei der Nutzung von eigenen Servern mit begrenztem Speicher und begrenzter Verarbeitungsleistung weit verbreitet.

Online Analytical Processing (OLAP) Data Warehouses akzeptieren nur relationale SQL-basierte Datenstrukturen.

Bei dieser Art von Data Warehouse stellt ein Protokoll mit ETL-Prozess die Konformität sicher, indem es die extrahierten Daten an einen Verarbeitungsserver weiterleitet und dann die nicht konformen Daten in SQL-basierte Daten umwandelt.

Die extrahierten Daten gelangen erst dann vom Verarbeitungsserver in das Data Warehouse, wenn sie erfolgreich umgewandelt wurden.

ELT-Prozess – Überblick

Im Gegensatz zu ETL-Prozessen müssen beim Extrahieren, Laden und Transformieren (ELT) vor dem Ladevorgang keine Datenumwandlungen vorgenommen werden.

ELT lädt Rohdaten direkt in ein Ziel-Data-Warehouse, anstatt sie zur Transformation auf einen Verarbeitungsserver zu verschieben.

Mit ELT finden Datenbereinigung, -anreicherung und -umwandlung innerhalb des Data Warehouse selbst statt. Die Rohdaten werden auf unbestimmte Zeit im Data Warehouse gespeichert, so dass sie mehrfach umgewandelt werden können.

ELT ist eine relativ neue Entwicklung, die durch die Erfindung skalierbarer Cloud-basierter Data Warehouses ermöglicht wurde.

Cloud-Data-Warehouses wie Snowflake, Amazon Redshift, Google BigQuery und Microsoft Azure verfügen alle über die digitale Infrastruktur in Bezug auf Speicher- und Verarbeitungsleistung, um Rohdaten-Repositories und In-App-Transformationen zu erleichtern.

Obwohl ELT nicht universell eingesetzt wird, wird die Methode immer beliebter.

ETL vs. ELT: Wie unterscheidet sich der ETL-Prozess vom ELT-Prozess?

ETL und ELT unterscheiden sich vor allem in zwei Punkten. Ein Unterschied besteht darin, wo die Daten umgewandelt werden, und der andere darin, wie Data Warehouses die Daten aufbewahren.

  • ETL wandelt Daten auf einem separaten Verarbeitungsserver um, während ELT Daten innerhalb des Data Warehouse selbst umwandelt.
  • ETL überträgt keine Rohdaten in das Data Warehouse, während ELT Rohdaten direkt an das Data Warehouse sendet.

Bei ETL wird der Prozess der Datenaufnahme dadurch verlangsamt, dass die Daten vor dem Ladevorgang auf einem separaten Server transformiert werden.

ELT hingegen ermöglicht eine schnellere Datenaufnahme, da die Daten nicht zur Umstrukturierung an einen zweiten Server geschickt werden. Mit ELT können die Daten sogar gleichzeitig geladen und umgewandelt werden.

Die Rohdatenaufbewahrung von ELT schafft ein umfangreiches historisches Archiv für die Erstellung von Business Intelligence. Wenn sich Ziele und Strategien ändern, können BI-Teams die Rohdaten erneut abrufen, um neue Transformationen unter Verwendung umfassender Datensätze zu entwickeln. ETL hingegen erzeugt keine vollständigen Rohdatensätze, die endlos abgefragt werden können.

Diese Faktoren machen ELT flexibler, effizienter und skalierbarer, insbesondere für die Aufnahme großer Datenmengen, die Verarbeitung von Datensätzen, die sowohl strukturierte als auch unstrukturierte Daten enthalten, und die Entwicklung vielfältiger Business Intelligence.

Auf der anderen Seite ist ETL ideal für rechenintensive Transformationen, Systeme mit Legacy-Architekturen oder Daten-Workflows, die vor der Eingabe in ein Zielsystem manipuliert werden müssen, wie z. B. die Löschung von personenbezogenen Daten.

Fazit

Cloud Data Warehouses haben eine neue Dimension der Datenintegration eröffnet, aber die Entscheidung zwischen ETL und ELT hängt von den Bedürfnissen eines Teams ab.

Obwohl ELT Vorteile bietet, werden einige Teams bei ETL bleiben, weil die Methode für ihre spezielle Bereitstellung sinnvoll ist, ob mit oder ohne Legacy-Infrastruktur.

Die SQL-Anweisung CASE

Die CASE-Anweisung durchläuft die Bedingungen und gibt einen Wert zurück, wenn die erste Bedingung erfüllt ist (wie eine if-then-else-Anweisung). Sobald also eine Bedingung erfüllt ist, wird das Lesen beendet und das Ergebnis zurückgegeben. Wenn keine Bedingung erfüllt ist, wird der Wert aus der ELSE-Klausel zurückgegeben.

Wenn es keinen ELSE-Teil gibt und keine Bedingung erfüllt ist, wird NULL zurückgegeben.

Ausgangstabelle:

Abfrage

Inhalt der Abfrage: Wir wollen eine weitere Spalte „Großstadt“ hinzufügen in der bei Städten, wie München oder Berlin, der Wert „Großstadt“ in die selbe Zeile kommt.

SELECT 
    event_date_user,
    user_city,
        CASE user_city 
            WHEN 'Munich' THEN 'big city'
            WHEN 'Berlin' THEN 'big city'
            ELSE 'Others'
        END
        AS big_city,

FROM `privat-327611.analytics_266663932.user_city`

Der SQL EXISTS-Operator

Der EXISTS-Operator wird verwendet, um zu prüfen, ob ein Datensatz in einer Unterabfrage vorhanden ist.

Der EXISTS-Operator gibt TRUE zurück, wenn die Unterabfrage einen oder mehrere Datensätze zurückgibt.

Beispiel-Abfrage

Ausgangstabellen:

Wir haben eine Tabelle mit den Pageviews und eine mit den Anzahl pro Nutzer pro Tag:

Inhalt der Abfrage: Wir wolllen jetzt nur die Tage Anzeigen lassen bei denen auch mindestens 60 Pageviews erzielt wurden:
SELECT 
    event_date_user,
    user,
FROM `privat-327611.analytics_266663932.user_basic`
WHERE EXISTS (SELECT event_date FROM `privat-327611.analytics_266663932.pageviews_basic` WHERE event_date = event_date_user AND page_views_pageview > 60)

Die SQL HAVING-Klausel

Die HAVING-Klausel wurde zu SQL hinzugefügt, weil das Schlüsselwort WHERE nicht mit Aggregatfunktionen verwendet werden kann.

Beispiel-Abfrage

Ausgangstabelle:

Inhalt der Beispielabfrage: Wir haben untereinander mehrere User-IDs, zu denen jeweils ein Datum zugeordnet ist. Wir wollen mit der Abfrage herausfinden, wie viele Nutzer wir pro Tag hatten. Wir gruppieren, deshalb anhand des Datums und zählen die Anzahl der Nutzer. ZUSÄTZLICH wollen wir aber ausschließlich die Tage angezeigt bekommen, die mindestens 8 Nutzer hatten:

SELECT 
    event_date_user,
    COUNT(user_pseudo_id) AS count_user,
FROM `privat-327611.analytics_266663932.base`
GROUP BY event_date_user
HAVING count_user >= 8

SQL GROUP BY-Anweisung

Die GROUP BY-Anweisung gruppiert Zeilen mit gleichen Werten zu zusammenfassenden Zeilen, z. B. “Anzahl Nutzer pro Browser”.

Die GROUP BY-Anweisung wird häufig mit Aggregatfunktionen (COUNT(), MAX(), MIN(), SUM(), AVG()) verwendet, um die Ergebnismenge nach einer oder mehreren Spalten zu gruppieren.

Beispiel-Abfrage

Ausgangstabelle:

Inhalt der Beispielabfrage: Wir haben untereinander mehrere User-IDs, zu denen jeweils ein Datum zugeordnet ist. Wir wollen mit der Abfrage herausfinden, wie viele Nutzer wir pro Tag hatten. Wir gruppieren, deshalb anhand des Datums und zählen die Anzahl der Nutzer:

SELECT 
    event_date_user,
    COUNT(user_pseudo_id) AS count_user,
FROM `privat-327611.analytics_266663932.base`
GROUP BY event_date_user

Der SQL BETWEEN-Operator

Der Operator BETWEEN wählt Werte innerhalb eines bestimmten Bereichs aus. Die Werte können Zahlen, Text oder Daten sein.

Der Operator BETWEEN ist „inclusive“: Anfangs- und Endwerte sind eingeschlossen.

Beispiel-Abfrage

Ausgangstabelle:

Inhalt der Abfrage: Abfrage der Zeilen zwischen dem 22. und 24.12.
SELECT * 
FROM `privat-327611.analytics_266663932.user_browser`
WHERE event_date_user between '2021-12-22' AND '2021-12-24'

Der SQL-Operator IN

Mit dem IN-Operator können Sie mehrere Werte in einer WHERE-Klausel angeben.

Der IN-Operator ist eine Kurzform für mehrere OR-Bedingungen.

Beispiel-Abfrage

Ausgangstabelle:

Inhalt der Abfrage: Alle Nutzer, die entweder den Edge- oder Firefox-Browser nutzen.

SELECT *
FROM `privat-327611.analytics_266663932.user_browser`
WHERE user_browser IN ('Edge', 'Firefox')

Der SQL LIKE-Operator

Der LIKE-Operator wird in einer WHERE-Klausel verwendet, um nach einem bestimmten Muster in einer Spalte zu suchen.

Es gibt zwei Platzhalter, die häufig in Verbindung mit dem LIKE-Operator verwendet werden:

  • Das Prozentzeichen (%) steht für null, ein oder mehrere Zeichen
  • Das Unterstrichzeichen (_) steht für ein einzelnes Zeichen

Sie können auch eine beliebige Anzahl von Bedingungen mit den Operatoren AND oder OR kombinieren.

LIKE-OperatorBeschreibung  
WHERE table LIKE ‘a%’Findet alle Werte, die mit “a” beginnen
WHERE table LIKE ‘%a’Findet alle Werte, die mit “a” enden
WHERE table LIKE ‘%or%’Findet alle Werte, die ein “oder” an beliebiger Stelle enthalten
WHERE table LIKE ‘_r%’Findet alle Werte, die ein “r” an der zweiten Stelle haben
WHERE table LIKE ‘a_%’Findet alle Werte, die mit “a” beginnen und mindestens 2 Zeichen lang sind
WHERE table LIKE ‘a__%’Findet alle Werte, die mit “a” beginnen und mindestens 3 Zeichen lang sind
WHERE table LIKE ‘a%o’Findet alle Werte, die mit “a” beginnen und mit “o” enden

Beispiel-Abfrage:

Ausgangsbasis

Inhalt der Abfrage:  Findet alle Nutzersprachen, die mit „en“ beginnen:

SELECT 
    user_language,

FROM `privat-327611.analytics_266663932.user_language`
WHERE user_language LIKE 'en%'

Die SQL-Funktionen COUNT(), AVG() und SUM()

Die Funktion COUNT() gibt die Anzahl der Zeilen zurück, die einem bestimmten Kriterium entsprechen.

Die Funktion AVG() gibt den Durchschnittswert einer numerischen Spalte zurück.

Die Funktion SUMME() gibt die Gesamtsumme einer numerischen Spalte zurück.

Beispiel-Abfrage:

Ausgangsbasis

Inhalt der Abfrage: Zählt die Anzahl der Tage (Zeilen) und gibt sowohl die Summe als auch den Durchschnitt der Pageviews zurück.

SELECT 
    COUNT(event_date) anzahl_zeilen,
    sum(page_views_pageview) AS summe_pageviews,
    avg(page_views_pageview) AS avg_pageviews,

FROM `privat-327611.analytics_266663932.pageviews_basic`

Die SQL-Funktionen MIN() und MAX()

Die Funktion MIN() gibt den kleinsten Wert der ausgewählten Spalte zurück.

Die Funktion MAX() gibt den größten Wert der ausgewählten Spalte zurück.

Beispiel-Abfrage:

Ausgangsbasis: BigQuery-Event-Tabelle von GA4. -> Die Funktion Analytics-Daten in BigQuery zu exportieren ist bei GA4 auch in der kostenlosen Version inklusive. Hier geht es zur Anleitung: https://martin-grellmann.de/so-richten-sie-die-bigquery-verknupfung-in-ihrer-google-analytics-4-propertyga4-ein

Inhalt der Abfrage: Abfrage der größten und der kleinsten Anzahl an Pageviews.

SELECT 
MIN(page_views_pageview) AS Min_PV,
MAX(page_views_pageview) AS Max_PV,
FROM `privat-327611.analytics_266663932.pageviews_basic`