Visualizations and dashboards with ClickStack

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/use-cases/observability/clickstack/dashboards/index.md)

ClickStack supports visualizing events, with built-in support for charting in ClickStack UI (HyperDX). These charts can be added to dashboards for sharing with other users.

Visualizations can be created from traces, metrics, logs, or any user-defined wide event schemas.

## Creating visualizations[​](#creating-visualizations "Direct link to Creating visualizations")

The **Chart Explorer** interface in HyperDX allows you to visualize metrics, traces, and logs over time, making it easy to create quick visualizations for data analysis. This interface is also reused when creating dashboards. The following section walks through the process of creating a visualization using Chart Explorer.

Each visualization begins by selecting a **data source**, followed by a **metric**, with optional **filter expressions** and **group by** fields. Conceptually, visualizations in HyperDX map to a SQL `GROUP BY` query under the hood — you define metrics to aggregate across selected dimensions.

AI-powered chart generation

ClickStack also supports creating charts from natural language prompts using the [text-to-chart](/docs/use-cases/observability/clickstack/text-to-chart) feature. Describe what you want to see, and ClickStack generates the visualization automatically.

For example, you might chart the number of errors (`count()`) grouped by service name.

For the examples below, we use the remote dataset available at [sql.clickhouse.com](https://sql.clickhouse.com), described in the guide ["Remote Demo Dataset"](/docs/use-cases/observability/clickstack/getting-started/remote-demo-data). **You can also reproduce these examples by visiting [play-clickstack.clickhouse.com](https://play-clickstack.clickhouse.com).**

Navigate to Chart Explorer

### Navigate to Chart Explorer[​](#navigate-chart-explorer "Direct link to Navigate to Chart Explorer")

Select `Chart Explorer` from the left menu.

Create visualization

### Create visualization[​](#create-visualization "Direct link to Create visualization")

In the example below, we chart the average request duration over time per service name. This requires the user to specify a metric, a column (which can be a SQL expression), and an aggregation field.

Select the `Line/Bar` visualization type from the top menu, followed by the `Traces` (or `Demo Traces` if using [play-clickstack.clickhouse.com](https://play-clickstack.clickhouse.com)) dataset. Complete the following values:

- Metric: `Average`
- Column: `Duration/1000`
- Where: `<empty>`
- Group By: `ServiceName`
- Alias: `Average Time`

Note that you can filter events using either a SQL `WHERE` clause or Lucene syntax and set the time frame over which events should be visualized. Multiple series are also supported.

For example, filter by the service `frontend` by adding the filter `ServiceName:"frontend"`. Add a second series for the count of events over time with the alias `Count` by clicking `Add Series`.

Note

Visualizations can be created from any data source — metrics, traces, or logs. ClickStack treats all of these as wide events. Any **numeric column** can be charted over time, and **string**, **date**, or **numeric** columns can be used for groupings.

This unified approach allows you to build dashboards across telemetry types using a consistent, flexible model.

## Creating dashboards[​](#creating-dashboards "Direct link to Creating dashboards")

Dashboards provide a way to group related visualizations, enabling you to compare metrics and explore patterns side by side to identify potential root causes in your systems. These dashboards can be used for ad-hoc investigations or saved for ongoing monitoring.

Global filters can be applied at the dashboard level, automatically propagating to all visualizations within that dashboard. This allows for consistent drill-down across charts and simplifies correlation of events across services and telemetry types.

We create a dashboard with two visualizations below using the log and trace data sources. These steps can be reproduced on [play-clickstack.clickhouse.com](https://play-clickstack.clickhouse.com) or locally by connecting to the dataset hosted on [sql.clickhouse.com](https://sql.clickhouse.com), as described in the guide ["Remote Demo Dataset"](/docs/use-cases/observability/clickstack/getting-started/remote-demo-data).

Navigate to Dashboards

### Navigate to Dashboards[​](#navigate-dashboards "Direct link to Navigate to Dashboards")

Select `Dashboards` from the left menu. Then click `New Dashboard` to create a temporary or saved dashboard.

Create a visualization – average request time by service

### Create a visualization – average request time by service[​](#create-a-tile "Direct link to Create a visualization – average request time by service")

Select `Add New Tile` to open the visualization creation panel.

Select the `Line/Bar` visualization type from the top menu, followed by the `Traces` (or `Demo Traces` if using [play-clickstack.clickhouse.com](https://play-clickstack.clickhouse.com)) dataset. Complete the following values to create a chart showing the average request duration over time per service name:

- Chart Name: `Average duration by service`
- Metric: `Average`
- Column: `Duration/1000`
- Where: `<empty>`
- Group By: `ServiceName`
- Alias: `Average Time`

Click the **play** button before clicking `Save`.

Resize the visualization to occupy the full width of the dashboard.

Create a visualization – events over time by service

### Create a visualization – events over time by service[​](#create-a-tile-2 "Direct link to Create a visualization – events over time by service")

Select `Add New Tile` to open the visualization creation panel.

Select the `Line/Bar` visualization type from the top menu, followed by the `Logs` (or `Demo Logs` if using [play-clickstack.clickhouse.com](https://play-clickstack.clickhouse.com)) dataset. Complete the following values to create a chart showing the count of events over time per service name:

- Chart Name: `Event count by service`
- Metric: `Count of Events`
- Where: `<empty>`
- Group By: `ServiceName`
- Alias: `Count of events`

Click the **play** button before clicking `Save`.

Resize the visualization to occupy the full width of the dashboard.

Filter dashboard

### Filter dashboard[​](#filter-dashboards "Direct link to Filter dashboard")

Lucene or SQL filters, along with the time range, can be applied at the dashboard level and will automatically propagate to all visualizations.

To demonstrate, apply the Lucene filter `ServiceName:"frontend"` to the dashboard and modify the time window to cover the Last 3 hours. Note how the visualizations now reflect data only from the `frontend` service.

The dashboard will be auto-saved. To set the dashboard name, select the title and modify it before clicking `Save Name`.

## Dashboards - editing visualizations[​](#dashboards-editing-visualizations "Direct link to Dashboards - editing visualizations")

To remove, edit, or duplicate a visualization, hover over it and use the corresponding action buttons.

## Dashboard - Listing and search[​](#dashboard-listing-search "Direct link to Dashboard - Listing and search")

Dashboards are accessible on the dashboards page. They are organized by tag, with built-in search and filtering to quickly locate specific dashboards.

Dashboards can be favorited for easy access on the sidebar and at the top of the listing page. Favorites are individual to each user.

## Dashboards - tagging[​](#tagging "Direct link to Dashboards - tagging")

You can add tags to dashboards and saved searches to help organize them.
Tags provide a flexible way to categorize and filter based on your needs.

#### How tags work[​](#how-tags-work "Direct link to How tags work")