From 39528063a8d04cc44a1bca5bc3165089209f3bd7 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 16 Sep 2026 14:24:19 +0000 Subject: [PATCH] docs(analytics): name the reference dimension class instead of listing two of its four members `REFERENCE_VALUE_TYPES` is one class -- `lookup`, `master_detail`, `user`, `tree` -- and all four store a related record's id and resolve to that record's display name. Two authored pages enumerated only `lookup` / `master_detail`, so a reader asking whether a person axis renders a name read "no" off the enumeration. Name the class in both sentences rather than growing the enumeration by two: a prose list that mirrors a `const` is a second copy that drifts the next time the set moves. Claude-Session: https://claude.ai/code/session_017ef78bLdybu3AffehKkhfk Co-authored-by: Claude --- content/docs/data-modeling/analytics.mdx | 3 ++- content/docs/ui/dashboards.mdx | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/content/docs/data-modeling/analytics.mdx b/content/docs/data-modeling/analytics.mdx index 256bc322969..878e17cfb15 100644 --- a/content/docs/data-modeling/analytics.mdx +++ b/content/docs/data-modeling/analytics.mdx @@ -208,7 +208,8 @@ The query result is presentation-ready — authors do not format dimension or measure values by hand: - **Dimensions** — a `select` dimension returns its option **label** (not the - stored value), a `lookup` / `master_detail` dimension returns the related + stored value), a **reference** dimension (any field whose stored value is + another record's id, a `user` person axis included) returns the related record's **display name** (not the FK id), and a `date` dimension with a `dateGranularity` returns a human bucket label (`month` → `2026-04`, `quarter` → `2026-Q2`, `year` → `2026`). Unresolved values pass through diff --git a/content/docs/ui/dashboards.mdx b/content/docs/ui/dashboards.mdx index 43eccaafa8f..3bec1b53925 100644 --- a/content/docs/ui/dashboards.mdx +++ b/content/docs/ui/dashboards.mdx @@ -143,11 +143,13 @@ Notes on behaviour: truncates a reproducible window instead of an arbitrary subset. - Ordering is applied to the finished grid, so a **derived measure** is a valid `sortBy` even though no single SQL statement computes it. -- A `sortBy` naming a **select** or **lookup** dimension orders by the +- A `sortBy` naming a **select** or **reference** dimension orders by the **display label** the rows render (the option label / the related record's name), not the stored value or foreign-key id — and the label is resolved - before `limit` applies, so a top-N by name truncates the right N. Sorting by - a measure (the common case) involves no label lookup and is unaffected. + before `limit` applies, so a top-N by name truncates the right N. + **Reference** is the whole class of fields whose stored value is another + record's id, so a `user` person axis sorts by name too. Sorting by a measure + (the common case) involves no label lookup and is unaffected. - A `funnel` with no declared stage order falls back to sorting by value descending.