CHOMPER WIKI

Panel types

Every panel on a Chomper dashboard is SQL-backed: you write the ClickHouse query yourself, and the panel turns its result into a specific kind of chart. There are five panel types — Time series, Pie, Gauge, Geo heatmap, and Table — and this section covers all of them.

Three pieces of functionality are shared by every SQL-backed panel type, so they're documented once here instead of five times over: how a panel is titled and annotated, how a chart point can drill down into the exact rows behind it, and how a query's raw output columns get turned into something readable.

The five panel types

  • Time series (SQL) — a line or stacked-area chart of counts over the dashboard's time range.
  • Pie / donut (SQL) — one dimension broken into slices, sized by count.
  • Gauge (SQL) — a single number read against color-coded thresholds.
  • Geo heatmap (SQL) — coordinates plotted as a density map, with up to three color layers.
  • Table (SQL) — a query's raw rows — sortable, filterable, exportable.

Panel title and note

Every panel has a plain-text title in its header — leave it empty and the panel falls back to its type's name (e.g. “Time series (SQL)”) until you set one.

For anything longer than a title, every panel also has a Note: a small rich-text editor (bold, italic, underline, monospace, code blocks, links, images, bulleted lists) that acts as the panel's own description — what it measures, a caveat about the data, a link to a runbook. Once a note exists, a small sticky-note icon appears in the panel's header; hovering it — not clicking — shows the note without taking up any space on the dashboard itself.

The Note editor and a panel's Main panel options, open on the “Interactions by type” panel.

The Note editor and a panel's Main panel options, open on the “Interactions by type” panel.

Drilling down on a click

Every SQL-backed panel type except Table can carry a second, optional query — the drill-down query — that runs when you click something on the chart: a time-series point, a pie slice, a gauge zone, or a map cluster. It opens a dedicated, paginated table of exactly the rows behind whatever was clicked, both on the live dashboard and while editing.

What a click binds depends on the panel type:

Panel typeWhat a click binds
Time series{bucket:String} — the clicked point's time bucket
Pie{bucket:String} — the clicked slice's category
Gauge{thresholdFrom} / {thresholdTo} — the clicked zone's range
Geo heatmap{clusterLat} / {clusterLon} / {clusterRadiusKm} — the clicked cluster's center and radius

The dashboard's own time range — {from:String} / {to:String} — is always available too, the same as in the main query. Once you've written a main query but before you've configured a drill-down of your own, a Suggest query button drafts a starting drill-down query automatically, built around the one column your click is bound to.

The Drill options tab — where a drill-down query's own result columns get configured.

The Drill options tab — where a drill-down query's own result columns get configured.

The table that opens on click isn't a fixed, read-only view — its columns get the exact same rename / hide / filter-row / JSON-display configuration described below, applied to the drill-down query's own result instead of a Table panel's rows. See Column modifiers for a full walkthrough with screenshots.

Note. Table panels don't have a drill-down option — a table's rows already are the detail, so there's nothing further to drill into.

Shaping the result: column modifiers

Whatever a query returns — a Table panel's own rows, or a drill-down query's result — goes through the same column configuration: rename any column's label, override its auto-detected type (string / number / datetime / json / table), and open a per-column menu for the rest:

  • Hide column — removes it from the table without touching the underlying query.
  • Show filter row — adds a per-column filter under the header (a min/max pair for numbers, a date-range picker for datetimes, substring search for text).
  • Show as — for a json column, Pretty or Compact; for a table column (a JSON array), a nested table or the same JSON view.

A JSON object or array column always renders as a short summary chip — click it to open the parsed value in a popover, instead of dumping raw JSON text into the row. See Column modifiers for every option above with real screenshots, including the JSON Pretty/Compact and Table/Convenient-JSON display choices.

Worked example: cleaning up a drill-down result

Say a Time series panel's drill-down query returns four columns: bucket, event_class, reason, metadata. Straight out of the query, that's noisy — you already know which bucket you clicked, the raw column names don't read well, and metadata is a wall of JSON text. A few column tweaks fix all of that:

  • Open bucket's menu and choose Hide column — it repeats the point you just clicked, so it isn't worth a column of its own.
  • Rename event_class's label to “Channel” — the label field accepts any plain text, independent of the underlying SQL alias.
  • Turn on Show filter row for reason, so a long drill-down result can be narrowed by substring without leaving the panel.
  • Set metadata's type to json and its Show as to Pretty. Compact keeps the popover to one line — fine for a short object; Pretty indents nested objects and arrays onto their own lines, which is what you want the moment metadata holds more than two or three keys.

None of this touches the query itself — it's purely how the same result set is displayed, so it's safe to experiment with without breaking the underlying SQL.

Column configuration on the “Top customers” table panel, including a nested Purchases column.

Column configuration on the “Top customers” table panel, including a nested Purchases column.

Row highlight triggers

Below the column list, an optional set of rules tints an entire row a color when one of its columns matches a condition — a regex for text columns, a comparison (>, >=, <, <=, ==, !=) for numbers and dates. If more than one rule matches the same row, the first matching rule in the list wins.

Last updated 9 July 2026