| title | View groups |
|---|---|
| description | View groups organize views into named collections by domain or purpose, helping downstream consumers — including AI agents and embedded analytics — navigate large data models. |
When a data model contains many views, view groups help organize
them into named collections by domain or purpose — for example, sales,
finance, or people. View groups are exposed through the
/v1/meta API, making it easier for downstream tools,
AI agents, and embedded analytics to present a navigable catalog.
See the view group reference for the full list of parameters and configuration options.
A view group is a top-level entity, defined alongside views. At minimum it
needs a name; title and description make it easier to navigate in
downstream tools.
view_groups:
- name: sales
title: Sales
description: Revenue and order views for the sales teamview_group(`sales`, {
title: `Sales`,
description: `Revenue and order views for the sales team`
})There are two ways to assign a view to a group, and both can be combined. Pick whichever keeps group membership co-located with the entity you'd rather edit — the group definition for a curated catalog, or the view definition for ad-hoc additions.
List views on the group via the views parameter.
This keeps the full membership in one place, which is convenient when you
want to review a group at a glance.
view_groups:
- name: sales
title: Sales
views:
- orders_overview
- revenueview_group(`sales`, {
title: `Sales`,
views: [`orders_overview`, `revenue`]
})Set view_group on the view itself. The view
declares which group it belongs to, without touching the group definition.
views:
- name: revenue
view_group: sales
cubes:
- join_path: order_items
includes:
- total_sale_price
- created_atview(`revenue`, {
view_group: sales,
cubes: [
{
join_path: order_items,
includes: [`total_sale_price`, `created_at`]
}
]
})A view can belong to more than one group. Use
view_groups (plural) on the view to list every
group it should appear in.
views:
- name: revenue
view_groups:
- sales
- finance
cubes:
- join_path: order_items
includes:
- total_sale_price
- created_atview(`revenue`, {
view_groups: [sales, finance],
cubes: [
{
join_path: order_items,
includes: [`total_sale_price`, `created_at`]
}
]
})By convention, view groups are typically defined alongside
views in the model/views folder — for example, in a dedicated
view_groups.yml file. They behave like any other top-level data model
entity and can be split across multiple files as your model grows.
- See the view group reference for the full list of parameters
- Learn about views and how they curate cubes for downstream consumers
- Explore AI context to improve AI query accuracy