> For the complete documentation index, see [llms.txt](https://docs.soda.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.soda.io/soda-cloud-dashboards/customize-a-dashboard.md).

# Customize a dashboard

Duplicate a default view or start from a blank board, then build tiles that group your data quality results the way your organization is actually structured.

{% hint style="info" %}
Dashboard views are currently available as a [**public beta** feature](/reference/documentation-access-and-licensing/release-stages.md#public-beta) so [**tell us what's missing**](mailto:support@soda.io).
{% endhint %}

The three default views answer questions most organizations share. A **custom view answers the ones only you have**: how quality looks per data domain, whether the contract rollout is landing in the schemas that matter, which class of check keeps failing, how much of your coverage comes from data standards rather than hand-written checks.

Custom views are built from the **same tiles** as the defaults. Nothing here is a separate feature or a different query language. You **pick a measure**, choose **how to break it down**, and **pick a shape** to draw it in.

{% hint style="warning" %}
During [public beta](/reference/documentation-access-and-licensing/release-stages.md#public-beta), dashboards are not customizable via [Soda AI](/soda-ai.md).
{% endhint %}

## Create and customize your own dashboard

You can create a full **dashboard from scratch** from the **Dashboards** page, or duplicate and edit an existing one.

{% stepper %}
{% step %}
Select **+** beside the view selector in the top right

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FitCISAoTZ6msEWTwFCzq%2Fimage.png?alt=media&amp;token=e6c1c3cf-5bd9-43fe-87a1-94362fb929a6" alt=""><figcaption></figcaption></figure>

Choose one of two starting points:

* **Duplicate Current View** copies the board you are looking at, tiles and filters included. This is the faster route in most cases. Duplicating **Executive overview** and regrouping two of its tiles by your own attributes gets you a domain-level board in a couple of minutes.
* **Start Blank View** gives you an empty board that you can fully customize and tailor to your needs.

Either way you land in **edit mode:**

Select **Edit** to change a view, and **Done** to leave. Nothing saves while you are in view mode, and nothing is hidden while you are in edit mode.

Edit mode adds four things:

* **+ Add tile** in the header
* **+ Add filter** on the filter row
* A configure, duplicate, and delete control on each tile
* A drag handle in the bottom right corner of each tile for resizing
  {% endstep %}

{% step %}
**Name your dashboard**

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FwTEW0u5WifqZ5wMZpOSW%2Fimage.png?alt=media&amp;token=43a47204-f83a-4430-82a9-89667bd5a568" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Add filters** to tailor the whole board to your needs

The filter row applies to every tile on the board at once. Data source and dataset filters are there by default, and **+ Add filter** in edit mode adds more (e.g. **Dataset attributes**).

This is what makes one well-built view serve several use cases. A board grouped by check type, filtered to a single data domain, is that domain's board. Change the filter and it is another domain's board, with no tile rebuilt.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2F0XFrcVyHMI1Ta2jn7ghd%2Fimage.png?alt=media&amp;token=32e100e8-7ce6-4e00-b646-0a66a43bd72a" alt="" width="448"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click **Add tile** to start adding plots

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FlZ4KVq0frcQe86fc2H4n%2Fimage.png?alt=media&amp;token=1b0a7d8f-a9f1-48cd-82f7-64ab43f08e4d" alt=""><figcaption></figcaption></figure>

{% stepper %}
{% step %}
Pick a **visualization**

Four shapes sit across the top of the tile editor: **number**, **line**, **bar**, and **donut**. The choice is not only cosmetic, because it changes which options the rest of the panel offers, and it changes what the tile measures.

> Learn more about [visualization types](#visualization-types).
> {% endstep %}

{% step %}
Pick a **measure**

Each measure carries a one-line description of what it counts, and counts are marked apart from percentages, so it is worth reading before you commit. Coverage and DQ Health Score are ratios and behave differently from the counts around them.

> Learn more about [metrics](#metrics).
> {% endstep %}

{% step %}
Choose **how to group it**

**Group by** is the breakdown that gives the tile its meaning. The options depend on the measure you selected, because not every breakdown makes sense for every measure. For example, datasets can be grouped by onboarding status, by whether a contract exists, and by whether monitors are attached. Scans can be grouped by scan status. Checks can be grouped by check type and by where the check came from.

Three categories appear for most measures:

* **Structure** groups by data source, schema, or dataset
* **Attributes** groups by the dataset and check attributes your organization maintains, such as data domain, data product, owner, or data quality dimension
* **Time** plots the measure across the selected period

The attribute list is scoped to the measure. A dataset measure offers dataset attributes, a check measure offers check attributes, so the same board can carry one tile grouped by data domain and another grouped by check severity.

Select **Show as % of total** to convert the tile from absolute counts to shares. Useful when the absolute numbers are large enough to obscure the proportion, which is most of the time on a real estate.
{% endstep %}

{% step %}
Add a **second breakdown**

**Then by** splits each group again.

For example, grouping checks by **schema** and then by **check outcome** gives you passed, warned, and failed within every schema, rather than one bar per schema and no idea what is inside it.

The **second breakdown** draws from the same categories as the first, so you can cross **structure** with **attributes**: checks by data domain, then by data source, shows whether a domain's problems are concentrated in one system, for example.
{% endstep %}

{% step %}
Choose **stacked** or **grouped**

When a second breakdown applies, a **Bars** toggle appears with **Stacked** and **Grouped**.

Stacked puts the segments end to end in one bar, which keeps the total readable and shows composition. Grouped puts them side by side, which makes the individual values easier to compare and the total harder to see. Pick stacked when the question is "what is this made of" and grouped when it is "which of these is bigger".
{% endstep %}

{% step %}
**Name** the tile and **add** it

Write a **title** and a **description**. The description sits under the title on the board and is the right place for the question the tile answers, which is the pattern the default views follow: "Which sources need attention first?" rather than a restatement of the title.

Select **Add tile**. The **preview** on the left has been showing **real data** throughout, so what you saw is what lands on the board.
{% endstep %}
{% endstepper %}
{% endstep %}

{% step %}
**Configure**, **duplicate**, or **delete** each tile from its top right corner

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FFLtbqUsG6dQPDTC0eYJe%2Fimage.png?alt=media&amp;token=d750d945-1f0b-4598-89e1-6c1d9ee1d951" alt="" width="527"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Drag** or **resize** tiles from the bottom right corner

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2F8LXxZLAoIT1Eusm2hAWu%2Fimage.png?alt=media&amp;token=7c53515f-4827-4792-8167-181cfe1790e5" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

***

## Tile components

### Metrics

Every tile includes a plot that can follow one of ten metrics:

<table><thead><tr><th width="177.5">Metric</th><th>What it tells you</th><th>Who is it for?</th></tr></thead><tbody><tr><td><strong>DQ Health Score</strong></td><td>Share of checks passing</td><td><strong>Leadership</strong>: is quality improving?</td></tr><tr><td><strong>Coverage</strong></td><td>Datasets under a check or a monitor</td><td><strong>Leadership</strong>: is more data being monitored?</td></tr><tr><td><strong>Checks</strong></td><td>How many ran, and how they landed</td><td><strong>Data teams</strong>: what ran?</td></tr><tr><td><strong>Rows tested</strong></td><td>How many rows those checks evaluated</td><td><strong>Data teams</strong>: what ran?</td></tr><tr><td><strong>Datasets</strong></td><td>How many datasets Soda is watching</td><td><strong>Data teams</strong></td></tr><tr><td><strong>Data sources</strong></td><td>How many sources are connected</td><td><strong>Data teams</strong></td></tr><tr><td><strong>Contracts</strong></td><td>How many datasets have one</td><td><strong>Leadership</strong>: how much data is behind an agreement?</td></tr><tr><td><strong>Monitors</strong></td><td>Metric monitors in place</td><td><strong>Data teams</strong>: what is watching?</td></tr><tr><td><strong>Anomalies</strong></td><td>What those monitors flagged</td><td><strong>Data teams</strong>: what flagged?</td></tr><tr><td><strong>Scans</strong></td><td>How many runs happened</td><td><strong>Data teams</strong></td></tr></tbody></table>

You can **group** any of them by data source, schema, dataset, check type, check source, outcome, monitor type, onboarding status, or by whether a dataset has a contract or a monitor. Or by any of your own dataset and check attributes: domain, data product, owner, data quality dimension, etc.

> How each score is calculated, and why the dashboard score can differ from the one on a dataset's Checks tab: [Soda Cloud dashboards](/soda-cloud-dashboards.md#definitions-of-tile-metrics)

### Visualization types

Once you've picked a metric, you can pick how it looks depending on what you need to visualize.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><h4>Number</h4></td><td>One figure, with its change against the previous period. Put your health score or your open anomaly count at the top of a board and read it in a second.</td><td><a href="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2Fzf6qVDKVfT6OT4usCDrw%2Fimage.png?alt=media&amp;token=43fd7ceb-cfbb-45da-9ba4-3b1ec5020180">customize_dashboard_number_visualization.png</a></td></tr><tr><td><h4>Line</h4></td><td><p>A metric <strong>over time</strong>. Set the range to the last 7, 30, or 90 days.</p><p>You can add a breakdown to get one line per group, so you can see which domains are improving and which are sliding.</p></td><td><a href="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FH6ZonfVVqP9c4Pj6k92M%2Fimage.png?alt=media&amp;token=3052de33-77e8-4ae7-bed8-1278fd746749">customize_dashboard_line_visualization.png</a></td></tr><tr><td><h4>Bar</h4></td><td><p><strong>Compare</strong> groups against each other. Horizontal or vertical, grouped or stacked.</p><p>You can <strong>stack by outcome</strong> to see passed, warned, and failed inside each bar. Sort worst first to put the problem at the top.</p></td><td><a href="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FE1Sr2ZRddnVaLq8jKRn8%2Fimage.png?alt=media&amp;token=a05f3095-2e8b-4bb3-a528-1345a281107d">customize_dashboard_bar_visualization.png</a></td></tr><tr><td><h4>Donut</h4></td><td>A <strong>share</strong> of a <strong>whole</strong>. You can visualize datasets with and without a contract, checks by outcome, or rows that passed against rows that failed, for example.</td><td><a href="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2F2v3oxU4jLo8aIMAzpqP7%2Fimage.png?alt=media&amp;token=c5d0b60c-c597-4694-ad0b-f44fa4e6c695">customize_dashboard_donut_visualization.png</a></td></tr></tbody></table>

***

## What to build

Some combinations that answer common data teams' questions:

* **Quality per domain or per data product.** Group DQ Health Score by the attribute your organization uses to mark ownership. This is usually the first custom tile anyone builds, because it turns an estate-wide number into a set of numbers with names attached.
* **The onboarding backlog.** Group datasets by onboarding status. Soda discovers far more than it checks, and the gap can be turned into work queue rather than a fault.
* **Contract adoption.** Group datasets by contract and break down by schema, or plot contracts over time. This shows whether a rollout is reaching the schemas that matter or only the easy ones.
* **Which class of check fails.** Group checks by check type, then by outcome, stacked. Freshness failing constantly is a different problem from duplicates failing constantly, and an estate-wide health score hides which one you have.
* **Where coverage comes from.** Group checks by check source to separate data standards, contracts, metric monitoring, and the check library. This can tell you how much of your coverage is generated by policy and how much is maintained by hand.
* **Scan reliability.** Group scans by scan status. A scan that fails to complete is an infrastructure problem wearing the costume of a data quality problem, and it can drag a health score down without failed checks in place.

***

{% hint style="info" %}
You are **not logged in to Soda** and are viewing the default public documentation. Learn more about [Licensing & documentation access](/reference/documentation-access-and-licensing.md).

If you do have a Soda license, make sure to **log in to Soda Cloud in this same browser**.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.soda.io/soda-cloud-dashboards/customize-a-dashboard.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
