Analytics engineers already keep their models, tests and documentation as code in dbt. The dashboard has usually been the exception: it lives in a BI tool, built by clicking, with no history and no review. dbt Charts, announced in public beta at dbt Summit 2026 in Las Vegas in September, closes that gap. A dashboard becomes a YAML file in your dbt project, rendered by a small command-line tool and checked against your warehouse before anyone sees a broken chart.
Why dashboards as code?
Clicked-together dashboard
Today- No history: who changed that filter, and when?
- Logic copied by hand between dashboards
- Breaks silently when a column is renamed
Fast to start, slow to maintain.
Dashboard as code
dbt Charts- Reviewed in pull requests, with full history and rollback
- Change one filter across dozens of boards at once
- Column renames caught before deploy
- Easy for AI agents to read and write
More setup, much easier to keep correct.
What a board looks like
A board has a title, a data source, named SQL queries, charts that point to those queries, and a layout. Here is a simplified example based on the documented structure:
# charts/revenue.yml
title: Revenue overview
source: db
queries:
by_month: |
select date_trunc('month', order_date) as month,
sum(revenue) as revenue
from {{ ref('fct_orders') }}
group by 1
order by 1
by_channel: |
select channel, sum(revenue) as revenue
from {{ ref('fct_orders') }}
group by 1
order by 2 desc
charts:
revenue_trend:
query: queries.by_month
type: line
x: month
y: revenue
revenue_by_channel:
query: queries.by_channel
type: bar
x: channel
y: revenue
rows: [revenue_trend, revenue_by_channel]Two design choices stand out. First, charts never aggregate or reorder rows: the SQL decides the grain and the order, so what you see is exactly what the query returns. Second, ref() calls are checked against your dbt models' columns when dbt parse runs, so a renamed column breaks the build, not the meeting.
The building blocks
- Queries
- Named SQL, one per grain you need. Charts reference them as queries.name.
- Charts
- 16 types: bar, histogram, spark bar, line, area, scatter, pie, donut, table, heatmap, KPI, callout, map, point map, bubble map and geoshape.
- Composed charts
- Lollipop, bullet, slope, bump, dot plot and steamgraph, built from the core types.
- Variables
- Filters shown as dropdowns, multi-selects, date ranges, sliders or checkboxes. Each one is a URL parameter, so a filtered view is a shareable link.
- Links
- Click a bar or a row to filter the board in place or open another board.
- Layout
- Rows stack charts, columns place them side by side, with tabs, collapsible sections and markdown text blocks.
- Themes
- Switch the whole board's look with one line.
Validation: the real reason to care
The command-line tool is called dct, and it reads your existing dbt_project.yml and profiles.yml, so there is no new connection to configure.
dct validate # check the structure of every board
dct validate --warehouse # run every query against the warehouse
dct impact # list the boards that read a given column
dct render # build the boards, with visual warningsdct impact is the one data teams will love: before you drop or rename a column, you can see every dashboard that depends on it. Put dct validate --warehouse in CI next to dbt build, and broken dashboards stop reaching stakeholders.
Built for AI agents
Because a board is plain text with a small vocabulary, AI agents can read and write it far more reliably than they can click through a BI tool. That is a big part of dbt Labs' pitch. The online playground at play.dbtcharts.com includes an assistant that edits the YAML for you.
Current limits
- No Semantic Layer link yet: queries are plain SQL, so a metric defined in the dbt Semantic Layer can be calculated differently on a board. Keep logic in your models and keep board SQL thin.
- Long files: big boards become long YAML files that are hard to navigate. Split them into several boards.
- Public beta: pricing, plans and a GA date have not been announced. dbt Labs is running virtual sessions on 28 and 29 October.
Should you try it?
Try it now
Good fit- Internal dashboards owned by the data team
- Teams already doing code review for dbt
- Lots of similar boards that drift apart
Wait
Not yet- Executive dashboards that need pixel-perfect design
- Self-service for business users who do not use Git
- Metrics that must come from the Semantic Layer
Check your understanding
1/3Where does a dbt Charts board live?
Boards are files in your dbt project, versioned in Git.
2/3Who decides the grain and order of a chart's data?
Charts read columns and never re-aggregate or reorder rows.
3/3Which command lists the boards that depend on a column?
Run it before renaming or dropping columns.
You got 0 out of 3.
New to dbt? Start with your first dbt project, then read what changed in dbt v2 and what the Fivetran and dbt Labs merger means.
Sources: the dbt Charts language documentation (dbtcharts.com), The Information Lab's "dbt Charts: first look" (21 September 2026) and the dbt Labs blog. dbt Charts is in public beta, so syntax and features may change.
