ETL-Tools vergleichen: Datenintegration für HR, Produktion und Controlling
Datenintegration · Stand: 10.10.2026 · Redaktion: Axel Schweizer
ETL-Software bereitet Daten auf dem Weg ins Ziel auf; bei ELT werden sie zuerst geladen und anschließend dort transformiert. Für HR, Produktion und Controlling entscheidet die konkrete Datenquelle über die Auswahl. dlt ist ein Kandidat für Python-Teams, Apache Hop für visuelle Pipelines, Airbyte für connectororientierte Replikation, NiFi für heterogene Datenflüsse. Fivetran und Matillion bieten kommerzielle Wege. Der Vergleich ordnet Herstellerangaben ein. Ergänzend dokumentieren wir einen eigenen begrenzten dlt-/DuckDB-Durchlauf; ein vergleichender Produkttest liegt nicht vor.
Erst Datenkorrektheit prüfen, dann Konnektoren zählen
Unser kostenloses CSV-Prüfpaket mit Python-Referenzdemo macht fünf Abnahmefälle reproduzierbar. Es ergänzt eine importierbare Projektvorlage mit 14 Kriterien und drei frei änderbaren Kandidaten. Die 42 Bewertungen der Projektvorlage bleiben ungeprüft; der begrenzte dlt-Durchlauf deckt nur die unten genannten Fälle ab.
Im Katalog „JSON-Projekt laden“ wählen und Ergebnisse mit Belegen erfassen. Beide Vorlagen darfst du kostenlos intern im Unternehmen verwenden, anpassen und im Projektteam teilen. Diese Erlaubnis geht der allgemeinen Download-Beschränkung im Impressum vor. Für die Referenzdemo brauchst du Python 3; sie installiert keine Produkte und benötigt keinen Netzwerkzugang.
ETL, ELT und Transformation im BI-Stack
Lege vor der Auswahl den Weg fest: Quellsystem → Übernahme → Rohdaten → fachliches Modell → Bericht. ERP-Daten müssen andere Fehlerfälle abdecken als eine täglich geladene Marketing-API oder Maschinenereignisse. Eine lange Connectorliste belegt weder die passende Edition noch das Verhalten bei einer Stornierung.
Für Modelle auf bereits geladenen Daten kommt beispielsweise dbt infrage. Es ersetzt keinen vollständigen Extraktions- und Ladeprozess. Plane deshalb getrennt, wer die Quelle ausliest, wer Änderungen und Löschungen überträgt und wer Kennzahlen definiert. Die technische Grenze muss im Abnahmekatalog sichtbar bleiben. Für die BI-Oberfläche hilft der Open-Source-BI-Vergleich.
Sechs ETL-/ELT-Werkzeuge nach Aufgabe und Betriebsmodell
| Werkzeug | Passender Pilot | Edition und Kostenbasis | Entscheidende Prüffrage |
|---|---|---|---|
| dlt | Python-Team lädt API-/SQL-Daten in eine Datenplattform. | Bibliothek Apache 2.0; dltHub separat kommerziell. | Gibt es verlässliche Schlüssel, Änderungsfolge und Löschmarker? Details |
| Apache Hop | Visuelle Pipelines mit kontrolliertem Workflow und eigenem Betrieb. | Apache 2.0; Infrastruktur, Treiber und Betrieb zusätzlich. | Ist CDC extern vorhanden oder muss ein Snapshot-/Watermark-Verfahren gebaut werden? Details |
| Airbyte | Vorhandene Connectoren und Datenbankreplikation prüfen. | Core überwiegend ELv2; Cloud-/Enterprise-Angebote separat. | Trägt der konkrete Connector Inserts, Updates und Deletes vollständig ins Ziel? Details |
| Apache NiFi | Heterogene Ereignis- und Dateiflüsse mit Queues und Backpressure. | Apache 2.0; eigener Dauerbetrieb. | Wie bleiben Senken idempotent und wie kommen Löschereignisse an? Details |
| Fivetran | Managed Replikation mit unterstützten Quellen. | Kommerziell; Monthly Active Rows und Vertrag prüfen. | Welche Tabellen brauchen History Mode und wie viele Schlüssel ändern sich? Details |
| Matillion ETL | Visuelle Transformation in einer Cloud-Warehouse-Landschaft. | Kommerziell; vCPU-Stunden/Credits und Cloud-VM separat. | Welche konkrete ETL-/CDC-Komponente und Edition wird beschafft? Details |
dlt: Code und klare Zustandslogik
Die Python-Bibliothek ist Apache-2.0-lizenziert; die dltHub-Plattform ist ein getrenntes Angebot. Merge-Loads können anhand von Schlüsseln vorhandene Daten ersetzen oder aktualisieren. Für harte Löschungen ist ein entsprechender Marker nötig; SCD2 und vollständige Snapshots sind andere Verfahren. Ein Cursor allein findet keine Änderungen, deren Cursorwert unverändert bleibt. Editionen, Merge und Löschmarker, Inkrementelles Laden.
Apache Hop: Visueller Ablauf, CDC-Verfahren ausdrücklich wählen
Hop stellt visuelle Pipelines und Workflows bereit. Die CDC-Anleitung unterscheidet Log-Verarbeitung, Watermarks und Snapshot-Vergleich. Ein Maximum von updated_at liefert ohne Marker keine verschwundenen Zeilen; der Snapshot-Vergleich verlangt vollständige vergleichbare Bestände. Die detaillierte Anleitung liegt im „next“-Handbuch: Vor Nutzung gegen die installierte stabile Version prüfen. Projekt und Lizenz, CDC-Anleitung, Stabiles Pipeline-Handbuch.
Airbyte: Source available und Cloud nicht gleichsetzen
Airbyte Core und viele Connectoren verwenden ELv2; das ist keine OSI-Open-Source-Lizenz. Prüfe Komponenten und Nutzungsbedingungen getrennt. Cloud-Preise und Self-hosted-Betriebsaufwand sind verschiedene Kostenwege. Lizenz-FAQ, Preis- und Betriebsmodelle.
Logbasierte CDC kann Änderungen und Löschungen transportieren. Laut Dokumentation gelten quellspezifische Voraussetzungen, häufig Primärschlüssel. TRUNCATE und ALTER werden nicht als gewöhnliche Zeilenänderungen übernommen; neue Schemas/Spalten benötigen Freigabe und Snapshot/Refresh. Die endgültige Tabelle enthält zuletzt gelöschte Zeilen nicht. Wer Historie braucht, muss sie gesondert planen. CDC-Grenzen und Schemaänderungen.
Apache NiFi: Flusssteuerung ist noch kein fertiges Fachmodell
NiFi bietet Queues, Backpressure und Provenance für Datenflüsse. Aufbewahrungsregeln und Speicherbedarf gehören zum Betrieb. Der JDBC-Prozessor QueryDatabaseTableRecord kann mit Maximum-Value-Spalten inkrementell lesen. Daraus folgt: Eine verschwundene Quellzeile wird durch eine solche Abfrage allein nicht zum Löschereignis. Dies ist eine Ableitung aus der Abfragemethode, kein NiFi-Produkttest. Lizenz, Flussverwaltung, Prozessorreferenz.
Fivetran: Änderungszeilen und Historie kalkulieren
Monthly Active Rows zählen unterschiedliche aktive Schlüssel im Monat nach der dokumentierten Verbindungs-/Tabellenlogik. Wiederholte Änderungen derselben Zeile sind deshalb nicht automatisch ebenso viele MAR. Deletes können zählen; kostenlose MAR für Anfangssync oder bestimmte Resyncs sind gesondert geregelt. History Mode ist connectorabhängig und kann durch zusätzliche Historienzeilen das Volumen erhöhen. MAR-Abrechnung, History Mode, Tarife.
Matillion ETL: Komponente und laufende VM festhalten
Matillion ETL ist kommerziell. Die Maia-Credit-Abrechnung hängt von der vCPU-Größe und aktiven Stunden der ETL-Instanz ab; die Cloud-Infrastruktur kommt hinzu. Funktionen einer separaten CDC-Komponente dürfen nicht pauschal jedem ETL-Tarif zugeschrieben werden. Lass im Angebot Produkt, Edition, Laufzeit und enthaltene Komponenten benennen. ETL-Editionen, Instanzgrößen und Credits, Marketplace-Abrechnung.
Was HR, Produktion und Controlling unterschiedlich brauchen
- HR: Personalnummer, Ein-/Austrittsdatum und Gültigkeitsintervalle festhalten. Ein heutiger Stammdatensatz kann eine historische FTE-Auswertung verfälschen. Löschung und fachliche Historisierung getrennt definieren; Personaldatenzugriff und Aufbewahrung in die Freigabe aufnehmen. Siehe HR-Analytics-Auswahl.
- Produktion: Ereigniszeit, Empfangszeit, Zeitzone und Schichtgrenzen erfassen. Bei verspäteten Maschinenereignissen muss feststehen, welche abgeschlossenen Schichten neu berechnet werden. Queue-Rückstau darf nicht als aktuelle OEE erscheinen. Siehe Produktionsanalyse.
- Controlling: Stornos, Nachbuchungen, Währungen und Periodenabschlüsse in den Pilot aufnehmen. Ein unveränderter Gesamtbetrag reicht als Beweis nicht: Anzahl, Schlüssel und einzelne Zeilen ebenfalls abstimmen. Siehe Controlling-Software.
- Planung: Ist-Datenübernahme von Planversionen und Rückschreiben unterscheiden. Eine Pipeline in ein Warehouse belegt keinen genehmigten Schreibweg ins ERP. Siehe Planung und Budgetierung.
Löschungen, Wiederanlauf und Schemaänderungen abnehmen
Vereinbare pro Tabelle: Schlüssel, Reihenfolge von Änderungen, Löschsignal, Zielzustand und Historie. „Inkrementell“ kann Append, Upsert oder Log-Replikation meinen. Wiederholung muss dieselben fachlichen Ergebnisse liefern; ein nach Abbruch gespeicherter Cursor darf keine noch nicht geschriebenen Ereignisse überspringen. Für einen Snapshot-Abgleich muss die Quelle den vollständigen Bestand liefern, sonst können fehlende Zeilen fälschlich als gelöscht gelten.
Eine zusätzliche Spalte ist noch kein historisches Backfill. Definiere, ob alte Werte unbekannt bleiben, aus einer belastbaren Quelle nachgeladen oder mit dokumentierten Annahmen ergänzt werden. Bei geänderten Datentypen muss die Pipeline entweder kontrolliert migrieren oder mit nachvollziehbarer Fehlermeldung stoppen. Region, Zugangsdaten, Logs, Rohdatenaufbewahrung und Wiederherstellung gehören ebenso in den Katalog.
Eigener Referenzfall: 3.500 EUR werden korrekt zu 2.700 EUR
Synthetischer Fall: Initial stehen ID 1 mit 1.000 EUR, ID 2 mit 2.000 EUR und ID 3 mit 500 EUR im Ziel. Danach wird ID 1 auf 1.200 EUR korrigiert, ID 2 gelöscht und ID 4 mit 800 EUR ergänzt. Eine verspätete Korrektur setzt ID 3 auf 700 EUR; ihr fachliches updated_at ist älter, ihre event_seq höher.
Der überprüfbare Sollzustand
IDs 1, 3 und 4; Summe 1.200 + 700 + 800 = 2.700,00 EUR. Nach erneuter Verarbeitung derselben Ereignisse bleiben genau diese drei Zeilen und derselbe Betrag. Ein ungültiger Betrag in malformed.csv bricht den gesamten Batch ab: Der vorherige Zustand bleibt erhalten und Datei, Zeile und Feld werden gemeldet.
Die Referenzdemo wurde lokal am 10.10.2026 ausgeführt: fünf von fünf Prüfungen bestanden, einschließlich Schemaänderung ohne erfundenes historisches EUR-Backfill. Im Paket: CSV-Ausgangsdaten, Änderungsereignisse, Fehlerfall, Soll-CSV, Anleitung und demo.py. Ausführen: python3 demo.py --self-test.
Grenze: Das ist eine selbst entwickelte Referenzlogik, kein Lauf in dlt, Hop, Airbyte, NiFi, Fivetran oder Matillion. Sie belegt keine Connectorqualität, Geschwindigkeit oder Betriebskosten. Das Quellsystem muss echte Löschereignisse und eine belastbare Ereignisfolge liefern. Im Produktpilot denselben Fall inklusive simuliertem Abbruch und Wiederanlauf nachbauen und die Ergebnisse dokumentieren.
Eigener dlt-Praxistest mit DuckDB: Ergebnisse und Grenzen
Ausgeführt am 10.10.2026: dlt 1.31.0, DuckDB 1.5.6 und Python 3.12.2 auf macOS 15.7.7 (arm64), mit den vier synthetischen CSV-Dateien des Referenzpakets. Das ist ein tatsächlicher lokaler Produktdurchlauf mit einem Ziel und einem kleinen Datenfall. Er liefert keine Gesamtnote und keinen Vergleichssieger.
Konfiguration: persistente DuckDB-Datei und dlt-Pipeline, merge mit der Standardstrategie delete-insert, Primärschlüssel id, event_seq mit dedup_sort="desc" und boolescher Löschmarker deleted_flag mit hard_delete=true. Die Merge-Dokumentation beschreibt diese Hinweise; das DuckDB-Ziel unterstützt die Strategie. Die Telemetrie war vor dem Import per Umgebungsvariable abgeschaltet.
| Fall | Beobachtetes Ergebnis | Was der Beleg aussagt |
|---|---|---|
| Erstbestand und Änderungen | 3.500,00 EUR → 2.700,00 EUR; IDs 1, 3 und 4 entsprechen der Soll-CSV. | Native Merge-Verarbeitung und Löschmarker wurden im DuckDB-Ziel ausgeführt. |
| Verspätete fachliche Korrektur | ID 3 erhält 700,00 EUR bei älterem Zeitstempel und Sequenz 40. | Dieser Fall wurde übernommen; daraus folgt kein allgemeiner Schutz gegen falsche Ereignisreihenfolge. |
| Derselbe Batch erneut | Zeilen und Summe bleiben bei 2.700,00 EUR. | Das exakte Replay des Änderungsbatches ist in dieser Konfiguration idempotent. |
| Neustart und Replay | Ein separater Python-Prozess mit derselben Pipeline und Datenbank liefert denselben Sollzustand. | Ordentlicher Prozessneustart geprüft; kein simulierter Absturz während des Ladens. |
| Neue Währungsspalte | Die Spalte entsteht mit dem ersten EUR-Wert; IDs 1 und 3 bleiben NULL, ID 4 enthält EUR. | Keine erfundene historische Währung, kein automatisches Backfill. |
| Ungültiger Betrag | Der eigene Adapter lehnt die ganze Datei vor pipeline.run ab; das Ziel bleibt unverändert. |
Belegt unseren CSV-Adapter, keine native dlt-Ganzbatchvalidierung. |
| Doppelte ID im selben Batch | Die separate Probe behält ID 99 mit Sequenz 3 und 10,00 EUR. | Die Sortierung dedupliziert innerhalb des eingespielten Batches. |
| Separater älterer Batch | ID 1 fällt auf 1.000,00 EUR, ID 3 auf 500,00 EUR zurück; ID 2 bleibt gelöscht. | Neuere Zielwerte werden überschrieben. Die getestete Strategie vergleicht die Sequenz nicht mit dem bestehenden Zielwert. |
Konsequenz für den Pilot
Ein erfolgreiches Replay desselben Batches genügt als Abnahme nicht. Das zusätzliche ältere Teilpaket wurde im Skript aus früheren Bestandswerten mit Sequenz 1 und 2 konstruiert und separat geladen. Es ist kein byteidentischer Reimport der Ausgangsdatei. Für diese delete-insert-Konfiguration braucht das Projekt eine verlässliche Reihenfolge oder einen gesondert geprüften Schutz vor veralteten Ereignissen. Andere Merge-Strategien oder Ziele wurden nicht auf diesen Schutz geprüft.
Prüflauf selbst wiederholen
Das Paket enthält das ausführbare Skript, vier CSV-Fixtures mit Prüfsummen, die vollständig gepinnten Python-Abhängigkeiten, eine Anleitung und das maschinenlesbare Ergebnisprotokoll. Jeder Lauf erzeugt einen eigenen privaten Ordner für Datenbank, Pipeline-Zustand und Logs. Die Installation der Abhängigkeiten braucht Netzwerkzugang; die Testdaten kommen aus lokalen Dateien.
ZIP SHA-256: 3dce664ed9ab8ef2f2d362017bc20b37969af34f64493f6a7cf91596e37ab7de
Auch dieses BIS-Prüfpaket darfst du kostenlos intern im Unternehmen verwenden, anpassen und im Projektteam teilen; diese Erlaubnis geht der allgemeinen Download-Beschränkung im Impressum vor. Für die enthaltenen Drittanbieter-Abhängigkeiten gelten deren jeweilige Lizenzen.
Grenzen: Typisierung der CSV-Zeilen und die Übersetzung von op=DELETE in den booleschen Löschmarker stammen aus unserem Adapter. Geprüft wurden die daran anschließenden nativen dlt-Merge-, Lösch- und Deduplizierungsschritte. Nicht geprüft: echte ERP-/API-Connectoren, CDC-Strategie, Rechte, Wiederherstellung, Abbruch während eines Loads, hohe Last oder Betriebskosten. Das Ergebnis ersetzt keinen vollständigen Produktpilot und keine Bewertung aller Kriterien im Anforderungskatalog.
Lizenz, Datenvolumen und Arbeitszeit getrennt rechnen
Eine fehlende Lizenzgebühr macht den Betrieb nicht kostenlos. Eigenes Beispiel, keine gemessenen Projektkosten: 35 Stunden Aufbau zu 80 EUR ergeben 2.800 EUR einmalig. Bei 60 EUR Infrastruktur und vier Betriebsstunden zu 80 EUR monatlich entstehen 380 EUR laufend; über zwölf Monate zusammen 7.360 EUR. Warehouse, Schulung, Supportvertrag und Exit sind in diesem Beispiel nicht enthalten. Passe die Werte im BI-Kostenrechner an.
Bei Managed-Angeboten protokolliere die zur Rechnung passende Einheit. 400.000 Update-Ereignisse auf 90.000 unterschiedliche Schlüssel sind keine automatische Zusage für 400.000 oder 90.000 abrechenbare MAR: Verbindung, Tabelle, Monat, Historie und Tarifregeln müssen bekannt sein. Bei vCPU-Abrechnung reichen „zwei Stunden Joblauf“ als Annahme nicht, wenn die Instanz den ganzen Monat aktiv bleibt. Verlange eine Kalkulation mit Anfangssync, Normalbetrieb, Wachstum und Reimport.
So kommst du zu einer belastbaren Auswahl
- Eine repräsentative Quelle und ein Ziel auswählen; Schlüssel, Änderungs- und Löschlogik schriftlich festhalten.
- Python als Arbeitsweise prüfen? dlt als ersten Kandidaten aufnehmen. Visueller Workflow nötig? Hop ergänzen. Viele vorgefertigte Quellen? Airbyte beziehungsweise Managed-Angebote mit konkreten Connectoren abgleichen. Das sind Pilotpfade, keine getesteten Sieger.
- Den Referenzfall im konkreten Produkt und in der beschafften Edition nachstellen; Belege in der Projektvorlage sammeln.
- Wiederherstellung, Datenregion und Kosten freigeben, bevor echte vertrauliche Daten übernommen werden.
Bei Bedarf begleitet unsere Schwesterseite BIC die Auswahl und Einrichtung. BIS und BIC werden von Axel Schweizer betrieben; daraus entsteht ein wirtschaftliches Interesse. Die Herstellerlinks sind normale Quellenlinks ohne BIS-Partnerkennung. Siehe Finanzierung.
Quellenstand und Grenzen
Die verlinkten offiziellen Produktdokumentationen und Preisseiten wurden am 10.10.2026 geprüft. Eigene Produktbelege beschränken sich auf den beschriebenen dlt-/DuckDB-Durchlauf; die übrigen Werkzeuge und deren Funktionen wurden nicht ausgeführt. Die Quellen vergleichen unterschiedliche Werkzeugklassen; Connector- und Editionsgrenzen müssen vor Kauf beziehungsweise Einführung erneut bestätigt werden. Die Referenzdemo, Kostenrechnung und Abnahmefragen stammen von BIS. Unsere Methodik erklärt die Trennung zwischen Quellenprofil und Praxistest.
Nach dem Laden: Modelle mit dbt prüfen
Das dbt-Profil trennt lokale Distributionen und Plattform und führt denselben Änderungsfall bis zum fachlichen Modell weiter.