tableau-inspector (Python)
Local-first CLI that statically analyzes Tableau workbooks (.twb / .twbx) for common issues —
dev-only DB connections, hidden worksheets, unused calculations/parameters, duplicate calculations,
default filters, blank dashboard titles, missing captions, duplicate field aliases — before you
publish. Everything is parsed from the workbook's embedded XML.
An optional AI assistant (ask, explain, summarize, docs --ai) can explain calculations,
summarize dashboards, and answer questions in plain English. It sends only already-extracted
metadata (never raw XML) to a configured AI provider — a local Ollama instance by default, so
workbook metadata stays on your machine. The one exception is the Command Center AI Assistant's
/data command: when you ask it a question about data it just captured from a live dashboard,
that capture is sent with the question. Every other command makes no network calls at all.
This is a Python port of the Node.js tableau-inspector CLI, with the same functionality and
zero runtime dependencies (stdlib only) -- the AI provider layer is implemented with stdlib
urllib, so this holds even with the assistant enabled.
Install
pip install -e .
Quick start
# Lint a workbook for common publishing issues
tableau-inspector analyze workbook.twbx
# Generate a self-contained interactive HTML explorer (overview, lineage, calculations, health)
tableau-inspector explore workbook.twbx
# Trace what a field/calculation depends on and what depends on it
tableau-inspector lineage workbook.twbx --field "Customer Segment"
# Search fields, calculations, dashboards, worksheets, filters, parameters, and datasources
tableau-inspector search workbook.twbx "profit"
tableau-inspector search workbook.twbx "DATEDIFF" --formula
tableau-inspector search workbook.twbx "sales" --type field
# List every element (datasources, fields, calculations, parameters, worksheets, dashboards) as
# one flat table, with health/usage/publish/Git status per element
tableau-inspector inventory workbook.twbx
# Diff two versions of a workbook
tableau-inspector compare old.twbx new.twbx
# Ask a question about a workbook (requires a running Ollama instance)
tableau-inspector ask workbook.twbx "What does Profit Margin calculate?" --model llama3.1
# Explain a calculation, field, or dashboard in plain English -- runs a deterministic
# investigation (formula, dependencies, lineage, usage) before asking the AI to explain it
tableau-inspector explain workbook.twbx --calculation "Profit Margin" --model llama3.1
tableau-inspector explain workbook.twbx --field "Customer Segment" --model llama3.1
tableau-inspector explain workbook.twbx --dashboard "Executive Dashboard" --model llama3.1 --level quick
# Summarize a dashboard's purpose, contents, filters, parameters, and key calculations
tableau-inspector summarize workbook.twbx --dashboard "Executive Dashboard" --model llama3.1
# Generate documentation with AI-written summaries and calculation explanations woven in
tableau-inspector docs workbook.twbx --ai --model llama3.1
# Point any AI command at a local business-context file for domain knowledge (custom metric
# definitions, fiscal-calendar notes, etc.) -- read locally only, never uploaded or persisted
tableau-inspector explain workbook.twbx --calculation "Profit Margin" --model llama3.1 --context company-context.md
# Lint (analyze + check-filters + compare), then git commit and push a workbook change,
# with an AI-generated commit message
tableau-inspector push workbook.twb --model llama3.1
Every command also supports --json for machine-readable output, and analyze/compare support
--html for a shareable, self-contained HTML report.
AI assistant
ask/explain/summarize/docs --ai require a model name via --model, the
TABLEAU_INSPECTOR_AI_MODEL environment variable, or (for a non-default provider)
--provider/TABLEAU_INSPECTOR_AI_PROVIDER. The default provider is a local
Ollama instance at http://localhost:11434 (override with --ollama-host /
TABLEAU_INSPECTOR_OLLAMA_HOST). Start Ollama and pull a model before using these commands:
Every AI command also accepts --context <path> (or TABLEAU_INSPECTOR_CONTEXT_FILE) to inject
a local business-context file — .md, .txt, or .json, up to 20KB — as supplementary domain
knowledge in the AI prompt. It's read locally and sent only to the configured AI provider, never
uploaded or persisted, and it never overrides actual workbook metadata.
ollama serve
ollama pull llama3.1
The Command Center (tableau-inspector command-center) has an AI Assistant panel with /
commands (/search, /document, /formula, /perf, /data, /edit), exact item references,
command chaining, and short multi-message chats. See AI_ASSISTANT.md.
Documentation
See USAGE.md for the full command reference (every flag, exit codes, AI provider
setup, and example workflows), or run tableau-inspector --help / tableau-inspector <command> --help for the same option reference from the CLI itself.
License
MIT © Joshua Bowen
Metadata
Release files for tableau-inspector 0.22.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tableau_inspector-0.22.3.tar.gz | 784.8 kB | Without provenance | Details for tableau_inspector-0.22.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tableau_inspector-0.22.3-py3-none-any.whl | Python 3 | none | any | Details for tableau_inspector-0.22.3-py3-none-any.whl |
Total release size: 1.6 MB
Release files / tableau_inspector-0.22.3.tar.gz
| Download URL | tableau_inspector-0.22.3.tar.gz |
|---|---|
| Size | 784.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64aab7a683872201fffb2d8b254694038f88d06e7685413a86697a551e36d5f0
|
|
BLAKE2b-256 checksum How to use checksums |
94ba436f8e8dce28fdf23aa94beff69ebd18451c6f023fff29c29d25d918f942
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.7
|
Release files / tableau_inspector-0.22.3-py3-none-any.whl
| Download URL | tableau_inspector-0.22.3-py3-none-any.whl |
|---|---|
| Size | 830.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09fed49459625e34f536e8ebf2a9f0b58e1a7d702b52c754cf7d8d14b62d2183
|
|
BLAKE2b-256 checksum How to use checksums |
97101f85e7063f8ed5c6df784cc8c148f447aa5e12324a1aa28b266310f5cbb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.7
|
Security for tableau-inspector 0.22.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.