Skip to content

docs(clickstack): document table tile row-click drilldowns#6364

Open
alex-fedotyev wants to merge 6 commits into
mainfrom
docs/row-click-drilldowns
Open

docs(clickstack): document table tile row-click drilldowns#6364
alex-fedotyev wants to merge 6 commits into
mainfrom
docs/row-click-drilldowns

Conversation

@alex-fedotyev

@alex-fedotyev alex-fedotyev commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

A ClickStack table tile is often a catalog: one row per service, host, endpoint, or error group. A row-click action turns that catalog into an inspection workflow, you click a row and ClickStack carries the row's values through as filters, so the destination opens already scoped to that one item. The destination is either another dashboard or the underlying logs and traces in Search. The feature shipped but was undocumented, and the dashboards FAQ stated the opposite.

This adds the customer doc for it and corrects the FAQ.

Closes #6360.

What changed

  • New page docs/use-cases/observability/clickstack/dashboards/row-click-drilldowns.md, written catalog-first. It opens with the catalog-to-inspection pattern, then walks two worked use cases on the same catalog (a service inventory), then keeps the drawer mechanics as reference:
    • Inspect a service in its own dashboard (Dashboard action): a RED service inventory (Requests / Errors / P95 Duration) drills into a multi-view Service Detail dashboard.
    • Jump from a service to its traces (Search action): the same table pointed at Search, opening the spans for the clicked service.
    • Set up a row-click action + How the destination and filters resolve + Validation and limitations as reference below.
  • Fixed the dashboards FAQ "What drill-down capabilities are available?" list, which claimed dashboard-to-dashboard drill-downs are "not currently supported". Added the row-click capability with a link to the new page, and dropped the pre-existing em-dashes from the lists in the sections I touched.
  • Added the new page to the dashboards sidebar group, after sql-visualizations.
  • Four dark-theme, full-width screenshots: the RED inventory catalog, the multi-view detail landing (with the Service filter set to the clicked service), the Search landing, and the Row Click Action drawer.

Use cases covered

  • Drill from a RED service inventory into a per-service detail dashboard, scoped to the clicked row.
  • Drill from a table row into the Search page for the row's logs or traces, scoped to the clicked row.

Behaviour reference

I read the implementing PRs in hyperdxio/hyperdx for the exact behaviour (the two action types, the source-kind restrictions, name resolution and uniqueness, filter templating, and the map-attribute alias gotcha): hyperdxio/hyperdx#2146 (row-click links and the Row Click Action drawer) and hyperdxio/hyperdx#2321 (hover hint and native link affordance). The inventory and detail dashboards follow the shapes in the ClickStack dashboard MCP examples. Every product-behaviour claim on the page traces to that, and I confirmed each one against the live product.

Test plan

  • Docs build compiles; the new page renders, headings resolve, all cross-links and internal anchors resolve.
  • prose-lint (docs mode) clean on both changed docs.
  • Live UX walkthrough on the demo, dark theme. I built both worked examples end to end:
    • A RED service inventory table, wired the Dashboard drilldown (Template Service Detail + a ServiceName filter), clicked a row, and confirmed the multi-view Service Detail dashboard opened with its Service filter set to the clicked service and every tile scoped to it.
    • Pointed the same table at Search, clicked a row, and confirmed it opened the Search page on the traces source filtered to the clicked service.
    • Confirmed the Search target source list is restricted to log and trace sources (metric and session sources are not offered).
  • Four dark-theme, full-width screenshots captured and embedded.
  • Vercel preview build for a final visual read.

One correction came out of the walkthrough: with a template target the hover hint reads Open dashboard (it cannot show the resolved name), not Open dashboard "Service Detail". The page matches what the product shows.

Keeping this as a draft pending the Vercel preview. Happy to mark it ready on request.

Follow-up

The ClickStack MCP server is still undocumented here; tracked in #6361.


Note

Low Risk
Documentation-only changes with no runtime or product behavior impact.

Overview
Adds customer documentation for table tile row-click drilldowns and fixes the ClickStack FAQ, which incorrectly stated that dashboard-to-dashboard drill-downs are not supported.

The new guide row-click-drilldowns.md explains turning catalog-style tables into inspection workflows: row values flow into filters on Search or another dashboard. It walks through a RED service-inventory example (drill to a Service Detail dashboard vs. traces in Search), then documents the Row Click Action drawer (Default / Search / Dashboard), Handlebars templating, resolution rules, and limitations (table tiles only, log/trace Search targets, unique template names, dashboard custom-filter matching, expression group-by aliases). Four screenshots are referenced from static assets.

The FAQ What drill-down capabilities are available? section now links to the new page and describes multi-level catalog → detail-dashboard flows; the old “not currently supported” note for custom dashboard-to-dashboard drill-down is removed. Touched FAQ lists use colons instead of em-dashes for consistency. The page is registered in the ClickStack Dashboards sidebar after sql-visualizations.

Reviewed by Cursor Bugbot for commit 96825ab. Bugbot is set up for automated code reviews on this repo. Configure here.

Add a page covering the table tile row-click action: the Search and
Dashboard drilldowns, how to configure them from the Row Click Action
drawer, how the destination and filters resolve from the clicked row,
and a worked service-inventory to service-detail example.

Correct the dashboards FAQ, which stated that dashboard-to-dashboard
drill-downs are not supported, and drop the em-dashes from that
section's lists.

Add the new page to the dashboards sidebar group.
@vercel

vercel Bot commented Jun 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clickhouse-docs Ready Ready Preview Jun 9, 2026 10:16pm
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
clickhouse-docs-ko Ignored Ignored Preview Jun 9, 2026 10:16pm
clickhouse-docs-ru Ignored Ignored Preview Jun 9, 2026 10:16pm
clickhouse-docs-zh Ignored Ignored Preview Jun 9, 2026 10:16pm

Request Review

… copy

Replace the two image placeholders with dark-theme screenshots captured
on the demo: the Row Click Action drawer in Dashboard mode, and the
Service Detail dashboard after a row click with the Service Name filter
populated to the clicked service.

Correct the hover-hint copy: with a template target the hint reads
"Open dashboard", without the resolved dashboard name.
Lead with two worked use cases: a service inventory that drills into a
per-service detail dashboard, and a service that drills into its traces
in Search. Move the drawer mechanics into a reference section below the
use cases, so the page opens with what the reader wants to accomplish.

Add a third screenshot showing the Search landing after a row click.
…view detail screenshots

Foreground the catalog concept in the narrative: a table tile is a
catalog you scan, then click a row to inspect one item. Recapture the
screenshots to match. The service inventory is now a RED table
(Requests / Errors / P95 Duration), and the Service Detail landing is
a multi-view dashboard (RED key figures, latency percentiles, request
rate, per-endpoint breakdown) with the Service filter clearly set to
the clicked service.
…lay setting

Turn on "Display Group By Columns on Left" for the inventory and endpoints
tables so the group-by column (ServiceName, SpanName) leads, which reads as
a catalog. Recapture both table screenshots, and add a tip documenting the
Display Settings toggle.

### Wire up the row click {#wire-dashboard}

On the inventory table, open **Row Click Action**, select **Dashboard**, and choose **Template** with the value `Service Detail`. Add one filter:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They should probably choose Service Detail directly instead of Template - it's less fragile, works better for import/export, and template isn't required since it's just a hardcoded single dashboard.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call. The worked example now picks Service Detail directly from the dashboard list instead of a Template target. I added a line on why: a direct pick is pinned by ID, so it survives renames and dashboard export/import, and it pre-fills the destination's declared filters. The reference section now frames Template as the per-row option. Fixed in 96825ab.

- **Search targets must be log or trace sources.** Metric and session sources are not offered, and are rejected if set through the API.
- **Template names must be unique.** A template target resolves by name, so two sources or two dashboards with the same name cannot be used as a template target.
- **Dashboard targets need a matching declared filter** for a carried value to take effect (see the note above).
- **Map-attribute group-by needs a SQL alias.** A chart-builder group-by on a map attribute such as `SpanAttributes['http.route']` produces a result column whose name is the raw expression, which cannot be referenced as `{{...}}` in a template. To drill down from such a column, author the tile as a [SQL-based](/use-cases/observability/clickstack/dashboards/sql-visualizations) table and give the column an explicit `AS` alias, then reference that alias in the template. A group-by on a plain column such as `ServiceName` needs no alias.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SQL should not be necessary, we can set aliases using the chart builder as well, either a per series alias or GROUP BY ... AS ... in the group by input

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Removed the SQL-tile instruction. The bullet now says to alias the column in the chart builder: add AS <alias> in the Group By input (for example SpanAttributes['http.route'] AS Route), or use the per-series Alias field, then reference {{Route}}. Fixed in 96825ab.

## Validation and limitations {#validation}

- **Table tiles only.** The **Row Click Action** button appears for table tiles, both the chart-builder table and a [SQL-based](/use-cases/observability/clickstack/dashboards/sql-visualizations) table. Other tile types do not have a row-click action.
- **Search targets must be log or trace sources.** Metric and session sources are not offered, and are rejected if set through the API.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Search targets must be log or trace sources.** Metric and session sources are not offered, and are rejected if set through the API.
- **Search targets must be log or trace sources.** Metric and session sources are not offered, since they cannot be viewed on the search page.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied in 96825ab.

- Pick the Service Detail dashboard directly (pinned by ID) in the worked
  example instead of a Template target, and explain when Template is the
  right choice (per-row destinations).
- Note that group-by columns can be aliased in the chart builder, so a
  map-attribute drilldown does not require a SQL tile.
- Add a callout that filter templates reference the table's own columns
  (which may be aliases), not the underlying source's columns.
- Reword the search-target limitation around what the search page can show.
- Re-shoot the Row Click Action drawer screenshot to show the direct
  dashboard pick and the pre-filled ServiceName filter.
@alex-fedotyev

Copy link
Copy Markdown
Contributor Author

Thanks for the review, pushed 96825ab with the three inline points addressed. I also covered the broader point about what the templates reference: there is now a callout in the setup section noting that {{...}} resolves against the table tile's own columns (the group-by columns and each series by its name or alias, as shown in the table), not the columns of the underlying source, so a value has to be a column in the table to be carried through a click. The map-attribute note now reads as a consequence of that.

I re-shot the Row Click Action drawer screenshot to show the direct Service Detail pick and the pre-filled ServiceName filter, and re-checked the flow on the demo. Keeping it a draft until the preview build is green.

@alex-fedotyev alex-fedotyev marked this pull request as ready for review June 9, 2026 23:55
@alex-fedotyev alex-fedotyev requested a review from a team as a code owner June 9, 2026 23:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Document table tile row-click drilldowns in ClickStack dashboards

2 participants