Kurs
Tableau ist ein Datenvisualisierungstool, das bei Datenfachleuten sehr beliebt ist und bei der Einstellung häufig verlangt wird. Python ist eine vielseitige Programmiersprache, die in der Datenwissenschaft weit verbreitet ist. Die Python-Integration in Tableau ermöglicht es den Nutzern, anspruchsvolle Modelle zu erstellen, komplexe Berechnungen durchzuführen und die nativen Funktionen von Tableau zu erweitern.
Dies ist besonders nützlich für Datenanalysten, Data Scientists und Business Intelligence-Experten, die statistische Modellierung, maschinelles Lernen und Datenverarbeitungstechniken direkt in ihren Dashboards nutzen möchten.
Dieser Artikel ist ein praktisches Tutorial für die Integration von Python in Tableau. Du lernst, wie du deine Umgebung einrichtest, Python-Skripte ausführst, fortgeschrittene Analysefälle untersuchst und häufige Probleme behebst. Wenn du eine Einführung in Tableau erhalten möchtest, besuche den Kurs Einführung in Tableau.
Die Integration verstehen
Die Integration von Python in Tableau wird durch einen externen Dienst ermöglicht, die Analyseerweiterung TabPy (Tableau Python Server). Diese Erweiterung ermöglicht es Tableau-Nutzern, Python-Skripte in ihrer Tableau-Umgebung auszuführen.
Du hast vielleicht schon Erfahrung damit, mit Python Dateien zu erstellen und sie dann in Tableau zu visualisieren, wie in diesem Tutorial über die Visualisierung von Daten mit Python und Tableau, aber diese Verbindung mit TabPy ermöglicht eine nahtlose Integration zwischen den Daten in Tableau und deinen Python-Skripten.
Die Rolle von TabPy
TabPy dient als Brücke zwischen Tableau und Python. Es funktioniert nach einem Client-Server-Modell, bei dem Tableau (Client) Skripte an TabPy (Server) sendet, das sie in einer Python-Umgebung ausführt und die Ergebnisse zurückgibt.
Wie es funktioniert
- Tableau Desktop oder Server sendet ein Skript mit berechneten Feldern.
- TabPy führt den Python-Code aus.
- Die Ergebnisse werden an Tableau zurückgeschickt, um in Visualisierungen gerendert zu werden.
Diagramm der Verbindung zwischen Tableau, TabPy und der Python-Umgebung, erstellt mit eraser.io
Vorteile der Verwendung von Python mit Tableau
Tableau ist zwar außerordentlich leistungsfähig, aber manchmal fühlen sich seine berechneten Felder klobig oder ineffizient an, wenn es um komplexe analytische Aufgaben geht. Die Python-Integration bietet mehrere Vorteile gegenüber den nativen Funktionen von Tableau und gibt den Nutzern mehr Freiheit bei der Verarbeitung ihrer Daten.
Du kannst zum Beispiel die folgenden Anwendungsfälle mit Python einbeziehen:
- Erweiterte Modellierung: Verwende Bibliotheken wie
scikit-learn
,statsmodels
undxgboost
für Regression, Clustering und Klassifizierung. - API-Integration: Hol dir Echtzeitdaten über APIs wie Twitter, Reddit oder benutzerdefinierte Unternehmensdienste.
- Dynamische Verarbeitung: Führe Berechnungen durch, die sich aufgrund von Benutzereingaben oder veränderten Daten anpassen. Du kannst Pakete wie
pandas
odernumpy
verwenden, um die analytische Leistung deines Tableau-Dashboards zu erhöhen.
TabPy einrichten
Um Python in Tableau nutzen zu können, musst du TabPy installieren und konfigurieren. Dieser Schritt ist ziemlich einfach! Der Hauptprozess besteht darin, sicherzustellen, dass du Python und Tableau auf deinem Computer installiert hast.
Systemanforderungen und Installation
Voraussetzungen:
- Python 3.7+ (stell sicher, dass du pip hast)
- Tableau Desktop oder Tableau Server (2020.1 oder höher empfohlen)
Schritt-für-Schritt-Installation:
1. Installiere Python. Befolge die Anweisungen deines Betriebssystems, um Python zu installieren.
2. Erstelle eine virtuelle Umgebung:
python3 -m venv tableau-env
3. Installiere TabPy (stelle sicher, dass du deine Umgebung aktivierst). Du kannst auch andere Pakete wie pandas
, numpy
, sklearn
, und andere zu diesem Zeitpunkt installieren.
pip install tabpy
4. Starte TabPy:
tabpy
TabPy konfigurieren
Um TabPy anzupassen, bearbeite seine Konfigurationsdatei. Mit diesen Anpassungen kannst du Dinge wie den Port, an dem TabPy auf Informationen wartet, und das Übertragungsprotokoll, das es verwendet, ändern. Weitere Informationen zu den Konfigurationseinstellungen findest du im TabPy's Konfigurationsanleitung.
Beispielkonfigurationsdatei (tabpy.conf)
So könnte eine Konfigurationsdatei für tabpy aussehen.
[TABPY]
TABPY_PORT = 9004
TABPY_TRANSFER_PROTOCOL = http
Tipps zu Netzwerk und Sicherheit
Da TabPy auf die Nutzung einer internetähnlichen Serververbindung zu deinen lokalen Ressourcen angewiesen ist, solltest du einige Netzwerk- und Sicherheitstipps beachten:
- Achte darauf, dass du einen Port wählst, der in deiner Firewall offen ist, aber keine externen Verbindungen abhört.
- Richte einen Reverse Proxy wie NGINX mit SSL ein, um eine sichere Kommunikation zu gewährleisten.
- Wenn du auf Tableau Server läufst, stellst du sicher, dass TabPy über das gleiche Netzwerk erreichbar ist.
Für weitere Details zu den ersten Schritten mit TabPy, folge diesem Tutorial zum Einstieg in TabPy.
Python in Tableau ausführen
Nachdem du TabPy eingerichtet hast, kannst du Python jetzt direkt in Tableau-Dashboards integrieren. Du musst zuerst die Erweiterungsverbindungen in Tableau aktivieren. Öffne deinen Tableau Desktop, gehe zu Einstellungen und Leistung, Verwalte die Analytics Extension Connection und wähle TabPy aus. Dann konfiguriere sie anhand der Einstellungen in deiner TabPy-Konfigurationsdatei.
Bildschirm "Manage Analytics Extensions Connection" in Tableau (help.tableau.com)
Methoden der Skriptintegration
Es gibt drei Möglichkeiten, Python-Skripte in Tableau auszuführen: Inline-Skriptberechnungen innerhalb eines berechneten Feldes, Vorverarbeitung mit Tableau-Erweiterungen und Modell-Endpunkte.
1. Inline-Skript Berechnungen
Verwende die Funktionen SCRIPT_REAL
, SCRIPT_INT
, SCRIPT_STR
oder SCRIPT_BOOL
von Tableau. Diese Funktionen übermitteln die Daten direkt an den TabPy-Server, ohne dass ein externes Skript ausgeführt werden muss. Du kannst Python direkt in diese Skripte schreiben.
Beispiel: Z-Score-Normalisierung
SCRIPT_REAL(
"import scipy.stats as stats
return stats.zscore(_arg1)",
SUM([Sales])
)
Mit dem obigen Beispiel kannst du das Paket stats
von scipy
importieren und den Z-Score der Spalte SUM([Sales])
in deinem Tableau zurückgeben.
2. Vorverarbeitung mit Tabellenerweiterungen
Verwende Tableau-Erweiterungen, um die Vorverarbeitung mit Python außerhalb von Tableau durchzuführen und die Ergebnisse dann zu importieren.
- Daten mit Pandas/Numpy vorverarbeiten.
- Speichere die Ergebnisse als CSV oder API-Endpunkt.
- Lade die verarbeiteten Daten in Tableau.
Diese Erweiterungen werden auf der Seite "Blätter" deiner Tableau-Arbeitsmappe aktiviert. Mit diesen Erweiterungen gibst du die Gesamtheit deines Skripts über die TabPy-Erweiterung ein. Dadurch wird das Skript für den gesamten Datensatz ausgeführt, sodass du die gesamten Daten auf einmal vorverarbeiten kannst, anstatt nur die einzelnen Zeilen. Dabei wird oft eine eigene Tabelle als Ausgabe erstellt.
Die Funktion zur Erweiterung der Tabelle ist unten auf der Seite Blätter verfügbar. (Aus der Tableau-Dokumentation)
3. Eingesetzte Modell-Endpunkte
Die letzte Methode ist eine der wirkungsvollsten. Wir hosten ein Modell, das den TabPy-Server nutzt, um ein Skript auszuführen. Wir rufen dieses Skript dann in Tableau auf, wenn wir das Modell auf einen bestimmten Datensatz anwenden wollen.
Beispiel: Modell in TabPy bereitstellen
Der erste Schritt besteht darin, eine Datei zu erstellen, die von TabPy eingesetzt werden soll. Nachdem du deinen TabPy-Server gestartet hast (wie oben beschrieben), kannst du ihn nutzen, um dein Python-Skript auszuführen. Sobald das Python-Skript implementiert ist, rufen wir es in Tableau mit SCRIPT_REAL
auf.
from tabpy.tabpy_tools.client import Client
import pickle
def predict_sales(input_features):
model = pickle.load(open(model.pkl, ‘rb’)) # This assumes you have a saved model
return model.predict(input_features)
client = Client(‘http://localhost:9004’)
client.deploy('predict_sales', predict_sales, 'Predict sales using linear model', override=True)
Tableau Script Call:
SCRIPT_REAL("return tabpy.query(‘predict_sales’, _arg1)[‘response’]", SUM[Feature1])
Techniken zur Leistungsoptimierung
Ähnlich wie beim Ausführen von Python-Skripten außerhalb von Tableau müssen wir auch hier auf die Leistung achten. Es gibt einige Besonderheiten zu beachten, wenn du Daten in Tableau auswertest.
- Stapelverarbeitung: Minimiere die Anzahl der Anrufe, indem du die Daten in Paketen verarbeitest. Oft ist es hilfreich, den gesamten Datensatz auf einmal zu verarbeiten, anstatt ihn erst dann, wenn er von Tableau aufgerufen wird.
- Ergebnisse zwischenspeichern: Cache statische Ergebnisse mit den Caching-Einstellungen von Tableau.
- Vektorisierung: Verwende NumPy/Pandas-Operationen anstelle von Schleifen für eine schnellere Ausführung. Diese vektorisieren oft die mathematischen Berechnungen und machen sie dadurch viel effizienter.
Wenn du Tableau Server verwendest, kannst du die Verbindung durch Pooling weiter optimieren. Beim Connection Pooling geht es darum, dauerhafte Verbindungen mit Datenquellen zu unterhalten, um den Overhead zu minimieren.
Du kannst dasselbe für deine Datenquellen und TabPy tun, um zu verhindern, dass Tableau die Verbindung zu TabPy jedes Mal neu öffnet, wenn du ein Skript oder eine neue Berechnung ausführst.
Erweiterte analytische Anwendungsfälle
Jetzt, wo du die Grundlagen kennst, kannst du ganz individuelle Analysen durchführen. Bei diesen Methoden werden fortgeschrittene Skripte entwickelt, die auf interessante Weise mit deinem Dashboard interagieren.
Prädiktive Analytik in Echtzeit
Ein großartiges Modell ist der Einsatz von Zeitreihenmodellen (z. B. ARIMA, Prophet), die sich mit Benutzereingaben aktualisieren, so wie in diesem Leitfaden zum Einsatz von Funktionen und Prophet mit TabPy.
Sobald du dein Modell erstellt hast, kannst du es in ein Skript verpacken, das von TabPy eingesetzt werden kann. Dann verbinden wir dieses Modell mit unserem Tableau, indem wir dieselbe SCRIPT_REAL
Funktion verwenden, um unser eingesetztes Modell aufzurufen.
Anwendungsfall: Absatzprognose
- Erstelle und trainiere ein Prophet-Modell in Python.
- Setze das Modell auf TabPy ein und verwende historische Verkäufe als Merkmal
- Aktualisiere die Vorhersagen zu den Verkaufszahlen, wenn sich der Dashboard-Filter ändert.
Wenn nun jemand Filter wie Ort, Zeit oder Produkt ändert, erstellt Tableau in Echtzeit neue Prognosen mit diesen neuen Filtern.
Sicherheit und Governance
Da wir unsere Verbindungen zu TabPy öffnen, ist es wichtig, dass wir die richtigen Sicherheits- und Governance-Protokolle befolgen.
Authentifizierungsprotokolle
TabPy bietet eine Reihe von Authentifizierungsprotokollen, um die Sicherheit der Nutzer zu gewährleisten. Die folgenden Funktionen werden unterstützt und können konfiguriert werden:
- Grundlegende Authentifizierung (Benutzername/Passwort)
- Zertifikatsbasierte Authentifizierung
- OAuth2 mit sicherem Token-Handling (für den fortgeschrittenen Unternehmenseinsatz)
Am besten verwendest du immer HTTPS und sichere Token für den Produktionseinsatz.
Maßnahmen zum Schutz der Daten
Wenn wir Tableau und TabPy miteinander verbinden, müssen wir sicherstellen, dass wir eine angemessene Datenschutzrichtlinie befolgen. Dazu gehört, dass die Daten durch die richtigen Verbindungskanäle fließen und keine anderen Ports verwenden können und dass die Daten während der Übertragung jederzeit verschlüsselt sind. Dies sind einige bewährte Praktiken, die du befolgen solltest:
- Verschlüssele die Kommunikation zwischen Tableau und TabPy.
- Verwende Firewall-Regeln und Zugangskontrollen.
- Aktiviere die Protokollierung von Audits in TabPy, um die Compliance zu gewährleisten. Aktualisiere Python-Pakete regelmäßig, um Sicherheitslücken zu schließen.
Wenn dein Unternehmen bestimmte Vorschriften einhalten muss, solltest du sicherstellen, dass du dich auch weiterhin an deren Best Practices hältst. Stelle sicher, dass GDPR und CCPR eingehalten werden, indem du PII anonymisierst und mit Token versiehst, bevor sie an TabPy gesendet werden. Verwende außerdem einen sicheren Speicher für Python-Zwischenergebnisse, um Lecks zu vermeiden.
Fehlerbehebung und Fehlersuche
Probleme sind unvermeidlich, aber die meisten können schnell gelöst werden.
Häufige Probleme und Lösungen
Ausgabe |
Auflösung |
Tableau kann sich nicht mit TabPy verbinden |
Überprüfe die Firewall, bestätige den Port (9004) und stelle sicher, dass TabPy läuft |
Skript gibt NULL-Werte zurück |
Eingabetypen validieren und Python-Fehlerprotokolle überprüfen |
Langsame Leistung |
Optimiere die an Python gesendeten Daten, reduziere die Aufrufhäufigkeit, verwende Caching |
Wenn du jemals auf Probleme mit deinem Code stößt, befolge einige dieser Debugging-Schritte (die für jedes Skript funktionieren):
- Verwende print() oder Logging in Skripten (TabPy-Logs zeigen diese an).
- Teste Python-Skripte außerhalb von Tableau mit Jupyter.
- Überprüfe die Tableau-Logs unter My Tableau Repository/Logs.
Fazit
Durch die Integration von Python in Tableau werden fortschrittliche Analysefunktionen direkt in deinen visuellen Dashboards freigeschaltet. Mit TabPy kannst du:
- Ausführen komplexer Berechnungen
- Einsatz und Interaktion mit ML-Modellen
- Erweitern Sie die nativen Funktionen von Tableau erheblich
Ob du nun statistische Modelle ausführst, Textdaten verarbeitest oder Vorhersagen visualisierst, Python bringt eine neue Dimension der Intelligenz in Tableau-Dashboards.
Wenn du die in diesem Leitfaden beschriebenen Schritte befolgst, kannst du Python für aufschlussreiche, flexible und interaktive Analysen nutzen. Weitere Informationen über Tableau und seine Funktionen findest du in den folgenden Leitfäden:
Python in Tableau ausführen FAQ
Kann ich Python mit Tableau Public verwenden?
Nein. Tableau Public unterstützt keine externen Dienste wie TabPy. Die Python-Integration ist in Tableau Desktop (Professional Edition) und Tableau Server verfügbar.
Ist TabPy sicher für Produktionsumgebungen?
TabPy kann für die Produktion mit HTTPS, Firewall-Beschränkungen, Authentifizierungsprotokollen (basic, cert-based, OAuth2) und Reverse Proxies wie NGINX gesichert werden. Es sind jedoch zusätzliche Konfigurationen erforderlich, die über die Standardeinstellungen hinausgehen.
Wie geht Tableau mit der Leistung von Python-Skripten in Dashboards um?
Tableau sendet Daten an TabPy und wartet auf die Antwort, was zu Verzögerungen führen kann, wenn die Skripte nicht optimiert sind. Um die Leistung zu verbessern, kannst du Techniken wie Vektorisierung, Caching, Batching und die Minimierung der gesendeten Daten anwenden.
Kann ich virtuelle Umgebungen mit TabPy verwenden?
Ja. Du kannst TabPy in einer virtuellen Python-Umgebung ausführen, was dazu beiträgt, Abhängigkeiten zu isolieren und Konflikte zu vermeiden. Aktiviere die Umgebung, bevor du TabPy startest.
Kann TabPy komplexe Datenstrukturen wie JSON oder Dictionaries zurückgeben?
Nein. TabPy muss eine flache Liste oder ein NumPy-Array zurückgeben, das Tableau interpretieren kann. Komplexe Datenstrukturen wie Dictionaries oder JSON müssen vor der Rückgabe in eine Liste umgewandelt werden.
Ich bin Datenwissenschaftler mit Erfahrung in räumlicher Analyse, maschinellem Lernen und Datenpipelines. Ich habe mit GCP, Hadoop, Hive, Snowflake, Airflow und anderen Data Science/Engineering-Prozessen gearbeitet.