Data Wrangling mit Trifacta

Die rasante Entwicklung hin zu immer größeren und komplexeren Datenmengen in Unternehmen bringt einige neue Anforderungen an das Verarbeiten dieser Daten mit sich. Bedingt durch die Masse an Daten und die Komplexität der Datenstrukturen, ist die Analyse sowie Bereinigung der Daten ohne leistungsstarke Software Tools häufig nicht mehr möglich. Insbesondere die Strukturierung und Bereinigung nimmt viel Zeit und Arbeitsaufwand in Anspruch, ehe mit der tatsächlichen Analyse überhaupt begonnen werden kann.
An dieser Stelle setzt das Data Wrangling Tool ‚Trifacta‘ (www.trifacta.com)  an. Es soll die Aufbereitung unterschiedlichster Daten mithilfe von Machine Learning Tools effizienter gestalten und für jedermann anwendbar machen.

Trifacta wird  in drei unterschiedlichen Paketen angeboten. Der ‚Trifacta Wrangler‘ ist kostenlos verfügbar und ermöglicht die Datenaufbereitung auf dem eigenen Desktop. Der ‚Trifacta Wrangler Edge‘ erlaubt die Zusammenarbeit in Teams und Abteilungen, wohingegen der ‚Trifacta Wrangler Enterprise‘ zusätzliche Enterprise Features liefert. Im Folgenden wird der ‚Trifacta Wrangler Enterprise‘ evaluiert.

Features

Kernaspekte der Arbeit mit Trifacta sind die Bereinigung von unstrukturierten Daten sowie von Rohdaten, aber auch das Zusammenfügen von Datenquellen und die Integration externer Daten. In dem Tool können sogenannte ‚Flows‘ angelegt werden, um Aufgaben voneinander abzugrenzen. Ein Flow beinhaltet dabei die entsprechenden Ursprungsdaten sowie eine Liste der darauf angewendeten Bearbeitungsschritte (‚Recipe‘) und die Beziehungen der Datensätze untereinander.
Aufgrund der Mächtigkeit des Tools werden wir an dieser Stelle nur ein paar ausgewählte Features vorstellen, um einen ersten Eindruck von der Arbeit mit Trifacta zu vermitteln.

Beim Hinzufügen eines neuen Datensatzes zu einem Flow erstellt Trifacta automatisch ein zugehöriges Recipe und versucht, den Datensatz in einer sinnvollen Struktur anzuordnen.  Abbildung 1 zeigt beispielhaft die so generierten Arbeitsschritte beim Import einer neuen Datenquelle. Bei großen Datensätzen arbeitet die Software auf einer Stichprobe, welche mit unterschiedlichen Sample Methoden gewählt werden können. Ist der Anwender mit der Aufbereitung der Stichprobe zufrieden, so kann das Recipe schließlich auf den vollständigen Datensatz angewendet werden.

Eingelesener Datensatz

Abbildung 1 – Eingelesener Datensatz

Über der jeweiligen Spalte zeigt Trifacta die Verteilung der darin enthaltenen Werte sowie den Anteil fehlender oder nicht zulässiger Einträge an. Diese Angaben liefern einen ersten Eindruck von der Qualität und Struktur des importierten Datensatzes.

Durch das Ausführen gängiger Datentransformationen kann der eingelesene Datensatz in die gewünschte Struktur transformiert werden. Der transformierte Datensatz mit entsprechendem Recipe ist in Abbildung 2 zu sehen. Mithilfe des Recipes ist es jederzeit möglich, zu früheren Transformationsschritten zurück zu kehren und diese zu bearbeiten oder ausgewählte Arbeitsschritte zu entfernen.

Abbildung 2 Transformierter Datensatz

Abbildung 2 – Transformierter Datensatz

Auch für das Einlesen anderer Dateitypen wie beispielsweise JSON liefert Trifacta geeignete Vorschläge zur schnellen Extraktion der Daten.Abbildung 3 Eingelesene JSON-Datei

Abbildung 3 – Eingelesene JSON-Datei

Wird der Datensatz nach dem Einlesen zunächst sehr unübersichtlich in einer einzigen Zeile dargestellt, so kommt man mithilfe standardmäßiger Funktionen zu einer strukturierten und übersichtlichen Darstellung für die weitere Verarbeitung.Abbildung 4 Transformierte JSON-Datei

Abbildung 4 – Transformierte JSON-Datei

In Trifacta können außerdem unterschiedliche Datensätze mittels Union oder Join verknüpft werden. Dies ermöglich das Zusammenfügen unterschiedlicher Datenquellen sowie die Integration externer Daten in eine bestehende Datenbank.Abbildung 5 Datensätze joinen

Abbildung 5 – Datensätze joinen

Stärken und Herausforderungen

Trifacta generiert auf Grundlage von Machine Learning Lösungsvorschläge für den Anwender, welcher sich die Arbeitsschritte in seinem Recipe an vielen Stellen schlicht zusammenklicken kann. Dies macht das Tool auch für Anwender interessant, die nicht aus dem IT-Bereich stammen und keine Software-Affinität aufweisen.
Zugleich können Anwender bei der Arbeit mit Trifacta auch an ihre Grenzen gelangen:
Und zwar dann, wenn das Tool keine vorgefertigte Lösung bieten kann, die den eigenen Anforderungen entspricht, und der Anwender infolge dessen doch auf eigene Kenntnisse beispielsweise bezüglich Regular Expressions oder der Berechnung von Werten anhand von Formeln zurückgreifen muss. Sind diese Kenntnisse nicht vorhanden, muss teils sehr kleinschrittig vorgegangen werden, um zum erhofften Ergebnis zu gelangen.

Die Arbeitsschritte, welche auf einem Datensatz ausgeführt werden, speichert Trifacta automatisch im Recipe. Dadurch ist es möglich, sich den Zustand des Samples nach einem beliebigen Arbeitsschritt anzeigen zu lassen. Auch können Arbeitsschritte nachträglich im Recipe geändert oder gar gelöscht werden, solange dies keinen Konflikt mit den nachfolgenden Arbeitsschritten ergibt. Das Recipe erleichtert somit sowohl die Dokumentation der Bearbeitung, als auch die nachträgliche Fehlersuche. Außerdem kann ein bereits erstelltes Recipe auf weitere Datensätze ausgeführt werden, sodass die Bereinigung und Strukturierung von Daten innerhalb eines Unternehmens mit wenig Aufwand standardisiert werden kann.

Durch das Bearbeiten von Stichproben anstelle vollständiger Datensätze minimiert das Tool zudem die benötigten Ressourcen, was es zu einem flüssigeren und anwenderfreundlicheren Arbeitswerkzeug macht. So kann der Anwender verschiedene Arbeitsschritte testen, bearbeiten und auch wieder rückgängig machen, ohne lange Wartezeiten in Kauf nehmen zu müssen.

Trifacta unterstützt zudem eine ganze Reihe von Dateiformaten, so auch JSON, XML, Parquet, Avro und Hive Tabellen. Das Tool liefert beispielsweise hilfreiche Tools, um JSON-Dateien mit wenigen Klicks zu entpacken oder zu verschachteln. HBase-Tabellen sowie SAS-Dateien können leider weder eingelesen noch geschrieben werden, und auch für ORC Dateien bietet Trifacta keinen Support. Außerdem ist es nicht möglich, beim Speichern der Daten in Hive eine partionierte Tabelle zu erstellen.

Grundsätzlich liefert Trifacta ein sehr starkes Tool bezogen auf Data Preparation. Bereits beim Einlesen versucht das Tool, die Daten in einer sinnvollen Struktur anzuzeigen und ordnet ihnen passende Datentypen zu. Der Anwender hat zudem die Möglichkeit, domänenspezifische Datentypen wie beispielsweise ‚Telefonnummer‘ selbst anzulegen.

Die Darstellung der Daten in Tabellenform ist übersichtlich und Trifacta bietet standardmäßige Funktionen, um gängige Datentransformationen durchzuführen. Dazu zählen auch komplexere Transformationen wie Pivoting und Windowing. Beim Entfernen von Duplikaten weist Trifacta leider Schwächen auf, da lediglich Zeilen gelöscht werden können, die in jeder Spalte übereinstimmen. Zeilen, die in mindestens einer der Spalten voneinander abweichen, werden nicht als Duplikate erkannt. Außerdem ist die simultane Umbenennung mehrerer Spalten nicht möglich, sodass im Bedarfsfall jede Spalte einzeln umbenannt werden muss. Auch die standardmäßige Anonymisierung von Daten ist in Trifacta leider nicht möglich. Diese kann daher lediglich über UDFS implementiert werden.

Scripting wird in Trifacta nicht unterstützt. Um individuelle Arbeitsschritte durchzuführen, die von Trifacta nicht standardmäßig angeboten werden, können jedoch UDFS generiert werden. Da durch die Standardfunktionen sowie die Möglichkeit der UDFS-Nutzung bereits sehr viele Nutzungsmöglichkeiten abgedeckt werden, fällt die fehlende Möglichkeit Scripte zu erstellen nicht so schwer ins Gewicht. Diese UDFs müssen allerdings zunächst installiert und als Jar-Pakete eingebunden werden, was mit zusätzlichem Aufwand verbunden ist und einen Overhead generiert.

Eine zusätzliche und sehr nützliche Funktion des Tools ist die Möglichkeit, eigene Scheduler anzulegen, welche spezifische Flows zu gegebenen Zeiten oder Anlässen starten. Die Flows können dabei ebenfalls von externen Schedulern gestartet werden.

Gerade für den Big Data Einsatz ist Trifacta gut geeignet, da es die Übermittlung von Transformationen, die man auf einem Sample ausgeführt hat, an ein Spark-Cluster ermöglicht. Dadurch können große Datenmengen auf Grundlage des erstellten Recipes auf unterschiedliche Rechner verteilt und dort transformiert werden.

Zusammenfassend lässt sich sagen, dass Trifacta ein mächtiges Tool ist, welches die Bereinigung und Aufbereitung von Daten beschleunigen kann und viele gängige Dateiformate sowie Datentransformationen unterstützt. Dabei ist positiv aufgefallen, dass auch komplexere Transformationen wie Pivoting und Windowing per Default unterstützt werden. Schwächen zeigt das Tool bezüglich der nicht unterstützten Dateiformate und der teils umständlichen simultanen Bearbeitung von Spalten. Da das Hinzufügen von UDFs einen Overhead beinhaltet, wäre es außerdem wünschenswert, UDFs in Scala oder Python direkt in Trifacta schreiben zu können, ohne diese als UDFs installieren zu müssen. Durch eine übersichtliche Benutzeroberfläche sowie eine Reihe standardmäßiger Funktionen ist Trifacta auch für Nutzer, die ursprünglich nicht aus dem IT-Bereich stammen, bis zu einem gewissen Grad intuitiv zugänglich. Hierbei stößt die Software allerdings an ihre Grenzen, sobald eine generische und dynamische Verarbeitung benötigt wird.