Manage workload commitments

The BigQuery Reservation API lets you purchase dedicated slots (calledcommitments), create poolsof slots (calledreservations),and assign projects, folders, and organizations to those reservations.

Acapacity commitment is a purchase of BigQuery compute capacity forsome minimum duration of time. Purchasing a capacity commitment is optional whencreating a reservation with anedition, but canprovide cost savings.

Commitments are a regional resource. Commitments purchased in one region ormulti-region cannot be used in any other regions or multi-regions.Commitments cannot be moved between regions or between regions andmulti-regions. Commitments cannot be moved between projects.

Enable the Reservations API

The BigQuery Reservation API is distinct from the existingBigQuery API and must be enabled independently. For moreinformation, seeEnabling and disabling APIs.

  • The name of the API is "BigQuery Reservations API"
  • The endpoint for the BigQuery Reservation API isbigqueryreservation.googleapis.com.

Enable API.

Note: If you want to prevent anyone in your organization from enabling theBigQuery Reservation API,contact support.

Purchase commitments

To reserve capacity for some minimum amount of time, you can purchase acapacity commitment. This provides a discount and saves on costs. For more information about the specific costs, seeBigQuery pricing.

Required permissions

To create a capacity commitment, you need the followingIdentity and Access Management (IAM) permission:

Each of the following predefined IAM roles includes thispermission:

  • BigQuery Admin
  • BigQuery Resource Admin

For more information about IAM roles in BigQuery,seePredefined roles and permissions.

Create a capacity commitment

Caution: Before creating a capacity commitment, understand the details of thecommitment plans andpricing.

Commitments are a regional resource. Commitments purchased in one region ormulti-region cannot be used in any other regions or multi-regions. Commitmentscannot be moved between regions or between regions and multi-regions.Commitments cannot be moved between projects.

Console

  1. In the Google Cloud console, go to the BigQuery page.

    Go to BigQuery

  2. In the navigation menu, clickCapacity management.

  3. ClickCreate Commitment.

  4. UnderConfigure:

    1. Select the location.
    2. In theCapacity model section, select the capacity model.
    3. If you select the Autoscaling (Edition) option:
      1. In theEdition list, select the edition. Capacity commitmentsare only supported in the Enterprise and Enterprise Plus editions.
    4. Select theCommitment duration, which specifies yourcommitmentplan.
    5. If you are purchasing anAnnual commitment, select theRenewalplan that you want to take effect when the commitment expires:

      1. Renew annually. When the annual commitment expires, it renewsfor another year as an annual commitment.

      For more information, seeSlot commitments.

    6. Enter theNumber of slots you want to purchase.

    7. ClickNext.

  5. Review theCost estimate for your purchase.

  6. UnderConfirm and submit:

    1. TypeCONFIRM to confirm the purchase.
    2. ClickPurchase to purchase the slots.
  7. To view the commitment, clickView slot commitments. After thecapacity is provisioned, the requested capacity commitment has a greenstatus.

    Note: Slots are usually provisioned quickly, but in rare cases it cantake several hours. If you have a critical workload where you expect tohave increased demand, reserve your slots at least one day inadvance.

The first time you purchase capacity, adefault reservation is created.

SQL

To create a capacity commitment, use theCREATE CAPACITY DDL statement.

  1. In the Google Cloud console, go to theBigQuery page.

    Go to BigQuery

  2. In the query editor, enter the following statement:

    CREATECAPACITY`ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`OPTIONS(slot_count=NUMBER_OF_SLOTS,edition=EDITION,plan='PLAN_TYPE',renewal_plan='RENEWAL_PLAN_TYPE');

    Replace the following:

    • ADMIN_PROJECT_ID: the project ID of theadministration project that will maintain ownership of this commitment
    • LOCATION: thelocation of the commitment
    • COMMITMENT_ID: the ID of the commitment

      It must be unique to the project and location. It must start and end with a lowercase letter or a number and contain only lowercase letters, numbers, and dashes.

    • NUMBER_OF_SLOTS: the number of slots to purchase
    • EDITION: the edition associated with the capacity commitment. You can only create a capacity commitment with the Enterprise or Enterprise Plus editions. To learn more about editions, seeIntroduction to BigQuery editions.
    • PLAN_TYPE: theplan type. The options areANNUAL orTHREE_YEAR.
    • RENEWAL_PLAN_TYPE: therenewal plan type. The options areNONE,ANNUAL orTHREE_YEAR.

  3. ClickRun.

For more information about how to run queries, seeRun an interactive query.

bq

Use thebq mk commandwith the--capacity_commitment flagto purchase slots.

bq mk \    --project_id=ADMIN_PROJECT_ID \    --location=LOCATION \    --capacity_commitment=true \    --edition=EDITION \    --plan=PLAN_TYPE \    --renewal_plan=RENEWAL_PLAN_TYPE \    --slots=NUMBER_OF_SLOTS

Replace the following:

  • ADMIN_PROJECT_ID: the project ID of theadministration projectthat will maintain ownership this commitment
  • LOCATION: thelocationof the commitment
  • EDITION: the edition associated with the capacitycommitment. You can only create a capacity commitment with the Enterprise orEnterprise Plus editions. To learn more about editions, seeIntroduction toBigQuery editions.
  • PLAN_TYPE: theplan type.The options areANNUAL orTHREE_YEAR.
  • RENEWAL_PLAN_TYPE: therenewal plan type.The options areNONE,ANNUAL orTHREE_YEAR.
  • NUMBER_OF_SLOTS: the number of slots topurchase.

View capacity commitments

The following sections describe how to view your existing capacity commitments.

Required permissions

To view commitments, you need the following Identity and Access Management (IAM)permission:

Each of the following predefined IAM roles includes thispermission:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

For more information about IAM roles in BigQuery,seePredefined roles and permissions.

View capacity commitments by project

To view your capacity commitments by project:

Console

  1. In the Google Cloud console, go to the BigQuery page.

    Go to BigQuery

  2. In the navigation menu, clickCapacity management.

  3. Click theSlot commitments tab. Your capacity commitments are listedin the table underCommitments.

SQL

To view the commitments for an administration project, query theINFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT view.

  1. In the Google Cloud console, go to theBigQuery page.

    Go to BigQuery

  2. In the query editor, enter the following statement:

    SELECTcapacity_commitment_idFROM`region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECTWHEREproject_id='ADMIN_PROJECT_ID'ANDslot_count=100;

    Replace the following:

  3. ClickRun.

For more information about how to run queries, seeRun an interactive query.

bq

Use thebq ls commandwith the--capacity_commitment flagto list the commitments for an administration project.

bq ls \    --capacity_commitment=true \    --location=LOCATION \    --project_id=ADMIN_PROJECT_ID

Replace the following:

Update capacity commitments

You can make the following updates to a capacity commitment:

  • Update the renewal plan of the commitment
  • Convert a commitment to a commitment plan with a longer duration.
  • Split a commitment into two commitments.
  • Merge two commitments into a single commitment.

Required permissions

To update capacity commitments, you need the followingIdentity and Access Management (IAM) permission:

Each of the following predefined IAM roles includes thispermission:

  • BigQuery Admin
  • BigQuery Resource Admin

For more information about IAM roles in BigQuery,seePredefined roles and permissions.

Renew a commitment

Annual commitments have a renewal plan, which you specify when youcreate or convert to an annual commitment. You can change yourannual commitment's renewal planat any time before the commitment end date.

Console

You can change your renewal plan for an annual commitment as follows:

  1. In the Google Cloud console, go to the BigQuery page.

    Go to BigQuery

  2. In the navigation menu, clickCapacity management.

  3. Click theSlot commitments tab.

  4. Find the commitment you want to edit.

  5. ClickActions, and then select theEdit renewal plan option.

  6. Select the new renewal plan.

bq

To change the renewal plan choice for an annual commitment, use thebq update commandwith the--capacity_commitment flagand the--renewal_plan flag.

bq update \    --project_id=ADMIN_PROJECT_ID \    --location=LOCATION \    --renewal_plan=PLAN_TYPE \    --capacity_commitment=true \COMMITMENT_ID

Replace the following:

Convert a commitment to longer duration

You can choose to convert your commitment to a longer-duration commitment typeat any time. This works even if you want to convert from a legacy plan toan edition.

As soon as you update your commitment, you are charged the rateassociated with the new plan, and the end date resets.

To convert a commitment, use thebq update commandwith the--plan flag.

bq update \    --project_id=ADMIN_PROJECT_ID \    --location=LOCATION \    --plan=PLAN_TYPE \    --renewal_plan=RENEWAL_PLAN \    --capacity_commitment=true \COMMITMENT_ID

Replace the following:

  • ADMIN_PROJECT_ID: the project ID
  • LOCATION: thelocationof the commitment
  • PLAN_TYPE: theplan type, such asANNUAL orTHREE_YEAR.
  • RENEWAL_PLAN: therenewalplan

    This applies only if thePLAN_TYPE isANNUAL.

  • COMMITMENT_ID: the ID of the commitment

    To get the ID, seeView purchased commitments.

Split a commitment

You can split your commitment into two commitments. This can be useful if youwant torenew part of a commitment. For example, if youhave an annual commitment of 1,000 slots, you could split off 300 slots into anew commitment, leaving 700 slots in the original commitment. You could thenrenew 700 slots at the annual rate, and convert 300 slots to a three-yearcommitment. You can split a commitment in increments of 50 slots.

When you split a commitment, the new commitment has the same plan and the samecommitment end date as the original commitment.

Console

  1. In the Google Cloud console, go to the BigQuery page.

    Go to BigQuery

  2. In the navigation menu, clickCapacity management.

  3. Click theSlot commitments tab.

  4. Select the commitment that you want to split.

  5. ClickSplit.

  6. In theSplit commitment page, use theConfigure split slider toselect how many slots go into each split, in increments of 50 slots.

  7. ClickSplit to split the commitment. The new commitment is listed intheSlot commitments tab.

bq

To split commitments, use thebq update command.

bq update \    --project_id=ADMIN_PROJECT_ID \    --location=LOCATION \    --split \    --slots=SLOTS_TO_SPLIT \    --capacity_commitment=true \COMMITMENT_ID

Replace the following:

  • ADMIN_PROJECT_ID: the project ID
  • LOCATION: thelocationof the commitment
  • SLOTS_TO_SPLIT: the number of slots to splitfrom the original commitment into a new commitment
  • COMMITMENT_ID: the ID of the commitment

    To get the ID, seeView purchased commitments.

Merge two commitments

You can merge multiple commitments into one commitment. The merging commitmentsmust all be of the same type (ANNUAL orTHREE_YEAR). The enddate of the combined commitment is the maximum end date of the originalcommitments. If any of the commitments have an earlier end date,they are extended to the later date and you are charged a prorated amount forthose slots.

Console

  1. In the Google Cloud console, go to the BigQuery page.

    Go to BigQuery

  2. In the navigation menu, clickCapacity management.

  3. Click theSlot commitments tab.

  4. Select the commitments that you want to merge.

  5. ClickMerge.

  6. In theMerge commitments page, review the details of the merge andclickMerge. The new merged commitment is listed in theSlot commitments tab.

bq

To merge two commitments into one commitment, use thebq update command:

bq update \    --project_id=ADMIN_PROJECT_ID \    --location=LOCATION \    --merge=true \    --capacity_commitment=true \COMMITMENT1,COMMITMENT2

Replace the following:

  • ADMIN_PROJECT_ID: the project ID
  • LOCATION: thelocationof the commitments
  • COMMITMENT1: the first commitment to merge
  • COMMITMENT2: the second commitment to merge

Upgrade commitments to a new edition

You can't directly upgrade a commitment to a new edition. For example, you can'tupgrade a commitment from the Enterprise edition to theEnterprise Plus edition. Instead, follow these steps to upgrade acommitment:

  1. Create a new commitment. Choose the appropriate upgradededition. Note that this new commitment has a different commitment end datethan your existing commitment.

  2. Contact support to request a cancellationof your existing commitment.

Commitment expiration

Commitments expire at the end of their duration. You can't delete a commitmentwhile it is still active. If the renewal plan is set toNONE, the commitmentis automatically deleted. Otherwise it is renewed with an annual orthree-year commitment, depending on the renewal plan. To change the renewal plantoNONE, follow the steps inRenew a commitment.

After renewing a commitment, the value ofStart time isn't changed. Itrefers to the start time of the original commitment. The value ofEnd timeis the time the renewed commitment expires. For example, if you have one annualcommitment created on December 13, 2022, and it's renewed on December 13, 2023.If you view the commitment details on December 14, 2023, the value ofStart time would be December 13, 2022 and the value ofEnd timewould be December 12, 2024.

Baseline slots are always charged. If a capacity commitment expires you mightneed to manually adjust the amount of baseline slots in your reservations toavoid any unwanted charges. For example, consider that you have a 1-yearcommitment with 100 slots and a reservation with 100 baseline slots. Thecommitment expires and doesn't have a renewal plan. Once the commitment expires,you pay for 100 baseline slots at thepay as you gorate.

Control the creation of capacity commitments

You can useIAM deny policies for additional controlover who can create capacity commitments.

Deny policies can be created for a set of users or all, and they can beconfigured with exceptions and conditions.

For example, the following policy denies all users the permission to createcapacity commitments with the exception of the principal "lucian@example.com":

{"deniedPrincipals":["principalSet://goog/public:all"],"deniedPermissions":["bigquery.googleapis.com/capacityCommitments.create"],"exceptionPrincipals":["principal://goog/subject/lucian@example.com"]}

This policy can then be attached to an organization to control who can createthe commitments.

Note that these policies take precedence over the IAM roles, soeven a user with thebigquery.admin role wouldn't be able to create acommitment unless the policy is deleted or modified.

For more information, seeDeny access to resources.

Troubleshooting capacity commitments

This section describes troubleshooting steps that you might find helpful if yourun into problems using BigQuery Reservations.

Purchased slots are pending

Slots are subject to available capacity. When you purchase slot commitments andBigQuery allocates them, then theStatus column shows a checkmark. If BigQuery can't allocate the requested slots immediately,then theStatus column remains pending. You might have to wait several hoursfor the slots to become available. If you need access to slots sooner, try thefollowing:

  1. Delete the pending commitment.
  2. Purchase a new commitment for a smaller number of slots. Depending oncapacity, the smaller commitment might become active immediately.
  3. Purchase the remaining slots as a separate commitment. These slots mightshow as pending in theStatus column, but they generally become activewithin a few hours.
  4. Optional: When both commitments are available, you canmerge them into a single commitment, as long as youpurchased the same plan for both.

If a slot commitment fails or takes a long time to complete, consider usingon-demand pricing temporarily. With thissolution, you might need to run critical queries on a different project that'snot assigned to any reservations, or you might need to remove the projectassignment altogether.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-17 UTC.