Ga naar hoofdinhoud

Python draaien in Tableau met TabPy: een complete gids

Volg deze stappen om Python-scripts in Tableau uit te voeren met TabPy. Zo kun je modelling- en analytische pipelines bouwen voor je Tableau-visualisaties.
· 9 min lezen

Verken met AI

Tableau is een datavisualisatietool die erg populair is onder dataprofessionals en vaak gevraagd wordt bij sollicitaties. Python is een veelzijdige programmeertaal die veel wordt gebruikt in data science. De integratie van Python in Tableau stelt gebruikers in staat om geavanceerde modellen te bouwen, complexe berekeningen uit te voeren en de standaardmogelijkheden van Tableau uit te breiden. 

Dit is vooral nuttig voor data-analisten, data scientists en business intelligence-professionals die statistische modellering, machine learning en dataverwerkingstechnieken rechtstreeks binnen hun dashboards willen benutten.

Dit artikel is een praktische tutorial voor het integreren van Python in Tableau. Je leert je omgeving in te richten, Python-scripts uit te voeren, geavanceerde analysecases te verkennen en veelvoorkomende problemen op te lossen. Wil je eerst een introductie tot Tableau, volg dan deze cursus Introduction to Tableau.

De integratie begrijpen

De integratie van Python met Tableau is mogelijk via een externe service, de analytics-extensie TabPy (Tableau Python Server). Met deze extensie kunnen Tableau-gebruikers Python-scripts uitvoeren binnen hun Tableau-omgeving. 

Hoewel je misschien ervaring hebt met Python om bestanden te maken en die vervolgens in Tableau te visualiseren, zoals in deze tutorial over data visualiseren met Python en Tableau, zorgt de koppeling met TabPy voor een naadlozere integratie tussen de data in Tableau en je Python-scripts.

De rol van TabPy

TabPy fungeert als brug tussen Tableau en Python. Het werkt volgens een client-servermodel, waarbij Tableau (client) scripts naar TabPy (server) stuurt, die ze uitvoert in een Python-omgeving en de resultaten terugstuurt.

Hoe het werkt

  1. Tableau Desktop of Server stuurt een script via berekende velden.
  2. TabPy voert de Python-code uit.
  3. Resultaten worden teruggestuurd naar Tableau voor weergave in visualisaties.

Diagram showing connection between Tableau, TabPy, and Python

Diagram met de verbinding tussen Tableau, TabPy en de Python-omgeving, gegenereerd met eraser.io

Voordelen van Python met Tableau

Hoewel Tableau buitengewoon krachtig is, kunnen berekende velden soms onhandig of inefficiënt aanvoelen bij complexe analytische taken. De Python-integratie biedt verschillende voordelen ten opzichte van de native mogelijkheden van Tableau en geeft gebruikers meer vrijheid om hun data te verwerken. 

Met Python kun je bijvoorbeeld de volgende use-cases opnemen:

  • Geavanceerde modellering: Gebruik libraries zoals scikit-learn, statsmodels en xgboost voor regressie, clustering en classificatie.
  • API-integratie: Haal realtime data op via API's zoals Twitter, Reddit of maatwerkservices binnen de organisatie.
  • Dynamische verwerking: Voer berekeningen uit die zich aanpassen op basis van gebruikersinvoer of veranderende data. Je kunt pakketten zoals pandas of numpy gebruiken om de analytische kracht van je Tableau-dashboard flink te vergroten.

TabPy instellen

Om Python in Tableau te gebruiken, moet je TabPy installeren en configureren. Deze stap is vrij eenvoudig! Het belangrijkste is dat je Python en Tableau op je computer hebt geïnstalleerd.

Systeemvereisten en installatie

Vereisten:

  • Python 3.7+ (zorg dat je pip hebt)
  • Tableau Desktop of Tableau Server (2020.1 of later aanbevolen)

Stapsgewijze installatie:

1. Installeer Python. Volg de instructies voor je besturingssysteem om Python te installeren.

2. Maak een virtuele omgeving aan:

python3 -m venv tableau-env

3. Installeer TabPy (zorg dat je je omgeving activeert). Je kunt op dit moment ook andere pakketten installeren, zoals pandas, numpy, sklearn en meer.

pip install tabpy

4. Start TabPy:

tabpy

TabPy configureren

Om TabPy aan te passen, bewerk je het configuratiebestand. Hiermee kun je zaken wijzigen zoals de poort waarop TabPy luistert en het gebruikte overdrachtsprotocol. Voor meer informatie over de configuratie-instellingen, volg de configuratiegids van TabPy.

Voorbeeldconfiguratiebestand (tabpy.conf)

Zo kan een configuratiebestand voor TabPy eruitzien.

[TABPY]
TABPY_PORT = 9004
TABPY_TRANSFER_PROTOCOL = http

Netwerk- en beveiligingstips

Omdat TabPy gebruikmaakt van een internetachtige serververbinding met je lokale resources, is het verstandig om enkele netwerk- en beveiligingstips te volgen: 

  • Kies een poort die openstaat in je firewall, maar niet luistert naar externe verbindingen. 
  • Richt een reverse proxy zoals NGINX met SSL in voor veilige communicatie. 
  • Zorg er bij gebruik van Tableau Server voor dat TabPy toegankelijk is vanaf hetzelfde netwerk

Voor meer details om met TabPy aan de slag te gaan, volg deze getting started with TabPy-tutorial.

Python uitvoeren in Tableau

Na het instellen van TabPy kun je Python direct in Tableau-dashboards integreren. Je moet eerst extensieverbindingen inschakelen in Tableau. Open Tableau Desktop, ga naar Settings and Performance, Manage Analytics Extension Connection en selecteer TabPy. Configureer dit vervolgens op basis van de instellingen in je TabPy-configuratiebestand.

Manage Analytics Extensions Connection screen in Tableau

Scherm Manage Analytics Extensions Connection in Tableau (help.tableau.com)

Methoden voor scriptintegratie

Er zijn drie primaire manieren om Python-scripts in Tableau uit te voeren: inline scriptberekeningen in een berekend veld, preprocessing met Tableau-extensies en model-endpoints.

1. Inline scriptberekeningen

Gebruik de functies SCRIPT_REAL, SCRIPT_INT, SCRIPT_STR of SCRIPT_BOOL van Tableau. Deze functies sturen elk data direct naar de TabPy-server zonder een extern script uit te voeren. Je kunt Python rechtstreeks in deze scripts schrijven.

Voorbeeld: Z-score-normalisatie

SCRIPT_REAL(
  "import scipy.stats as stats
   return stats.zscore(_arg1)",
  SUM([Sales])
)

In het bovenstaande voorbeeld importeer je het pakket stats uit scipy en retourneer je de Z-score van de kolom SUM([Sales]) in je Tableau.

2. Preprocessing met table extensions

Gebruik Tableau-extensies om preprocessing met Python buiten Tableau uit te voeren en importeer vervolgens de resultaten.

  • Preprocess data met Pandas/Numpy.
  • Sla resultaten op als een CSV of API-endpoint.
  • Laad de verwerkte data in Tableau.

Deze extensies worden ingeschakeld vanaf de Sheets-pagina van je Tableau-werkmap. Met deze extensies voer je je volledige script in via de TabPy Extension. Dit voert het script uit op je volledige dataset, zodat je alle data in één keer kunt preprocessen in plaats van op rijniveau. Dit levert vaak een aparte tabel op als output.

Table Extension feature available at the bottom of Sheets page 

Functie Table Extension beschikbaar onderaan de Sheets-pagina. (Uit de Tableau-documentatie)

3. Ingezette model-endpoints

De laatste methode is een van de krachtigste. We hosten een model via de TabPy-server om een script uit te voeren. Vervolgens roepen we dit script in Tableau aan wanneer we het model op een specifieke dataset willen draaien.

Voorbeeld: model deployen naar TabPy

De eerste stap is het maken van een bestand dat door TabPy wordt gedeployed. Nadat je je TabPy-server hebt gestart (volg de stappen hierboven), kun je die gebruiken om je Python-script te draaien. Zodra dat script is gedeployed, roepen we het in Tableau aan met SCRIPT_REAL.

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-scriptaanroep:

SCRIPT_REAL("return tabpy.query(‘predict_sales’, _arg1)[‘response’]", SUM[Feature1])

Technieken voor prestatieoptimalisatie

Net als bij het draaien van Python-scripts buiten Tableau, moeten we letten op performance. Er zijn enkele speciale aandachtspunten bij het draaien van data in Tableau.

  1. Batchverwerking: Minimaliseer het aantal aanroepen door data in batches te verwerken. Het is vaak nuttig om je volledige dataset in één keer te verwerken, in plaats van wanneer Tableau deze opvraagt.
  2. Resultaten cachen: Cache statische resultaten via de cache-instellingen van Tableau.
  3. Vectoriseren: Gebruik NumPy/Pandas-bewerkingen in plaats van loops voor snellere uitvoering. Deze vectoriseren vaak de wiskundige berekeningen, waardoor ze veel efficiënter worden.

Als je Tableau Server gebruikt, kun je verder optimaliseren met connection pooling. Connection pooling is het idee om persistente verbindingen met gegevensbronnen te behouden om overhead te minimaliseren. 

Je kunt hetzelfde doen voor je gegevensbronnen en TabPy om te voorkomen dat Tableau de verbinding met TabPy telkens opnieuw opent wanneer je een script of nieuwe berekening uitvoert.

Geavanceerde analytische use-cases

Nu de basis behandeld is, kun je zeer aangepaste analyses implementeren. Deze methoden omvatten het bouwen van geavanceerdere scripts die op interessante manieren met je dashboard interageren.

Realtime voorspellende analytics

Een goed model is het deployen van tijdreeksmodellen (bijv. ARIMA, Prophet) die zich aanpassen aan gebruikersinvoer, net als in deze gids over het deployen van functies en Prophet met TabPy. 

Zodra je je model hebt gebouwd, kun je dat verpakken in een script dat door TabPy kan worden gedeployed. We koppelen dit model vervolgens aan Tableau met dezelfde SCRIPT_REAL-functie om ons gedeployde model aan te roepen.

Use-case: verkoopprognoses

  • Bouw en train een Prophet-model in Python.
  • Deploy het model op TabPy met historische verkopen als feature
  • Werk voorspellingen van verkoopcijfers bij wanneer de dashboardfilters wijzigen.

Als iemand nu filters zoals locatie, tijd of product wijzigt, genereert Tableau in realtime nieuwe voorspellingen met deze nieuwe filters.

Beveiliging en governance

Aangezien we onze verbindingen met TabPy openen, is het essentieel dat we de juiste beveiligings- en governanceprotocollen volgen. 

Authenticatieprotocollen

TabPy biedt diverse authenticatieprotocollen om gebruikers te helpen veilig te blijven. De volgende worden ondersteund en kunnen worden geconfigureerd:

  • Basisauthenticatie (gebruikersnaam/wachtwoord)
  • Certificaatgebaseerde authenticatie
  • OAuth2 met veilige tokenafhandeling (voor geavanceerd enterprisegebruik)

De best practice is om in productie altijd HTTPS en veilige tokens te gebruiken.

Maatregelen voor gegevensbescherming

Bij het verbinden van Tableau en TabPy moeten we ervoor zorgen dat we passende data protection-governance volgen. Dit omvat het waarborgen dat de data via de juiste verbindingskanalen stroomt en geen andere poorten gebruikt, en dat de data te allen tijde versleuteld is tijdens transport. Dit zijn enkele best practices om te volgen:

  • Versleutel de communicatie tussen Tableau en TabPy.
  • Gebruik firewallregels en toegangscontroles.
  • Schakel auditlogging in op TabPy voor compliance. Werk Python-pakketten regelmatig bij om kwetsbaarheden te verhelpen.

Als je organisatie aan bepaalde regelgeving moet voldoen, zorg dan dat je hun best practices blijft volgen. Zorg dat GDPR en CCPA worden nageleefd door PII te anonimiseren en te tokenizen voordat het naar TabPy wordt verzonden. Gebruik daarnaast veilige opslag voor tussentijdse Python-resultaten om lekkage te minimaliseren.

Probleemoplossing en debuggen

Problemen zijn onvermijdelijk, maar de meeste zijn snel op te lossen.

Veelvoorkomende problemen en oplossingen

Probleem

Oplossing

Tableau kan geen verbinding maken met TabPy

Controleer de firewall, bevestig de poort (9004) en verifieer dat TabPy draait

Script retourneert NULL-waarden

Valideer inputtypes en controleer Python-foutlogs

Trage performance

Optimaliseer de data die naar Python wordt gestuurd, verlaag de aanroepfrequentie, gebruik caching

Loop je tegen problemen aan met je code, volg dan enkele van deze debugstappen (die voor elk script werken):

  • Gebruik print() of logging in scripts (TabPy-logs tonen deze).
  • Test Python-scripts buiten Tableau met Jupyter.
  • Controleer Tableau-logs in My Tableau Repository/Logs.

Conclusie

De integratie van Python met Tableau ontgrendelt geavanceerde analytische kracht rechtstreeks binnen je visuele dashboards. Met TabPy kun je:

  • Complexe berekeningen uitvoeren
  • ML-modellen deployen en ermee interacteren
  • De native mogelijkheden van Tableau aanzienlijk uitbreiden

Of je nu statistische modellen draait, tekstdata verwerkt of voorspellingen visualiseert: Python voegt een nieuwe dimensie van intelligentie toe aan Tableau-dashboards.

Als je de stappen in deze gids volgt, kun je Python inzetten voor meer inzichtelijke, flexibele en interactieve analytics. Voor meer informatie over Tableau en de mogelijkheden, bekijk deze gidsen:

Run Python in Tableau FAQ’s

Kan ik Python gebruiken met Tableau Public?

Nee. Tableau Public ondersteunt geen externe services zoals TabPy. Python-integratie is beschikbaar in Tableau Desktop (Professional Edition) en Tableau Server.

Is TabPy veilig voor productieomgevingen?

TabPy kan voor productie worden beveiligd met HTTPS, firewallbeperkingen, authenticatieprotocollen (basic, cert-based, OAuth2) en reverse proxies zoals NGINX. Er zijn echter aanvullende configuraties nodig bovenop de standaardinstelling.

Hoe gaat Tableau om met de performance van Python-scripts in dashboards?

Tableau stuurt data naar TabPy en wacht op het antwoord, wat vertraging kan veroorzaken als scripts niet geoptimaliseerd zijn. Verbeter de performance met technieken zoals vectoriseren, cachen, batchen en het minimaliseren van de verzonden data.

Kan ik virtuele omgevingen gebruiken met TabPy?

Ja. Je kunt TabPy draaien in een virtuele Python-omgeving, wat helpt om dependencies te isoleren en conflicten te voorkomen. Activeer de omgeving voordat je TabPy start.

Kan TabPy complexe datastructuren zoals JSON of dictionaries retourneren?

Nee. TabPy moet een platte lijst of NumPy-array retourneren die Tableau kan interpreteren. Complexe datastructuren zoals dictionaries of JSON moeten vooraf worden omgezet naar een lijst voordat ze worden geretourneerd.

Tim Lu

Auteur

Tim Lu

Ik ben een data scientist met ervaring in ruimtelijke analyse, machine learning en datapijplijnen. Ik heb gewerkt met GCP, Hadoop, Hive, Snowflake, Airflow en andere data science- en engineeringprocessen.

Onderwerpen

Gerelateerd