finds.dev← search

// the find

tableau/TabPy

★ 1,649 · Python · MIT · updated Jun 2026

Execute Python code on the fly and display results in Tableau visualizations:

TabPy is a Python execution server that plugs into Tableau as an Analytics Extension, letting you write Python table calculations that run against a live server process. It's for Tableau users who want to run scikit-learn models, pandas transforms, or arbitrary Python logic inside Tableau's calculated fields without exporting data to a separate notebook.

Tableau officially supports and maintains it, which means it tracks Tableau's Analytics Extensions API and won't randomly break on Tableau Server upgrades. The dual-mode design — deploy named functions once and call them by name, or fire raw scripts inline — covers both the 'productionized model' and 'quick exploration' workflows. Integration test coverage is thorough: separate test files for SSL on/off × auth on/off combinations is exactly the kind of matrix most projects skip. The tabpy-tools client library makes deploying a Python function to the server a one-liner.

The default config ships with auth disabled and `TABPY_EVALUATE_ENABLE` on — the README buries a security warning about this but doesn't make it impossible to ignore, so plenty of corporate deployments will expose an unauthenticated remote code execution endpoint on their network. Execution is synchronous and stateless per-request with no built-in request queuing, so a slow pandas operation in one Tableau dashboard blocks every other request. The bundled example models (ANOVA, PCA, SentimentAnalysis) use dated patterns and haven't been meaningfully updated in years. Deployment story is still 'run this Python server somewhere and configure a host/port in Tableau Desktop' — there's no first-class Kubernetes or managed cloud path, and the Heroku deploy button points at a platform that's largely irrelevant now.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →