Tableau is a commercial BI platform built around visual, drag-and-drop analysis. An analyst connects to a data source, drops fields onto rows, columns, and color shelves, and Tableau generates the query and the chart together. It spans desktop authoring (Tableau Desktop), a server tier for sharing (Tableau Server or the hosted Tableau Cloud), and a free read-only Tableau Public. For data engineers, the relevant questions are how Tableau queries your warehouse, how its extract format behaves, and how to publish governed data sources rather than letting every workbook define its own logic.

Live connections versus extracts

Tableau queries a source one of two ways. A live connection pushes a SQL query to the database on every interaction, so the dashboard reflects current data but each filter click hits the warehouse. An extract (a .hyper file) is a columnar snapshot Tableau stores and queries with its in-memory Hyper engine, which is fast and offloads the warehouse but is only as fresh as the last refresh. The choice drives both performance and warehouse cost.

AspectLive connectionExtract (.hyper)
FreshnessAlways currentAs of last refresh
Query targetSource warehouseHyper in-memory engine
Warehouse loadPer interactionOnly on refresh
Best forReal-time ops, frequent changesLarge dashboards, slow sources

Calculations and LOD expressions

Tableau's calculation language includes level-of-detail (LOD) expressions, which compute an aggregate at a dimensionality independent of the chart's. That solves the common problem where you want a per-customer total on a chart broken down by month:

// Total revenue per customer, regardless of the view's granularity
{ FIXED [Customer ID] : SUM([Amount]) }

// Use it to bucket customers into lifetime-value tiers
IF { FIXED [Customer ID] : SUM([Amount]) } > 10000 THEN "High"
ELSEIF { FIXED [Customer ID] : SUM([Amount]) } > 1000 THEN "Mid"
ELSE "Low" END

FIXED ignores the view's dimensions; INCLUDE and EXCLUDE adjust relative to them. Misunderstanding LOD scope is the most common source of "wrong total" bugs in Tableau workbooks.

Published data sources and governance

Left alone, every workbook embeds its own connection, calculations, and joins, and definitions drift across the org. The fix is a published data source: an analyst curates joins, field names, formats, and LOD calculations once, publishes it to the server, and other workbooks connect to that instead of the raw tables. Combined with row-level security (a user filter calculation applied at the data-source level) this gives Tableau a governance layer comparable to a semantic model, without code.

Frequently asked questions

What is a .hyper extract? A columnar, compressed snapshot of query results stored in a file and queried by Tableau's Hyper engine. Refresh it on a schedule via Tableau Server or the command line; between refreshes it is static.

When should I use a live connection instead? When freshness matters more than dashboard speed and your warehouse can absorb interactive query load - operational dashboards on ClickHouse or BigQuery, for instance.

How does Tableau compare to Power BI? Tableau leads on visual exploration depth and cross-database flexibility; Power BI is cheaper and tightly integrated with the Microsoft stack. Both support extracts and live connections.

Can I avoid duplicated logic across workbooks? Publish a governed data source with shared calculations and row-level security, and point workbooks at it rather than the raw tables.