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.
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 type | What 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 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
jsoncolumn, Pretty or Compact; for atablecolumn (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 tojsonand 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 momentmetadataholds 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.
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