# Set up Cost Insights

dbt platform | Enterprise, Enterprise+

This guide walks you through setting up Cost Insights to track warehouse compute costs and cost reductions from dbt State and state-aware orchestration across your dbt projects and models.

## Prerequisites

Before setting up Cost Insights, ensure you have:

* An administrator role.

* A supported data warehouse:

  * Snowflake
  * BigQuery
  * Databricks
  * Amazon Redshift [Preview](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles "Go to https://docs.getdbt.com/docs/dbt-versions/product-lifecycles")

To set up Cost Insights, follow these steps:

1. [Assign required permissions.](#assign-required-permissions)
2. [Configure platform metadata credentials.](#configure-platform-metadata-credentials)
3. [(Optional) Configure Cost Insights settings.](#configure-cost-insights-settings-optional)
4. [(Optional) Enable dbt State or state-aware orchestration in your job settings.](#enable-dbt-state-or-state-aware-orchestration-optional)

After completing these setup steps, you can view cost and optimization data across multiple areas of the dbt platform. Refer to [Explore cost data](./explore-cost-data.md) to learn more about the Cost Insights section and how to use it.

## Assign required permissions

Users with the following [permission sets](../platform/manage-access/enterprise-permissions.md) can view cost data by default:

* Account Admin
* Account Viewer
* Cost Insights Admin
* Cost Insights Viewer
* Database Admin
* Git Admin
* Job Admin
* Project Creator
* Team Admin

For more information on how to assign permissions to users, refer to [About user access](../platform/manage-access/about-user-access.md).

## Configure platform metadata credentials

1. Click your account name at the bottom of the left-side menu and click **Account settings**.

2. Under **Settings**, go to **Connections**.

3. Select an existing connection or create a new connection for the project where you want to enable Cost Insights.

4. Configure platform metadata credentials for your connection.

   1. Go to the **Platform metadata credentials** section. Depending on your current configuration, you may see one of the following:

      * If no platform metadata credentials are configured yet, the credentials form is immediately in edit mode.
      * If you previously canceled the form and see **Add credentials**, click the button to reopen the form.
      * If you have multiple connections that reference the same account identifier, you will only be prompted to add platform metadata credentials to one of them. Other connections using the same account identifier will display a message indicating that platform metadata credentials are already configured.

   2. Add credentials with permissions to the warehouse tables. Expand each connection to see the permissions required.

       Snowflake

      * `read` permissions to the [`ORGANIZATION_USAGE`](https://docs.snowflake.com/en/sql-reference/organization-usage) and [`ACCOUNT_USAGE`](https://docs.snowflake.com/en/sql-reference/account-usage) schemas

      * A Snowflake database role assigned the following access:

        * `ACCOUNT_USAGE.QUERY_HISTORY`

        * `ACCOUNT_USAGE.QUERY_ATTRIBUTION_HISTORY`

        * `ACCOUNT_USAGE.ACCESS_HISTORY`

        * `ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY`

        * `ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY` (Optional)

        * `ACCOUNT_USAGE.QUERY_METERING_HISTORY` (Optional; required for [Adaptive Warehouse](https://docs.snowflake.com/en/user-guide/warehouses-adaptive) cost attribution)

          If `QUERY_METERING_HISTORY` access is not granted, Adaptive Warehouse queries appear as $0 in Cost Insights and a warning is shown in the connection test. For more information, refer to the [Snowflake documentation](https://docs.snowflake.com/en/sql-reference/account-usage/query_metering_history).

       BigQuery

      * `bigquery.datasets.get`
      * `bigquery.jobs.create`
      * `bigquery.jobs.listAll`

       Databricks

      * Access to a [Unity Catalog workspace](https://docs.databricks.com/aws/en/admin/system-tables/#requirements)

      * `USE` permissions on the catalog and schema

      * `SELECT` permissions on the following system tables:

        * [`system.billing.usage`](https://docs.databricks.com/aws/en/admin/system-tables/billing)
        * [`system.billing.list_prices`](https://docs.databricks.com/aws/en/admin/system-tables/pricing)
        * [`system.query.history`](https://docs.databricks.com/aws/en/admin/system-tables/query-history)

      For more information, refer to the Databricks documentation on [granting access to system tables](https://docs.databricks.com/aws/en/admin/system-tables/#grant-access-to-system-tables).

       Amazon Redshift[Preview](https://docs.getdbt.com/docs/dbt-versions/product-lifecycles "Go to https://docs.getdbt.com/docs/dbt-versions/product-lifecycles")

      By default, Redshift users can only view their own queries. dbt must be able to query all users' queries in `SYS_QUERY_HISTORY` to attribute costs across your dbt runs. Grant one of the following permissions to the platform metadata credentials user:

      * **`sys:monitor` role** (recommended):

        ```sql
        GRANT ROLE sys:monitor TO <user>;
        ```

      * **Unrestricted syslog access**:

        ```sql
        ALTER USER <user> SYSLOG ACCESS UNRESTRICTED;
        ```

      For more information, refer to the [Amazon Redshift documentation on enhanced query monitoring permissions](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics-enhanced-query-monitoring.html#metrics-enhanced-query-monitoring-permissions).

      dbt verifies cross-user visibility during the connection test. If the credentials can only see their own queries, the test fails and cost data will not be processed for that environment.

5. Verify that **Cost insights** is enabled under **Features**. This feature is enabled by default when you configure platform metadata credentials.

6. Click **Save**.

## Configure Cost Insights settings (optional)

**Note:** This step is required for Amazon Redshift users. Without a configured price, costs will appear as $0.

By default, dbt uses standard warehouse pricing, which you can override if you have custom pricing agreements. Databricks and Amazon Redshift do not have default values. The default values vary by warehouse:

| Warehouse                                                                    | Default values                                                                     |
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Snowflake](https://www.snowflake.com/en/pricing-options/)                   | `price_per_credit` = $3                                                            |
| [BigQuery](https://cloud.google.com/bigquery/pricing)                        | `price_per_slot_hour` = $0.04, `price_per_tib` = $6.25                             |
| [Databricks](https://docs.databricks.com/aws/en/admin/system-tables/pricing) | dbt queries the `list_prices` system table directly, so there is no default value. |
| [Amazon Redshift Serverless](https://aws.amazon.com/redshift/pricing/)       | `rpu_price_per_hour` — no default value; costs appear as $0 until configured.      |
| [Amazon Redshift Provisioned](https://aws.amazon.com/redshift/pricing/)      | `node_price_per_hour` — no default value; costs appear as $0 until configured.     |

<br />

To change the default value:

1. Click your account name at the bottom of the left-side menu and click **Account settings**.
2. Under **Settings**, go to **Connections**.
3. Select the connection where you want to configure Cost Insights settings.
4. Go to the **Cost Insights settings** section.
5. Enter your custom value in the **Price per credit** field.
6. Click **Save**.

These custom values will apply to all future cost calculations for this connection. If you clear these values, they will reset to the default warehouse pricing.

## Enable dbt State (optional)

State-aware orchestration is now dbt State

[dbt State](../deploy/dbt-state-about.md) works with all engines and environments: dbt Core, dbt platform, and Fusion

If you're using state-aware orchestration prior to June 1, 2026, you can continue using it. Your dbt State trial will be extended until the billing period begins on September 1, 2026. If your trial wasn't extended, contact your account team. To get started, refer to [Migrate from state-aware orchestration](../deploy/dbt-state-migration.md).

Cost Insights displays cost data for your dbt models and jobs without dbt State. However, to understand the impact of optimizations and see cost reductions from model and test reuse, you must enable dbt State in your jobs. For steps on how to enable it, see [Setting up dbt State](../deploy/dbt-state-setup.md).

Cost Insights also reflects cost reductions and efficiency gains from state-aware orchestration if you have it enabled.

note

For accounts already using dbt State or state-aware orchestration before Cost Insights is enabled, at least one full model build must occur within the last 10 days to establish a baseline for cost reduction calculations. If you don't see cost reduction data, try running a full build to establish the baseline.

## Disable Cost Insights

To disable Cost Insights, you must have an administrator role.

1. Click your account name at the bottom of the left-side menu and click **Account settings**.
2. Under **Settings**, go to **Connections**.
3. Select the connection where you want to disable Cost Insights.
4. Go to **Platform metadata credentials** and click **Edit**.
5. Go to the **Features** section and clear the **Cost Insights** option.
6. Click **Save**.

## Was this page helpful?

YesNo

[Privacy policy](https://www.getdbt.com/cloud/privacy-policy)[Create a GitHub issue](https://github.com/dbt-labs/docs.getdbt.com/issues)

This site is protected by reCAPTCHA and the Google [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms) apply.
