ETL-Prozesse (Extract, Transform, Load) sind das Herzstück vieler Data-Warehouse- und Analytics-Lösungen. Bereits kleine Fehler in einer Transformation können dazu führen, dass Berichte falsche Ergebnisse liefern.

Mit PyTest lassen sich Datenvalidierungen automatisieren und bereits während der Entwicklung erkennen.
Typische Prüfungen sind:
- Stimmen die Anzahl der Datensätze?
- Sind Pflichtfelder gefüllt?
- Enthalten Spalten gültige Werte?
- Werden Transformationen korrekt durchgeführt?
Voraussetzungen
Für das Beispiel benötigen Sie:
- Azure Synapse Analytics
- Ein Synapse Notebook mit Python
- PyTest installiert
Installation von PyTest:
%pip install pytest
Einfacher ETL-Test mit PyTest
Angenommen, Ihre ETL-Strecke erstellt eine Tabelle mit Kundendaten.
Beispiel-Daten laden
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([
(1, "Max"),
(2, "Anna"),
(3, "Peter")
], ["CustomerID", "Name"])
Test 1: Prüfen der Datensatzanzahl
Erstellen Sie eine Datei test_customer.py.
def test_row_count():
assert df.count() == 3
Wenn die Anzahl der Datensätze nicht stimmt, schlägt der Test fehl.
Test 2: Pflichtfelder prüfen
def test_customerid_not_null():
assert df.filter(df.CustomerID.isNull()).count() == 0
Dieser Test stellt sicher, dass keine Kundennummer fehlt.
Test 3: Leere Namen erkennen
def test_name_not_empty():
assert df.filter(df.Name == "").count() == 0
Damit werden leere Namensfelder identifiziert.
Tests ausführen
Innerhalb eines Synapse Notebooks können Sie PyTest starten:
!pytest test_customer.py -v
Beispielausgabe:
============================= test session starts =============================
test_customer.py::test_row_count PASSED
test_customer.py::test_customerid_not_null PASSED
test_customer.py::test_name_not_empty PASSED
============================== 3 passed ======================================
ETL-Tests in der Praxis
In produktiven Azure-Synapse-Projekten werden häufig folgende Tests eingesetzt:
| Testtyp | Beispiel |
|---|---|
| Vollständigkeit | Alle Datensätze wurden geladen |
| Dublettenprüfung | CustomerID ist eindeutig |
| Null-Werte | Pflichtfelder dürfen nicht leer sein |
| Wertebereiche | Umsatz größer als 0 |
| Referenzdaten | Fremdschlüssel existieren |
| Transformationen | Berechnete Felder stimmen |
Vorteile von PyTest in Azure Synapse
- Automatisierte Qualitätskontrolle
- Fehler früh erkennen
- Schnell ausführbar
- Einfach in CI/CD-Pipelines integrierbar
- Gut für Data Engineering und Data Warehouse Projekte geeignet
Fazit
PyTest bietet eine einfache Möglichkeit, ETL-Prozesse in Azure Synapse zu testen. Bereits wenige Zeilen Code reichen aus, um wichtige Datenqualitätsprüfungen zu automatisieren. Dadurch werden Fehler früh erkannt und die Zuverlässigkeit von Data-Warehouse-Lösungen deutlich erhöht.
