Skip to content
Telemetry
Shared dashboards

Share SQL charts and event tables with your team

Build a dashboard from Explore results, SQL charts, and event tables. Add headings and notes to explain the numbers. You can also ask a coding agent to create the first version.

Outcomes

  • Share the same charts with engineering, product, support, and founders.
  • Put definitions and operating notes next to the charts they explain.
  • Create and update dashboards through the API.

How it works

How to set it up

1

Start with the main metric

Start with the metric your team checks most often. Add charts that help explain why it changed.

2

Show trends before breakdowns

Put trend and threshold views first, then add breakdowns and recent-event tables that explain a change.

3

Document ownership and response

Add notes explaining each metric and its expected range. Say who owns it and what to check when it changes.

Building a shared Telemetry dashboard

Arrange charts and edit a dashboard with your team.

Boundaries

What this does not replace

  • Agree on metric definitions before adding queries to a shared dashboard.
  • Keep each dashboard focused on a few related questions. Put unrelated charts on another dashboard.
  • Keep incident instructions and ownership documented. Use your financial reporting system for authoritative financial records.

Try the example

Read the schema, SQL, and sample result

This example includes the schema, read-only SQL, and synthetic results. Use it to check how the query works. It does not measure customer results.

1. Event schema

One row in api_requests, with the types used by the query made explicit.

timestamp_utc
Timestamp
route_template
Utf8
status_code
Int64
latency_ms
Float64
Browse event contracts

2. Read-only SQL

Which API routes have the highest 5xx error rate with at least 20 requests?

SELECT
  route_template,
  COUNT(*) AS requests,
  SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END) AS errors,
  100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS error_rate_pct
FROM api_requests
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY route_template
HAVING COUNT(*) >= 20
ORDER BY error_rate_pct DESC
LIMIT 10;

3. Synthetic result

Checkout failed on 5 of 25 requests. Search failed on 1 of 25.

route_templaterequestserrors
/api/checkout255
/api/search251
/api/profile200
Inspect query, result, and caveats

Capabilities

What is included

Explore and SQL query widgets
Line, bar, scatter, stacked-area, and table results
Section headings and markdown notes for context
Drag, resize, rename, and share team-scoped dashboards
Dashboard create, update, list, and delete API

See the analysis

SQL recipes that use this capability

Customer evidence

How teams use this workflow

Related capabilities

Related guides and examples

Start with one production workflow

Use a focused prompt, send synthetic events, and verify the first useful query before expanding coverage.