Boards Shipped in a dbt Package¶
A dbt package can ship its own boards alongside its models and macros. Once
the package is installed, its boards are discovered automatically, the same
way ref('zendesk', 'zendesk__ticket_metrics') reaches that package's models
today. There is nothing to configure.
Where a package puts its boards¶
A package that ships boards puts them in its own charts/ directory, at the
package's root, the same place your own project puts its boards:
dbt_zendesk/ # the package, as dbt deps installs it
├── charts/
│ ├── overview.yml
│ └── meta.yml
├── models/
│ └── ...
└── dbt_project.yml
dbt deps copies that into your project's dbt_packages/ directory:
my_project/
├── charts/ # your own boards
│ └── home.yml
├── dbt_packages/
│ └── dbt_zendesk/
│ └── charts/ # the package's boards — discovered automatically
│ ├── overview.yml
│ └── meta.yml
└── dbt_project.yml
dct serve, dct validate, dct render, and dct impact all discover a
package's charts/ directory the moment dbt deps installs it — no config
key opts a package in or out.
How package boards appear¶
A package's boards are namespaced by the package's directory name under
dbt_packages/ — the same name dbt derived from the package's own name:
when dbt deps installed it. dbt_packages/zendesk/charts/overview.yml
serves at /zendesk/overview/, the same way charts/home.yml serves at /.
A package board's own index (dbt_packages/zendesk/charts/index.yml) serves
at the bare package path, /zendesk/.
To customize a package board, copy it into your own charts/<pkg>/:
dbt_packages/zendesk/charts/overview.yml becomes
charts/zendesk/overview.yml. Both claim the slug zendesk/overview, and your
copy replaces the package's: it is the one that is listed, searched, rendered,
and linked to, and the package's board with that slug disappears. Package
boards you haven't copied keep appearing under zendesk/.... Your copy gets
your project's meta.yml layers only, as any board of your own does.
Editing a package board¶
dbt_packages/ is regenerated by dbt deps, so dbt Charts never writes into
it. Editing a package board through the editor, write_file, or an agent saves
your own copy at charts/<pkg>/<path> instead, and that copy replaces the
package's board (see above). Later edits change your copy. Bulk rewriters such
as dct migrate don't copy: pointing one at a package board is an error.
Sourcing a package board's queries¶
A package ships with no source: of its own — it doesn't know your project's
source names. Its boards' queries run against your project's default source
instead, the same one a sourceless board of your own would use.
In a dbt project that declares no sources:, there is nothing to set. dbt
Charts adds one source named after the profile: in your dbt_project.yml, and
package boards run against it: the same warehouse dbt run builds into. See
No dbt_charts.yml needed inside a dbt project.
If your dbt_charts.yml declares sources:, name the default in your host
charts/meta.yml:
# File: charts/meta.yml source: warehouse
Without it, a package board's queries fail with ERR-SOURCE-REQUIRED: dbt
Charts does not pick one of your sources for you.
With either setup in place, every package board compiles unmodified. A package board that names
its own source: explicitly resolves it against your project's dbt_charts.yml
the normal way, and fails with an unknown-source error if it doesn't exist.
A package's own meta.yml still applies for everything that isn't a source
name — style defaults, shared queries, lint suppressions — layered inside
your host charts/meta.yml, so a package default never silently overrides a
project-wide one.
Picking up a package update¶
dct serve notices a dbt deps re-run the same way it notices an edit under
charts/ — no restart needed. A Linking Between Boards link:
from one of your own boards into a package board that a later dbt deps
removes (the package dropped or renamed it) reads as a stale link, the same as
linking to any board that no longer exists.
Scope¶
- Hub and git packages only. A
local:-installed package is a symlink into another directory on disk, outside your project root — the same containment guard that keeps a board from reading a file outside the project excludes it. This is a package-developer workflow, not something a package's users hit; ship the package as a real hub or git dependency and it works normally. packages-install-pathoverrides are not honored. Discovery assumes the defaultdbt_packages/location.- Cloud serves boards for supported Fivetran quickstart packages only.
Cloud doesn't run
dbt deps, so it reads the versions your project pins in a committedpackage-lock.yml(or an exactversion:inpackages.ymlwhen there is no lock). For a supported package at a supported version, such asfivetran/zendesk1.8.x, its boards appear under/<package>/<board>/like any other board. Other packages, and versions outside the supported range, show no boards on Cloud. Editing a package board on Cloud saves your copy ascharts/<package>/<board>.yml, which then replaces the package's.
Related¶
- Boards Overview - Basic board structure
- Linking Between Boards -
link:fields and Markdown links - Board Imports - Composing boards from files within one project