Arbeiten Sie lieber mit der Maus oder tippen gerne mit der Tastatur? Die Frage lässt sich so umformulieren: Welches der beiden Screenshots gefällt Ihnen besser? Der aus Pentaho Data Integration:
Oder das der aus PyCharm (Integrierte Entwicklungsumgebung für Python):
.
Weitere Faktoren spielen eine Rolle, aber es ist auch eine Typfrage. Es mag ETL-Entwickler geben, die aus der Backend-Programmierung kommen und gar nicht auf die Idee kommen, ein extra Tool dafür zu nutzen. Den meisten sagt vermutlich das erste Bild eher zu, da es einfach und übersichtlich gestaltet ist. Unter Umständen kann es vorteilhaft sein, ETL zum Beispiel mit Python zu betreiben. Das ist nicht weit hergeholt, denn zum Beispiel Apache Spark ist ein Standard-Framework im Big Data Umfeld, wo ETL-Prozesse auch mit Programmiersprachen (Java, Python, Scala, R, C#, F#) entwickelt werden. Mit den passenden Bibliotheken muss auch nicht alles von Grund auf programmiert werden.
Stellen wir die Vorteile (grün) und Nachteile (weiß) im Detail gegenüber:
ETL mit spezialisierten Tools | ETL mit Programmiersprachen |
Einstieg und Entwicklung | |
Einfach zu erlernen und zu bedienen. ETL-Operationen sind vordefiniert und schnell integrierbar. Alle Konfigurationsoptionen sind sichtbar. Eine ausführliche Anleitung zu allen Funktionsmöglichkeiten ist schnell aufrufbar. | Erfordert hohe Expertise. Funktionen, Operationen etc. müssen im Internet recherchiert oder selbst entwickelt werden. Oft müssen spezielle Bibliotheken und Packages installiert und importiert werden. Erfahrene, auf ETL spezialisierte, Programmierer sind schwer zu finden. |
Tippfehler sind unwahrscheinlich, da vieles über Drag-&-Drop und Drop-Down Menüs gesteuert wird ohne hohen Schreibaufwand. | Programme müssen aufwändig geskriptet werden, wodurch die Fehleranfälligkeit sehr hoch ist. |
Nachvollziehbarkeit, Dokumentation und Fehleranalyse | |
Der Datenfluss wird visuell und kompakt dargestellt und ist daher einfach nachvollziehbar. D.h. eine Data Lineage ist prinzipiell schon vorhanden, wodurch ein geringerer Dokumentationsaufwand erforderlich ist. Einige Tools bieten erweiterte Dokumentations-Features. | Code ist schwerer zu lesen. Für Entwickler kann es schwierig sein, den Code von Kollegen zu erlernen. Den Datenfluss nachzuvollziehen |
Die Ergebnisse eines ETL-Schritts sind einfach aufrufbar, was die Fehleranalyse erleichtert. Es gibt integrierte Monitoring-Tools, wo Laufzeit-Metriken, wie die Anzahl der verarbeiteten Datensätze, auch automatisch angezeigt werden. | Um Zwischenergebnisse anzuzeigen, müssen Print-Befehle geschrieben werden oder spezielle Debugging-Tools genutzt werden. Erweiterte Metriken müssen ebenso manuell integriert werden. |
Zwischenergebnisse aus Submodulen, deren einzelne Transformationsschritte nicht in der laufenden Ansicht dargestellt werden, können nicht immer angezeigt werden, was die Fehleranalyse erschwert. | In Submodulen kann immer ein Print-Befehl eingebaut werden, sodass Zwischenergebnisse stets in der Konsole angezeigt werden können. |
Kosten | |
ETL-Tools sind in verschiedenen Preisklassen erhältlich. | Programmiersprachen sind kostenfrei. |
Eventuelle Lizenzkosten werden durch schnellere Entwicklung, Fehleranalyse, Wartung und Anpassungen amortisiert. | Komplexes oder schlechtes Coding und eine daraus resultierende aufwändige Fehleranalyse, Wartung und Anpassung führen zu höherem Zeit- und Kostenaufwand. |
Umstellung auf Big Data Framework | |
Ein Umstieg auf Spark-Engine kann in vielen Tools einfach konfiguriert werden. Die Transformationsschritte bleiben dabei unverändert. Das Tool generiert automatisch im Hintergrund einen Spark-Code zur Laufzeit. | Für einen Umstieg auf Spark-Engine muss der Code evtl. auf das Spark-Framework umgeschrieben werden. |
Erweiterte Funktionalitäten | |
Der Umfang der verfügbaren Operationen ist nicht erweiterbar und dadurch stärker begrenzt. Komplexe Transformationsanforderungen können den ETL-Prozess stark aufblähen und unübersichtlich gestalten. Schleifen und Rekursionen sind umständlich oder nicht möglich. | Durch Integrierbarkeit von Bibliotheken und benutzerdefinierten Funktionen sind hinsichtlich neuer Funktionalitäten theoretisch keine Grenzen gesetzt. Die Flexibilität bei einer Programmiersprache ist sehr hoch und komplexe Anforderungen sind elegant umsetzbar, z.B. über Klassen. |
Höhere mathematische Anforderungen wie z.B. Vektor- und Matrix-Operationen oder Monte-Carlo Simulationen sind meist nicht umsetzbar oder nur mit Code zu integrieren. Fortgeschrittene Data Science Techniken wie Machine Learning werden nicht unterstützt. | Komplexe mathematische Operationen und Simulationen werden unterstützt. Die Standardwerkzeuge für Künstliche Intelligenz und Machine Learning wurden für Programmiersprachen entwickelt. |
Neben dem ETL-Tool ist im Regelfall eine weitere Anwendung erforderlich, um Daten zu verwerten. Über die Tabellenverarbeitung hinaus gibt es nur wenige Möglichkeiten. | Eine Programmiersprache kann nicht nur ETL, sondern jegliche andere Art von Software bauen, in welcher schließlich die Datenverarbeitung ohne Medienbrüche mitintegriert werden kann. |
Kollaboration und Support | |
Gleichzeitiges Arbeiten verschiedener Teammitglieder an der gleichen Datei kann zu Komplikationen beim Mergen führen. | Gut in CI/CD Plattformen integrierbar für kollaboratives Arbeiten im Team. Einfaches Code-Merging. |
Hilfe von Community und in Foren kann schwer zu finden sein. Support vom Hersteller gibt es nur bei der Bezahlung von Lizenzgebühren. | Standard-Programmiersprachen haben eine große Community. Hilfe kann in Foren schnell gefunden werden. |
Was ist mit SQL?
Wenn man einen Code schreiben möchte, warum eigentlich nicht in SQL? Als datenbankspezifische Sprache ist sie intuitiv, leistungsstark und sehr mächtig. Über Tabellenanweisungen hinaus, können nicht nur skalare und tabellenwertige Funktionen erstellt werden, sondern auch wiederverwendbare Prozeduren aus Datenbankoperationen zusammen mit den Grundfunktionen einer Programmiersprache. Darunter fallen Variablendeklarationen, IF-Anweisungen, Schleifen, Rekursionen und vieles mehr. Beispielsweise können SQL-Anweisungen auch dynamisch als String generiert und anschließend ausgeführt werden. Leider gibt es keine Funktionsbibliothek für Data Science und bei komplexen mathematischen Anforderungen stoßen Entwickler schnell an die Grenzen.
SQL ist häufig die erste Wahl, wenn Transformationen innerhalb einer Datenbank stattfinden sollen. Sobald mehrere unterschiedliche Datenquellen zusammenkommen, ist es nicht mehr geeignet. Zwar gibt es Möglichkeiten, über SQL-Befehle Dateien einzulesen oder andere Datenbanken anzuzapfen, jedoch sind sie stark begrenzt und umständlich. Mit ETL-Tools ist es zudem möglich, SQL-Skripte auf Datenbanken auszuführen und somit auch die oben erwähnten SQL- Funktionen und Prozeduren zu nutzen.
Code oder Tool – Wie sollte die passende Auswahl getroffen werden?
Die spezifischen Anforderungen sowie verfügbare Ressourcen sind entscheidende Faktoren für die Software-Auswahl.
- Sind die ETL-Bedürfnisse extrem einfach und gering, bleibt es bei der eingangs erwähnten Typfrage. Sind Sie ein Programmierer, schreiben Sie schnell ein kleines Skript, andernfalls wählen Sie ein Open-Source-Tool.
- Für die klassischen ETL Use Cases sind eher die spezialisierten Tools empfehlenswert. Zunächst sollte man Open Source Tools in Erwägung ziehen.
- Genügen Open Source Tools nicht den Anforderungen, sollten die Lizenzkosten der Tools gegenüber den Programmierkosten einer Code-Lösung abgewägt werden. Die Wartungskosten, wenn auch schwer vorhersehbar, sollten bei der Code-Lösung nicht unterschätzt werden. Daher ist eine Code-Lösung nur zu empfehlen, wenn die vorhersehbaren Kosten erheblich geringer sind als bei der Tool-Alternative. Eine gute technische und fachliche Dokumentation ist wesentlich, um Wartungskosten gering zu halten. Vorhandene Programmier-Expertise ist ebenso eine maßgebliche Voraussetzung.
- Sind Transformationen nur innerhalb der Datenbank vorgesehen (ELT) und ist eine hohe Perfomance erforderlich, ist natives SQL eine sinnvolle Wahl.
- Falls die Anforderungen über die gängigen Tabellenoperationen hinaus gehen, oder wenn fortgeschrittene Data Science Techniken erforderlich sind, ist die Code-Lösung die geeignete Variante.
Im nächsten Teil der Beitragsserie beleuchten wir, wie sich ETL mit Python gestaltet.
Das könnte Sie auch interessieren: Alles einsteigen auf den ETL-Zug Richtung DWH
Wie ADVISORI Ihnen hilft
Das Team Data Integration & Business Intelligence von ADVISORI verfügt über ein breites Spektrum an Kompetenzen in verschiedenen datengetrieben Technologien. Wir helfen Ihnen bei der richtigen Toolauswahl gemäß Ihren Anforderungen und unterstützen Sie auch bei der Fachkonzeption und Implementierung.
Für welche Themen interessieren Sie sich? Geben Sie uns gerne Feedback.
Über den Autor
Dr. Naseemuddin Khan ist als Unternehmensberater mit Schwerpunkt Datenintegration für ADVISORI bei unseren Kunden tätig. Durch mehrere Jahre Erfahrung in der Entwicklung von Datenmodellen/-schnittstellen sowie ETL-Prozessen, kennt er die Fallstricke, die es hier zu beachten gilt und findet stets die passende Lösung.