Vai al contenuto principale

Come eseguire Python in Tableau con TabPy: guida completa

Segui questi passaggi per iniziare a eseguire script Python in Tableau usando TabPy. Questo ti permetterà di creare pipeline di modellazione e analisi per le tue visualizzazioni in Tableau.
· 9 min leggi

Scopri con l'IA

Tableau è uno strumento di visualizzazione dei dati molto popolare tra i professionisti del dato ed è spesso richiesto in fase di assunzione. Python è un linguaggio di programmazione versatile, ampiamente usato nella data science. L’integrazione di Python in Tableau consente di creare modelli sofisticati, eseguire calcoli complessi ed estendere le funzionalità native di Tableau. 

Questo è particolarmente utile per data analyst, data scientist e professionisti della business intelligence che vogliono sfruttare modellazione statistica, machine learning e tecniche di data processing direttamente all’interno dei loro dashboard.

Questo articolo è un tutorial pratico per integrare Python in Tableau. Imparerai a configurare l’ambiente, eseguire script Python, esplorare casi d’uso di analisi avanzata e risolvere i problemi più comuni. Se vuoi una panoramica introduttiva su Tableau, segui questo corso introduttivo su Tableau.

Capire l’integrazione

L’integrazione di Python con Tableau è resa possibile tramite un servizio esterno, l’estensione analitica chiamata TabPy (Tableau Python Server). Questa estensione permette agli utenti Tableau di eseguire script Python all’interno dell’ambiente Tableau. 

Sebbene tu possa avere esperienza nell’uso di Python per creare file e poi visualizzarli in Tableau, come in questo tutorial su come visualizzare i dati con Python e Tableau, la connessione con TabPy consente un’integrazione più fluida tra i dati in Tableau e i tuoi script Python.

Il ruolo di TabPy

TabPy funge da ponte tra Tableau e Python. Opera con un modello client-server, dove Tableau (client) invia script a TabPy (server), che li esegue in un ambiente Python e restituisce i risultati.

Come funziona

  1. Tableau Desktop o Server invia uno script tramite campi calcolati.
  2. TabPy esegue il codice Python.
  3. I risultati vengono inviati a Tableau per il rendering nelle visualizzazioni.

Diagram showing connection between Tableau, TabPy, and Python

Diagramma che mostra la connessione tra Tableau, TabPy e l’ambiente Python, generato con eraser.io

Vantaggi dell’uso di Python con Tableau

Sebbene Tableau sia straordinariamente potente, a volte i campi calcolati possono risultare macchinosi o inefficienti per attività analitiche complesse. L’integrazione con Python offre diversi vantaggi rispetto alle funzionalità native di Tableau e dà agli utenti maggiore libertà nel processare i dati. 

Per esempio, con Python puoi includere i seguenti casi d’uso:

  • Modellazione avanzata: usa librerie come scikit-learn, statsmodels e xgboost per regressione, clustering e classificazione.
  • Integrazione con API: recupera dati in tempo reale usando API come Twitter, Reddit o servizi enterprise personalizzati.
  • Elaborazione dinamica: esegui calcoli che si adattano in base all’input dell’utente o ai dati che cambiano. Puoi usare pacchetti come pandas o numpy per aumentare davvero la potenza analitica del tuo dashboard Tableau.

Configurare TabPy

Per iniziare a usare Python in Tableau, devi installare e configurare TabPy. Questo passaggio è piuttosto semplice! Il processo principale è assicurarsi di avere Python e Tableau installati sul tuo computer.

Requisiti di sistema e installazione

Prerequisiti:

  • Python 3.7+ (assicurati di avere pip)
  • Tableau Desktop o Tableau Server (consigliato 2020.1 o successivi)

Installazione passo passo:

1. Installa Python. Segui le istruzioni per il tuo sistema operativo per installare Python.

2. Crea un ambiente virtuale:

python3 -m venv tableau-env

3. Installa TabPy (assicurati di attivare il tuo ambiente). In questa fase puoi anche installare altri pacchetti come pandas, numpy, sklearn e altri.

pip install tabpy

4. Avvia TabPy:

tabpy

Configurare TabPy

Per personalizzare TabPy, modifica il suo file di configurazione. Queste personalizzazioni ti permettono di cambiare elementi come la porta su cui TabPy ascolta le richieste e il protocollo di trasferimento che utilizza. Per maggiori informazioni sulle impostazioni di configurazione, segui la guida alla configurazione di TabPy.

Esempio di file di configurazione (tabpy.conf)

Ecco come potrebbe apparire un file di configurazione per TabPy.

[TABPY]
TABPY_PORT = 9004
TABPY_TRANSFER_PROTOCOL = http

Suggerimenti per rete e sicurezza

Poiché TabPy si basa sull’uso di una connessione tipo server internet alle tue risorse locali, è meglio seguire alcuni suggerimenti per rete e sicurezza: 

  • Assicurati di scegliere una porta aperta sul tuo firewall, ma che non accetti connessioni esterne. 
  • Configura un reverse proxy come NGINX con SSL per avere comunicazioni sicure. 
  • Se esegui su Tableau Server, assicurati che TabPy sia accessibile dalla stessa rete

Per maggiori dettagli su come iniziare con TabPy, segui questo tutorial introduttivo su TabPy.

Eseguire Python in Tableau

Dopo aver configurato TabPy, puoi integrare Python direttamente nei dashboard di Tableau. Devi prima abilitare le connessioni alle estensioni in Tableau. Apri Tableau Desktop, vai su Settings and Performance, Manage analytics Extension Connection e seleziona TabPy. Poi configurala in base alle impostazioni del tuo file di configurazione TabPy.

Manage Analytics Extensions Connection screen in Tableau

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

Metodi di integrazione degli script

Ci sono tre modi principali per eseguire script Python in Tableau: calcoli inline dentro un campo calcolato, preprocessing con estensioni di Tableau ed endpoint di modelli distribuiti.

1. Calcoli inline con script

Usa le funzioni di Tableau SCRIPT_REAL, SCRIPT_INT, SCRIPT_STR o SCRIPT_BOOL. Queste funzioni inviano i dati direttamente al server TabPy senza eseguire uno script esterno. Puoi scrivere Python direttamente all’interno di queste funzioni.

Esempio: normalizzazione Z-score

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

L’esempio sopra ti permette di importare il pacchetto stats da scipy e restituire lo Z-score della colonna SUM([Sales]) nel tuo Tableau.

2. Preprocessing con estensioni di tabella

Usa le estensioni di Tableau per eseguire il preprocessing con Python al di fuori di Tableau, quindi importa i risultati.

  • Preprocessa i dati con Pandas/Numpy.
  • Salva i risultati come CSV o endpoint API.
  • Carica i dati processati in Tableau.

Queste estensioni si attivano dalla pagina Sheets della tua cartella di lavoro Tableau. Con queste estensioni inserisci l’intero script usando la TabPy Extension. Lo script viene quindi eseguito sull’intero dataset, permettendoti di pre-processare tutti i dati in una volta anziché a livello di riga. Spesso questo genera come output una tabella separata.

Table Extension feature available at the bottom of Sheets page 

Funzionalità Table Extension disponibile in fondo alla pagina Sheets. (Dalla documentazione di Tableau)

3. Endpoint di modelli distribuiti

Il metodo finale è tra i più potenti. Ospitiamo un modello usando il server TabPy per eseguire uno script. Poi richiamiamo questo script in Tableau quando vogliamo eseguire quel modello su un particolare set di dati.

Esempio: distribuire un modello su TabPy

Il primo passaggio è creare un file che verrà distribuito da TabPy. Dopo aver avviato il server TabPy (seguendo i passaggi sopra), puoi usarlo per eseguire il tuo script Python. Una volta distribuito lo script Python, lo chiameremo in Tableau usando 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)

Chiamata script da Tableau:

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

Tecniche di ottimizzazione delle prestazioni

Come quando eseguiamo script Python al di fuori di Tableau, dobbiamo fare attenzione alle prestazioni. Ci sono alcune considerazioni particolari quando si eseguono dati in Tableau.

  1. Elaborazione a lotti: riduci il numero di chiamate processando i dati in blocchi. Spesso è utile processare l’intero dataset in una volta sola, invece che quando viene richiamato da Tableau.
  2. Caching dei risultati: metti in cache i risultati statici usando le impostazioni di caching di Tableau.
  3. Vettorizzazione: usa operazioni NumPy/Pandas invece dei loop per un’esecuzione più rapida. Spesso queste vettorizzano i calcoli matematici rendendoli molto più efficienti.

Se usi Tableau Server, puoi ottimizzare ulteriormente con il connection pooling. Il connection pooling, in generale, è l’idea di mantenere connessioni persistenti con le fonti dati per ridurre l’overhead. 

Puoi fare lo stesso per le tue fonti dati e per TabPy per evitare che Tableau “riapra” la connessione a TabPy ogni volta che esegui uno script o un nuovo calcolo.

Casi d’uso analitici avanzati

Ora che abbiamo coperto le basi, puoi implementare analisi altamente personalizzate. Questi metodi prevedono la creazione di script più avanzati che interagiscono con il tuo dashboard in modi interessanti.

Analisi predittiva in tempo reale

Un ottimo modello consiste nel distribuire modelli di serie storiche (ad esempio ARIMA, Prophet) che si aggiornano con l’input dell’utente, proprio come in questa guida sulla distribuzione di funzioni e Prophet con TabPy. 

Una volta costruito il modello, puoi impacchettarlo in uno script distribuibile da TabPy. Quindi colleghiamo questo modello a Tableau usando la stessa funzione SCRIPT_REAL per chiamare il modello distribuito.

Caso d’uso: previsione delle vendite

  • Crea e addestra un modello Prophet in Python.
  • Distribuisci il modello su TabPy usando le vendite storiche come feature
  • Aggiorna le previsioni sulle vendite man mano che cambiano i filtri del dashboard.

Ora, se qualcuno modifica filtri come località, periodo o prodotto, Tableau genererà nuove previsioni in tempo reale con questi nuovi filtri.

Sicurezza e governance

Dato che apriamo le connessioni a TabPy, è fondamentale seguire protocolli adeguati di sicurezza e governance. 

Protocolli di autenticazione

TabPy offre vari protocolli di autenticazione per aiutare gli utenti a restare al sicuro. I seguenti sono supportati e configurabili:

  • Autenticazione di base (username/password)
  • Autenticazione basata su certificato
  • OAuth2 con gestione sicura dei token (per uso enterprise avanzato)

La best practice è usare sempre HTTPS e token sicuri per le distribuzioni in produzione.

Misure di protezione dei dati

Quando colleghiamo Tableau e TabPy, dobbiamo assicurarci di seguire una corretta governance sulla protezione dei dati. Questo include garantire che i dati fluiscano attraverso i canali di connessione corretti e non possano usare altre porte, e che i dati siano sempre crittografati durante il trasferimento. Ecco alcune best practice da seguire:

  • Crittografa la comunicazione tra Tableau e TabPy.
  • Usa regole del firewall e controlli di accesso.
  • Abilita l’audit logging su TabPy per la compliance. Aggiorna regolarmente i pacchetti Python per correggere vulnerabilità.

In definitiva, se la tua organizzazione deve rispettare determinati requisiti normativi, assicurati di continuare a seguire le loro best practice. Garantisci la conformità a GDPR e CCPR anonimizzando e tokenizzando i dati personali prima che vengano inviati a TabPy. Inoltre, usa archiviazione sicura per i risultati intermedi in Python per ridurre al minimo le fughe di dati.

Risoluzione dei problemi e debug

I problemi sono inevitabili, ma la maggior parte può essere risolta rapidamente.

Problemi comuni e soluzioni

Problema

Soluzione

Tableau non riesce a connettersi a TabPy

Controlla il firewall, conferma la porta (9004) e verifica che TabPy sia in esecuzione

Lo script restituisce valori NULL

Valida i tipi di input e controlla i log degli errori Python

Prestazioni lente

Ottimizza i dati inviati a Python, riduci la frequenza delle chiamate, usa il caching

Se dovessi avere problemi con il tuo codice, segui alcuni di questi passaggi di debug (validi per qualsiasi script):

  • Usa print() o logging negli script (i log di TabPy li mostrano).
  • Testa gli script Python al di fuori di Tableau usando Jupyter.
  • Controlla i log di Tableau in My Tableau Repository/Logs.

Conclusione

Integrare Python con Tableau sblocca potenza analitica avanzata direttamente nei tuoi dashboard visivi. Con TabPy puoi:

  • Eseguire calcoli complessi
  • Distribuire e interagire con modelli di ML
  • Estendere in modo significativo le funzionalità native di Tableau

Che tu stia eseguendo modelli statistici, processando dati testuali o visualizzando previsioni, Python porta una nuova dimensione di intelligenza ai dashboard Tableau.

Seguendo i passaggi descritti in questa guida, potrai sfruttare Python per analisi più approfondite, flessibili e interattive. Per maggiori informazioni su Tableau e le sue funzionalità, consulta le seguenti guide:

Run Python in Tableau FAQs

Posso usare Python con Tableau Public?

No. Tableau Public non supporta servizi esterni come TabPy. L’integrazione con Python è disponibile in Tableau Desktop (edizione Professional) e Tableau Server.

TabPy è sicuro per ambienti di produzione?

TabPy può essere messo in sicurezza per l’ambiente di produzione usando HTTPS, restrizioni del firewall, protocolli di autenticazione (basic, basata su certificato, OAuth2) e reverse proxy come NGINX. Tuttavia, sono necessarie configurazioni aggiuntive oltre al setup predefinito.

Come gestisce Tableau le prestazioni degli script Python nei dashboard?

Tableau invia i dati a TabPy e attende la risposta, il che può causare ritardi se gli script non sono ottimizzati. Per migliorare le prestazioni, usa tecniche come vettorizzazione, caching, elaborazione a lotti e minimizzazione dei dati inviati.

Posso usare ambienti virtuali con TabPy?

Sì. Puoi eseguire TabPy dentro un ambiente virtuale Python, che aiuta a isolare le dipendenze ed evitare conflitti. Attiva l’ambiente prima di avviare TabPy.

TabPy può restituire strutture dati complesse come JSON o dizionari?

No. TabPy deve restituire un elenco piatto o un array NumPy che Tableau possa interpretare. Strutture dati complesse come dizionari o JSON devono essere preprocessate in un elenco prima di essere restituite.

Tim Lu

Autore

Tim Lu

Sono una data scientist con esperienza in analisi spaziale, machine learning e pipeline dei dati. Ho lavorato con GCP, Hadoop, Hive, Snowflake, Airflow e altri processi di data science/engineering.

Argomenti

Correlato