# Hypertable

> A fast, interactive, formatted data table. A Tableau viz extension in the TableauOps kit, hosted on your own dashboards.

Canonical: https://ext.tableauops.com/knowledge/kit/hypertable
Updated: 2026-09-18
Author: Eric Summers

A full-featured **data table** mark. Drop any dimensions and measures onto the **Columns**
tile on the Marks card and every field becomes a table column, bound to the worksheet so it
travels with it.

> Shared viz-extension techniques (reading encodings, live updates, the configure gear,
> selection → dashboard actions) live globally in
> [`reference/viz-extensions.md`](../reference/viz-extensions.md). This file covers only
> what's specific to Hypertable.
>
> A data table is the one viz where **internal vertical scrolling is correct**, the *pane*
> never scrolls (toolbar, header, and totals footer stay fixed); only the row area scrolls,
> and it's **row-virtualized** so tens of thousands of rows stay smooth.

## Everything it does
- **Multi-column sort**, click a header to cycle desc → asc → off; **Shift-click** to add
  columns to the sort (priority numbers show the order).
- **Search**, instant substring filter across visible columns, with a live "N of M rows" count.
- **Columns**, **drag to reorder**, **drag the right edge to resize**, and a **Columns** popover
  to show/hide any field (and reset order).
- **Per-type formatting**, numbers right-aligned with tabular figures, abbreviation + decimals
  (configurable); dates and text left-aligned; long text truncates with a hover tooltip.
- **In-cell visuals**, **data bars** and/or **heat background** on measure cells (share of the
  column's range), configurable.
- **Totals footer**, sticky bottom row with **sum / avg / min / max / count** per measure
  (recomputes over the filtered view).
- **Frozen first column** (optional), zebra striping, gridlines, and **compact / comfortable**
  density.
- **Row selection → dashboard actions**, click to select (Ctrl/Cmd to toggle, **Shift** for a
  range); the matching worksheet marks are selected so filter/highlight **actions** fire.
- **CSV export** of the current (filtered + sorted) view.
- Safety cap at 50,000 rows with an on-screen note (never silently truncates).

## Encodings (Marks card)
| Tile | Required | Accepts |
|------|----------|---------|
| **Columns** | yes | **any** dimensions and measures (up to 25), each becomes a column; field types drive alignment, bars/heat, and totals |

For row selection to filter the dashboard, include at least one **dimension** (it identifies
the marks). A measures-only table still renders; it just can't push a selection.

## Configure (the ⚙ gear, top-right)
Density, measure-cell style (plain / bars / heat / both), striping, gridlines, freeze first
column, search box, decimals, abbreviate large numbers, totals row + aggregation, and the
dashboard-interaction toggle. All persisted in the workbook.

## Run it locally
From the repo root: `python scripts/kitserve.py` (serves every extension on 8765).
It answers on both IPv4 and IPv6 and resolves `lib/` to `_shared/lib`; a plain
`python -m http.server` does neither, which is what makes a local extension load
as a blank or errored zone.

In Tableau, on a worksheet’s **Marks card** → mark-type dropdown → **Add Extension… → Access Local Extensions** →
`hypertable/manifest.local.trex`. Drag a few fields onto **Columns** (try Sample - Superstore:
Order ID, Customer Name, Category, Sales, Profit, Order Date).

Reload after `.html/.js/.css` edits (right-click → **Reload**). For **any `.trex` change**,
**remove and re-add** the extension.

## Get it

Hypertable ships in the Extension Kit ($59). See it live on the [demo gallery](/kit/demo/hypertable).


---
Try it live: See it live — https://ext.tableauops.com/kit/demo/hypertable
