Filter, group, aggregate, bucket, limit: the whole vocabulary a card is built from.
Every card on a board is a saved query plus a way of drawing it. The query has five parts and nothing else, so anything you can express in them you can put on a board.
| Part | What it does |
|---|---|
| Filter | Conditions on the five columns and on any attribute path. Several conditions are ANDed. No filter means no constraint, not nothing. |
| Group by | Zero or more columns or attribute paths. None gives one number; one gives a ranked breakdown. |
| Aggregate | Events, uniques, or a numeric aggregate over an attribute: sum, average or a percentile. |
| Time bucket | None for a single number, or a bucket width for a series. Always on time, never on arrival. |
| Limit | How many groups come back, so grouping by something high-cardinality stays readable. |
There is nothing to register and no schema to keep in step. The pickers list the attribute keys that have actually been written in the window you are looking at, with the conventional ones offered before your project has written anything.
A key nobody has sent yet is not an error. It is a filter that matches nothing, until the day you ship the build that starts sending it, and then the same card fills in. The same goes for a name: rows_exported works the moment you write it, without anybody adding it to a list first.
| Question | Query |
|---|---|
| Errors per day | severity at least ERROR · bucket by day · count events |
| Which pages people land on | name is page_view · group by url.path · count uniques · limit 20 |
| Slowest routes | name is http.request · group by http.route · p95 of firstrun.duration_ms |
| Which build is crashing | name is exception · group by service.version and exception.type · count events |
A unique is count(distinct coalesce(user.id, distinct_id)), scoped to one source. An identified client folds into its user; an anonymous one stands alone. Two sources are never linked, so a unique count filtered to one source is the only one that means anything.
The board templates are named queries with a chart already chosen: errors over time, pages by visitor, installs by version. Every one of them is editable, and none of them reaches a query you could not have built yourself. They exist so a new project has something on screen on day one, not to bound what you can ask.