Modul 4 von 15 · 📖 10 min Lesezeit · ⏱ 30 min gesamt
FI-DPA 04 ETL-ELT-Strecken
Inhaltsverzeichnis (6 Abschnitte)
FI-DPA 04 ETL/ELT-Strecken
ETL/ELT-Prozesse bilden das Rückgrat moderner Datenintegration. In diesem Modul erlernen Sie die Konzepte zur Extraktion, Transformation und Laden von Daten zwischen verschiedenen Systemen. Sie verstehen, wie Staging-Areas zur Qualitätsicherung eingesetzt werden und warum Idempotenz in der Datenverarbeitung entscheidend ist. Praktische Beispiele mit Airflow, dbt und Talend runden Ihr Wissen ab.
Sie werden in der Lage sein, ETL/ELT-Pipelines zu entwerfen, zu implementieren und zu warten. Der Fokus liegt auf robusten, wartbaren und performanten Lösungen für den Einsatz in KMU-Umgebungen.
Konzepte und Hintergrund
- ETL (Extract, Transform, Load)
- Der klassische Ansatz, bei dem Daten zuerst extrahiert, dann in einer separaten Datenbank transformiert und schließlich in das Zielsystem geladen werden. Die Transformation erfolgt vor dem Laden in das Zielsystem.
- ELT (Extract, Load, Transform)
- Ein moderner Ansatz, bei dem Daten direkt in das Zielsystem (meist ein Data Warehouse) geladen und dort transformiert werden. Dies nutzt die Skalierbarkeit moderner Data-Warehouses und ermöglicht flexiblere Transformationen.
- Staging-Area
- Ein temporärer Speicherbereich, der als Zwischenstation für Daten während des ETL-Prozesses dient. Hier werden Daten bereinigt, validiert und aufbereitet, bevor sie in das Zielsystem geladen werden.
- Idempotenz
- Eine Eigenschaft von Operationen, die mehrmals ausgeführt werden können, ohne das Ergebnis zu verändern. Im ETL-Kontext bedeutet dies, dass die Ausführung einer Pipeline mehrmals zum identischen Ergebnis führt, auch wenn Datenquellen bereits verarbeitet wurden.
- Orchestrierung
- Die Koordination verschiedener Tasks und Workflows in einem ETL-Prozess. Tools wie Airflow ermöglichen die Planung, Ausführung und Überwachung komplexer Datenpipelines.
Architektur-Diagramm
flowchart LR
A[Datenquellen] --> B(Extraktion)
B --> C[Staging-Area]
C --> D[Transformation]
D --> E[Zielsystem]
F[Airflow] --> B
F --> D
G[dbt] --> D
H[Talend] --> B
H --> D
Praktische Schritte
- Installieren Sie Apache Airflow mit pip in einer virtuellen Umgebung. Dies stellt eine saubere Trennung von Projekten sicher.
- Konfigurieren Sie die Airflow-Datenbank mit PostgreSQL für verbesserte Performance und Skalierbarkeit.
- Erstellen Sie in dbt ein neues Projekt und konfigurieren Sie die Verbindungsparameter zu Ihrer Staging-Datenbank.
- Definieren Sie in dbt Modelle für Ihre Transformationen mit SQL-Dateien im Ordner models/.
- Erstellen Sie in Airflow einen DAG, der dbt aufruft, nachdem die Daten extrahiert wurden.
- Implementieren Sie in Talend eine Job-Komponente zur Datenbereinigung, die doppelte Einträge basierend auf einer eindeutigen ID entfernt.
- Konfigurieren Sie in Airflow Retry-Policies für kritische Tasks, um vorübergehende Fehler zu handhaben.
- Implementieren Sie in dbt Tests zur Sicherstellung der Datenqualität, z.B. Eindeutigkeit von IDs.
- Verwenden Sie in Airflow den Sensor-Operator, um auf das Erscheinen neuer Dateien in einem Verzeichnis zu warten.
- Konfigurieren Sie in Talend eine Verbindung zu Ihrer Datenbank mit Verbindungspooling für verbesserte Performance.
python -m venv airflow-env
source airflow-env/bin/activate
pip install apache-airflow
export AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:password@localhost/airflow
airflow db init
dbt init my_project
cd my_project
vim profiles.yml
mkdir -p models/staging
cat > models/staging/customers.sql <<EOF
select id, name, email from raw.customers
where email is not null
EOF</code>
from airflow.operators.bash import BashOperator
from airflow import DAG
from datetime import datetime
with DAG('etl_pipeline', start_date=datetime(2023,1,1)) as dag:
run_dbt = BashOperator(
task_id='run_dbt',
bash_command='dbt run'
)
tRowGenerator --component tUniqueRow --component tFilterRow --component tLogRow
run_dbt = BashOperator(
task_id='run_dbt',
bash_command='dbt run',
retries=3,
retry_delay=timedelta(minutes=5)
)
cat > models/staging/schema.yml <<EOF
version: 2
models:
- name: customers
columns:
- name: id
tests:
- unique
EOF</code>
from airflow.sensors.filesystem import FileSensor
wait_for_file = FileSensor(
task_id='wait_for_file',
filepath='/data/incoming/*.csv',
poke_interval=60,
timeout=3600
)
tDBConnection --component tDBOutput --component tDBCommit
Häufige Fallstricke
Weiterführende Ressourcen
Wissens-Check
Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.
Was ist der Hauptunterschied zwischen ETL und ELT?
- A) ETL verarbeitet Daten in der Cloud, ELT lokal
- B) Bei ETL erfolgt die Transformation vor dem Laden, bei ELT nach dem Laden
- C) ETL nutzt immer Staging-Areas, ELT nicht
- D) ELT ist nur für Big-Data-Umgebungen geeignet
Richtige Antwort: B. Der wesentliche Unterschied liegt im Zeitpunkt der Transformation: ETL transformiert Daten vor dem Laden ins Zielsystem, während ELT Daten zuerst lädt und dann im Zielsystem transformiert.
Warum ist Idempotenz in ETL-Prozessen wichtig?
- A) Sie reduziert den Speicherbedarf der Datenbank
- B) Sie ermöglicht die wiederholte Ausführung von Pipelines ohne Ergebnisänderung
- C) Sie beschleunigt die Datenextraktion
- D) Sie ist nur bei ELT-Prozessen relevant
Richtige Antwort: B. Idempotenz stellt sicher, dass die wiederholte Ausführung einer Pipeline zum identischen Ergebnis führt, was für die Datenkonsistenz bei Fehlern oder Neustarts entscheidend ist.
Welche Aufgabe hat eine Staging-Area in einem ETL-Prozess?
- A) Sie dient als primäre Datenspeicherung für Endanwender
- B) Sie bereinigt, validiert und bereitet Daten für das Zielsystem vor
- C) Sie ersetzt das Data Warehouse vollständig
- D) Sie ist nur für ELT-Prozesse erforderlich
Richtige Antwort: B. Die Staging-Area fungiert als Zwischenstation, in der Daten bereinigt, validiert und transformiert werden, bevor sie ins Zielsystem geladen werden.
Welches Tool wird primär zur Orchestrierung von ETL-Pipelines eingesetzt?
- A) dbt
- B) Talend
- C) Apache Airflow
- D) SQL
Richtige Antwort: C. Apache Airflow ist speziell für die Orchestrierung komplexer Workflows und Datenpipelines entwickelt, während dbt sich auf die Transformation konzentriert und Talend eine umfassende ETL-Plattform ist.