> ## Documentation Index
> Fetch the complete documentation index at: https://cubed3-feat-druid-driver-streaming.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# View groups

> 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][ref-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`][ref-meta-endpoint] API, making it easier for downstream tools,
AI agents, and embedded analytics to present a navigable catalog.

<Note>
  See the [view group reference][ref-view-group-ref] for the full list of
  parameters and configuration options.
</Note>

## Defining a view group

A view group is a top-level entity, defined alongside views. At minimum it
needs a `name`; adding a `title` makes it easier to navigate in downstream
tools.

<CodeGroup>
  ```yaml title="YAML" theme={null}
  view_groups:
    - name: sales
      title: Sales
  ```

  ```javascript title="JavaScript" theme={null}
  view_group(`sales`, {
    title: `Sales`
  })
  ```
</CodeGroup>

## Assigning views to a group

To assign a view to a group, list its name on the group via the
[`includes`][ref-view-group-includes] parameter. This keeps the full
membership in one place, which makes it easy to review a group at a glance.

<CodeGroup>
  ```yaml title="YAML" theme={null}
  view_groups:
    - name: sales
      title: Sales
      includes:
        - orders_overview
        - revenue
  ```

  ```javascript title="JavaScript" theme={null}
  view_group(`sales`, {
    title: `Sales`,
    includes: [`orders_overview`, `revenue`]
  })
  ```
</CodeGroup>

A view can belong to more than one group — list it under the `includes`
parameter of every group it should appear in.

## Nesting

View groups can be nested, similar to [nested folders][ref-view-nesting]. Add a
nested view group — with its own `name`, `title`, `description`, and
`includes` — directly inside a parent group's `includes`.

<CodeGroup>
  ```yaml title="YAML" theme={null}
  view_groups:
    - name: sales
      title: Sales
      includes:
        - orders_overview
        - revenue

        - name: enterprise_sales
          title: Enterprise Sales
          includes:
            - enterprise_deals
  ```

  ```javascript title="JavaScript" theme={null}
  view_group(`sales`, {
    title: `Sales`,
    includes: [
      `orders_overview`,
      `revenue`,
      {
        name: `enterprise_sales`,
        title: `Enterprise Sales`,
        includes: [`enterprise_deals`]
      }
    ]
  })
  ```
</CodeGroup>

## Where view groups live in the model

By [convention][ref-syntax], 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.

## Next steps

* See the [view group reference][ref-view-group-ref] for the full list of
  parameters
* Learn about [views][ref-views] and how they curate cubes for downstream
  consumers
* Explore [AI context][ref-ai-context] to improve AI query accuracy

[ref-views]: /docs/data-modeling/views

[ref-view-nesting]: /reference/data-modeling/view#nesting

[ref-syntax]: /docs/data-modeling/concepts/syntax

[ref-ai-context]: /docs/data-modeling/ai-context

[ref-view-group-ref]: /reference/data-modeling/view-group

[ref-view-group-includes]: /reference/data-modeling/view-group#includes

[ref-meta-endpoint]: /reference/core-data-apis/rest-api/reference
