Skip to content

Chart builder

Build 16 chart types from any dataset — columns with aggregations or governed catalog measures, per-measure filters, table calculations, and ML overlays.

The chart builder turns a dataset into a visualization without writing SQL: pick a chart type, drop columns onto measures and dimensions, and generate. Everything a chart needs — measures, filters, styling, annotations — lives in one saved config, so a chart you build once can be reopened, edited, and reused everywhere.

Build a chart

Pick a dataset, pick a chart type, then choose an X axis — for timestamps, a time grain buckets values anywhere from second to year. Add one or more measures, optionally split them by a dimension, and generate.

Chart-level filters narrow the data before aggregation, with operators from equals and ranges through in/like to relative date presets (“last 30 days”). Beyond the data itself, charts carry styling (palettes, dual axis, log scale), legends, trendlines, and annotations — date markers, shaded date regions, and horizontal reference lines or bands.

Chart builder with measures, dimensions and config panel

ML overlays add a computed layer on top of the series: forecast, regression, anomaly detection, or clustering.

Chart with a forecast overlay

Chart types

There are 16 chart types:

TypeWhat it shows
lineValues over a continuous axis, usually time
areaA line chart with the region under it filled
comboLine and bar series mixed in one chart — each measure picks its type
barCategorical comparison — vertical or horizontal, stackable
scatterThe relationship between two numeric columns, with optional grouping
pieShare of a whole
doughnutPie with a center total — the total is a server-computed grand aggregate, never a sum of the visible slices
funnelStep-by-step drop-off through an event sequence, with an optional conversion time window
kpiOne headline number, with optional comparison indicator and sparkline
gaugeA value against a min–max range with colored zones
progressA value against a goal
tableRows with grouping, totals, conditional formatting, heatmap columns, and a pivot column
boxplotDistribution per category, with optional outliers
radarSeveral values compared across axes on a circular grid
mapGeographic data — three sub-types below
ai_textA narrative text card whose numbers are engine-computed measure values — exact numbers, never model-generated prose

Maps come in three sub-types: choropleth colors countries or subdivisions from a location column; bubble places sized points at latitude/longitude coordinates; heatmap shows point density with configurable intensity and radius. Ten color scales and light, dark, and voyager base styles are built in.

AI text cards render a template whose {name} references resolve to measures — each one a column plus aggregation or a governed catalog metric, computed by the query engine. The model shapes the sentence around the numbers; it never invents them.

Measures & aggregations

A measure is a column plus an aggregation — or a governed catalog measure picked by name, so the definition stays consistent across every chart that uses it. Available aggregations: SUM, AVG, COUNT, COUNT_DISTINCT, MIN, MAX, MEDIAN, STDDEV, STDDEV_POP, VARIANCE, VAR_POP, APPROX_DISTINCT, APPROX_MEDIAN — or no aggregation at all to plot raw values.

Each measure can carry its own inline filters, compiled server-side to AGG(...) FILTER (WHERE ...) — so one measure counts completed orders while the one next to it counts all orders, on the same chart, in one query. Dimensions split a measure into one series per value; per-series you can set a color, an alias, and on combo charts whether the series draws as a line or bars.

Retention and conversion measures — governed from the catalog or defined inline on the chart — take over the render: retention draws cohort grids, conversion draws step funnels and trends. See Product analytics.

Table calculations

A table calculation transforms a series after aggregation — the query stays the same, the display changes:

CalculationResult
pct_of_totalEach point as a percentage of the series total
running_totalCumulative sum up to each point
differenceChange from the previous point
pct_differencePercent change from the previous point
pct_fromEach point as a percentage of the first point
rankRank by value, 1 = highest
percentilePercentile rank, 0–100
moving_avgMoving average over a configurable window (default 3 points)

Calculations run per series — a dimension-split chart computes each series independently — and on table charts a measure can also partition its calculation by a column, so a running total or moving average restarts per group instead of running across the whole result. When every measure on a chart produces percentages, the Y axis formats as % automatically.

Save & reuse

Saving a chart stores its full config in the catalog; reopening it restores the builder exactly as you left it. Saved charts are the unit everything downstream works on: dashboards arrange them, threshold alerts watch them, scheduled deliveries snapshot them, and embeds publish them outside the app.