David Claßen

Viele Kunden stehen immer wieder vor der Herausforderung, dass sie aus einem oder mehreren Quellsystem Datenexporte in Form von CSV-Dateien erhalten. Oftmals repräsentiert eine CSV-Datei dabei dann entweder eine vollständige Tabelle oder das Ergebnis einer Datenabfrage. Basierend auf diesen Exporten sollen dann Analysen durchgeführt werden.

Hier stellt sich dann immer wieder die Frage, wie man am besten mit der Vielzahl an Dateien umgeht um diese den Fachabteilungen für die Analyse zur Verfügung zu stellen.
Eine Möglichkeit könnte zum Beispiel sein, die Dateien 1:1 in Tabellen auf dem SQL Server zu importieren. Dieses ist schnell gemacht, kann jedoch sehr zeitaufwendig sein, wenn mehrere Dateien vorliegen. Vorteil dieser Lösung ist, dass sich die Daten dann über den SQL Server sehr einfach und in gewohnter Form mittels SQL abfragen lassen. Nachteil ist ganz klar der zugrunde liegende manuelle Prozess und das technische Wissen sowie die nötigen Berechtigungen die vorhanden sein müssen.

Im Folgenden möchte ich darstellen, wie sich diese Problemstellung mit Tableau auch für einen Fachanwender ohne besondere IT-Kenntnisse sehr einfach lösen lässt.
Ausgangssituation für mein Beispiel ist dabei, dass ich insgesamt drei CSV-Dateien in einem Verzeichnis habe, die einen Export aus einem Quellsystem repräsentieren. In den Dateien enthalten sind Daten zu Verkäufen, die Information, ob eine Warensendung zurückgeschickt wurde und als drittes der Name des verantwortlichen Managers für eine Verkaufsregion.
Würden diese drei Dateien als Tabellen vorliegen, könnte eine entsprechende Abfrage der Daten zum Beispiel so aussehen:
select
        sales.*,
        returns.status,
        managers.manager
from
        sales
        left join returns
            on sales.orderid = returns.orderid
        left join managers
            on sales.country = managers.country

Wie kann dieses nun mit Tableau erreicht werden?
Zunächst verbindet man sich mit Tableau gegen eine Textdatei und wählt die erste CSV-Datei aus dem Verzeichnis aus. Anschließend erscheint der bekannte Dialog zum Aufbau einer Verbindung. Hier kann man nun erkennen, dass ich die Sales-Datei ausgewählt habe, Tableau jedoch alle CSV-Dateien aus dem Verzeichnis anzeigt.

Connection

Wählt man nun die Option “Multiple Tables”, lassen sich zu der bereits ausgewählten CSV-Datei nacheinander weitere CSV-Dateien hinzufügen. Tableau spricht dann jedoch nicht mehr von CSV-Dateien sondern von Tabellen. Eine CSV-Datei wird nun behandelt als wäre es eine Tabelle aus einer Datenbank. Mann kann nun die Spalten wählen die in der Ergebnismenge vorkommen sollen, kann die Spaltennamen anpassen und auf dem zweiten Reiter “Join” noch die zu verwendenden Spalten und das Vorgehen für den Join der beiden “Tabellen” bestimmen.

Multiple

Join

Die Spalten für den durchzuführenden Join versucht Tableau automatisch aufgrund von Datentyp und Spaltenname zu erkennen und stellt dieses Joinkriterium direkt ein. Auch Joinkriterien über mehrere Spalten sind an dieser Stelle einstellbar.

Wenn Sie bereits mit Tableau und relationalen Datenbanken gearbeitet haben werden Sie diesen Dialog und das Vorgehen bereits kennen. Da wir uns auch beim Umgang mit FlatFiles im relationalen Bereich bewegen, ist der Dialog nämlich immer der gleiche.

Auf diese Weise habe ich zu den Sales Daten die Manager und die Returns hinzugefügt. Dabei habe ich diese beiden Zusatzinformationen jeweils an die Sales Daten gejoint. Als Joinkriterium habe ich “Left” gewählt um sicher zu stellen, dass ich alle Sales Daten beibehalte und diese, sofern Verfügbar mit Informationen zum Manager und zum Versandstatus anreichere.
Als letzter Schritt kann dann der so definierten Datenquelle unter Punkt 4 noch ein sprechender Name gegen und anschließend mit OK bestätigt werden.

FullQuery

Nun befindet man sich in der Tableau Arbeitsumgebung mit lediglich einer Datenquelle (DataSource). In dieser befinden sich nun nicht nur Daten aus einer, sondern aus allen drei CSV-Dateien, im Beispiel noch nach Tabellen gruppiert. Somit ist es nun möglich, zum Beispiel die Anzahl von Verkäufen (aus Sales) je Manager (aus Manager) und Versandstatus (aus Returns) darzustellen.

Tableau

Die Analysen basierend auf dieser Datenquelle bedienen sich – sofern die Live-Verbindung ausgewählt wurde – permanent der CSV-Dateien. Dieses bedeutet, dass wenn nun jemand an den CSV-Files Werte ändert, diese direkt in der Analyse sichtbar sind.
Zum Beispiel könnte ein täglicher Export von Daten immer im gleichen Verzeichnis die CSV-Dateien ablegen. Wenn nun basierend auf dieses Dateien eine Abfrage wie in diesem Artikel beschrieben erstellt wird, könnten Analysen auf täglich aktuellen Daten durchgeführt werden, ohne das Anpassungen etc. vorgenommen werden müssten.

Alias vergeben – Versandstatus NULL

Nachdem die eigentliche Hürde genommen wurde fällt an der oben gezeigten Analyse direkt auf, dass der Versandstatus entweder “Returned” oder NULL ist. Dieses kommt daher, dass wir lediglich eine Liste von den Zurückgeschickten Bestellungen hatten und nun entsprechend nur in diesem Fall ein Status vorhanden ist. Für die Analyse ist dieser Fall nicht sehr schön weil man nicht weiß, was sich hinter NULL verbirgt.
Hier bietet Tableau die Möglichkeit, Aliase für in den Daten vorkommende Ausprägungen zu vergeben. Dazu wählt man die betroffene Dimension, geht im Kontextmenü in die Feldeinstellungen und wählt dort den Punkt Alias. Im folgenden Dialog werden alle in den Daten gefundenen Ausprägungen gezeigt und der ursprüngliche Wert kann durch einen selbstgewählten Alias ersetzt werden. In diesem Beispiel möchte ich als Status “Shipped” statt NULL zurückgeben und trage dieses entsprechend ein.

image

Ab jetzt wird der Status NULL in meinen Analysen immer mit dem Wert “Shipped” ausgegeben was meine Analysen deutlich lesbarer wirken lässt.

Alias