使用運算單元保留功能

透過 BigQuery Reservation API,您可以購買專屬運算單元 (稱為「承諾」)、建立運算單元集區 (稱為「預留項目」),以及將專案、資料夾和機構指派給這些預留項目。

保留項目可讓您為工作負載指派專屬的運算單元數量。舉例來說,您可能不希望實際工作環境工作負載與測試工作負載爭奪運算單元。您可以建立名為 prod 的預留項目,並將生產工作負載指派給這個預留項目。詳情請參閱「預留項目」。

建立預留項目

所需權限

如要建立預留項目,您必須具備下列身分與存取權管理 (IAM) 權限:

  • bigquery.reservations.create,該管理專案會維護承諾使用合約的所有權。

下列預先定義的 IAM 角色都具備這項權限:

  • BigQuery Resource Editor
  • BigQuery Resource Admin

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。

使用專屬運算單元建立預留項目

選取下列選項之一:

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「容量管理」

  3. 按一下「建立預留項目」

  4. 在「Reservation name」(預留項目名稱) 欄位中,輸入預留項目的名稱。

  5. 在「位置」清單中選取位置。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。

  6. 從「Edition」(版本) 清單中選取版本。BigQuery 版本功能 (例如自動調度) 僅適用於該版本。詳情請參閱 BigQuery 版本簡介

  7. 在「預留項目大小選取器」清單中,選取預留項目大小上限。

  8. 選用:在「基準運算單元」欄位中,輸入保留項目的基準運算單元數量。

    可用的自動調度資源運算單元數量,取決於「基準運算單元」值減去「預留項目大小上限」。舉例來說,如果您建立的預留項目有 100 個基準運算單元,且預留項目大小上限為 400,則預留項目會有 300 個自動調度運算單元。如要進一步瞭解基準運算單元,請參閱「搭配基準和自動調度資源運算單元使用預留項目」。

  9. 如要停用閒置的運算單元共用功能,並只使用指定的運算單元容量,請按一下「忽略閒置的運算單元」切換鈕。

  10. 如要展開「進階設定」部分,請按一下展開箭頭。

  11. 選用:如要設定目標工作並行,請按一下「覆寫自動目標工作並行設定」切換鈕,然後輸入「目標工作並行」

  12. 「費用估算」表格會顯示時段明細。 「運算能力摘要」表格會顯示預訂摘要。

  13. 按一下 [儲存]

新預訂的時段會顯示在「預訂時段」分頁中。

SQL

如要建立預留項目,請使用 CREATE RESERVATION DDL 陳述式

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入下列陳述式:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = EDITION,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

    取代下列項目:

    • ADMIN_PROJECT_ID:擁有預留資源的管理專案專案 ID
    • LOCATION:預訂的地點。如果選取 BigQuery Omni 位置,版本選項會限制為 Enterprise 版。
    • RESERVATION_NAME:預留項目的名稱

      名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。

    • NUMBER_OF_BASELINE_SLOTS:要分配給預訂項目的運算單元數量基準。您無法在同一個預訂中設定 slot_capacity 選項和 edition 選項。
    • EDITION:預訂的發行版本。將預留項目指派給版本時,功能和價格會有所變更。詳情請參閱 BigQuery 版本簡介
    • NUMBER_OF_AUTOSCALING_SLOTS:指派給預留項目的自動調度運算單元數量。這等於預留項目大小上限減去基準運算單元數量。

  3. 按一下「執行」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。

bq

如要建立預訂項目,請使用 bq mk 指令並加上 --reservation 旗標:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --max_slots=MAXIMUM_NUMBER_OF_SLOTS
    --scaling_mode=SCALING_MODE
    RESERVATION_NAME

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:預訂的地點。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。
  • NUMBER_OF_BASELINE_SLOTS:要分配給預留項目的基準運算單元數量

  • RESERVATION_NAME:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。

  • EDITION:預訂的發行版本。將預留項目指派給版本時,功能和價格會有所變更。詳情請參閱 BigQuery 版本簡介

  • NUMBER_OF_AUTOSCALING_SLOTS:指派給預留項目的自動調度運算單元數量。這等於預留項目大小上限減去基準運算單元數量。這無法透過 --max_slots--scaling_mode 旗標設定。

  • MAXIMUM_NUMBER_OF_SLOTS:預留項目可使用的運算單元數量上限。這個值必須使用 --scaling_mode 標記設定 (預先發布版)。

  • SCALING_MODE:預訂的縮放模式。選項包括 ALL_SLOTSIDLE_SLOTS_ONLYAUTOSCALE_ONLY。這個值必須使用 --scaling_mode 標記設定 (預先發布版)。

如要瞭解 --ignore_idle_slots 旗標,請參閱「閒置運算單元」。預設值為 false

Terraform

使用 google_bigquery_reservation 資源。

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。

以下範例會建立名為 my-reservation 的預訂:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    每項專案只需要執行一次這個指令,且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是 .tf,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。

    將範例程式碼複製到新建立的 main.tf

    視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個方法。

  3. 查看並修改範例參數,套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,即可套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

Python

使用這個程式碼範例前,請先安裝 google-cloud-bigquery-reservation 套件。 建構 ReservationServiceClient。使用 Reservation 說明要建立的預訂項目。使用 create_reservation 方法建立預留項目。
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

建立可預測的預留項目

建立設有運算單元數量上限的預留項目之前,請務必先啟用以預留項目為準的公平性

啟用以預訂為準的公平性機制

如要啟用以預訂為準的公平性,請將 enable_reservation_based_fairness 旗標設為 true

如要更新專案的預留項目公平性,您必須擁有bigquery.config.update專案的權限,該專案會維護預留項目的擁有權。預先定義的 BigQuery Admin 角色具備這項權限。

如要進一步瞭解如何更新專案的預設設定,請參閱「管理設定」。

ALTER PROJECT `PROJECT_NAME` SET OPTIONS (
    `region-LOCATION.enable_reservation_based_fairness`= true);

更改下列內容:

建立可預測的預留項目

如要建立設有運算單元數量上限的預留項目,請選取下列其中一個選項:

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽面板中,前往「容量管理」部分,然後按一下「建立預留項目」

  3. 在「Reservation name」(預留項目名稱) 欄位中,輸入預留項目的名稱。

  4. 在「位置」清單中選取位置。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。

  5. 從「Edition」(版本) 清單中選取版本。自動調度資源功能僅適用於特定版本。詳情請參閱瞭解 BigQuery 版本

  6. 在「預留項目大小選取器」清單中,選取預留項目大小上限。

  7. 選用:在「基準運算單元」欄位中,輸入保留項目的基準運算單元數量。

    可用的自動調度資源運算單元數量,取決於「基準運算單元」值減去「預留項目大小上限」。舉例來說,如果您建立的預留項目有 100 個基準運算單元,且預留項目大小上限為 400,則預留項目會有 300 個自動調度運算單元。如要進一步瞭解基準運算單元,請參閱「搭配基準和自動調度資源運算單元使用預留項目」。

  8. 如要停用閒置的運算單元共用功能,並只使用指定的運算單元容量,請按一下「忽略閒置的運算單元」切換鈕。

  9. 如要展開「進階設定」部分,請按一下展開箭頭。

    1. 在「如何使用閒置的運算單元?」清單中,選取設定選項。
  10. 「費用估算」表格會顯示時段明細。 「運算能力摘要」表格會顯示預訂摘要。

  11. 按一下 [儲存]

新預訂的時段會顯示在「預訂時段」分頁中。

bq

如要建立可預測的預訂項目,請使用 bq mk 指令搭配 --reservation 旗標,並設定 max_slotsscaling_mode 的值:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --max_slots=MAXIMUM_NUMBER_OF_SLOTS \
    --scaling_mode=SCALING_MODE
    RESERVATION_NAME

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:預訂的地點。如果選取 BigQuery Omni 位置,版本選項僅限 Enterprise 版。
  • NUMBER_OF_BASELINE_SLOTS:要分配給預留項目的基準運算單元數量

  • RESERVATION_NAME:預留項目名稱

  • EDITION:預訂的發行版本。將預留項目指派給版本時,功能和價格會有所變更。詳情請參閱 BigQuery 版本簡介

  • MAXIMUM_NUMBER_OF_SLOTS:預留項目可使用的運算單元數量上限。這個值必須使用 --scaling_mode 標記設定 (預先發布版)。

  • SCALING_MODE:預訂的縮放模式。選項包括 ALL_SLOTSIDLE_SLOTS_ONLYAUTOSCALE_ONLY。這個值必須使用 --scaling_mode 標記設定 (預先發布版)。

如要瞭解 --ignore_idle_slots 旗標,請參閱「閒置運算單元」。預設值為 false

如要進一步瞭解可預測的預留項目,請參閱「可預測的預留項目」。

更新預訂

你可以對預訂項目進行下列更新:

  • 新增或移除運算單元,即可變更預訂大小。
  • 設定此預留項目中的查詢是否要使用閒置運算單元。
  • 變更分配給預留項目的基準或自動調度運算單元數量。
  • 設定目標工作並行。

如要變更預訂的集數,請先刪除預訂,然後建立更新集數的預訂。

所需權限

如要更新預留項目,您需要下列身分與存取權管理 (IAM) 權限:

  • bigquery.reservations.update,該管理專案會維護承諾使用合約的所有權。

下列預先定義的 IAM 角色都具備這項權限:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。

變更預留項目大小

你可以為現有預約新增或移除時段。

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「容量管理」

  3. 按一下「運算單元預留項目」分頁標籤。

  4. 找出要更新的預訂。

  5. 展開「動作」選項。

  6. 按一下 [編輯]

  7. 在「預留項目大小上限選取器」對話方塊中,輸入預留項目大小上限。

  8. 在「Baseline slots」(基準運算單元) 欄位中,輸入基準運算單元數量。

  9. 如要展開「進階設定」部分,請按一下展開箭頭。

  10. 選用:如要設定目標工作並行,請按一下「覆寫自動目標工作並行設定」切換鈕,然後輸入「目標工作並行」

  11. 按一下 [儲存]

SQL

如要變更預訂大小,請使用ALTER RESERVATION SET OPTIONS資料定義語言 (DDL) 陳述式

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入下列陳述式:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

    取代下列項目:

    • ADMIN_PROJECT_ID:擁有預留資源的管理專案專案 ID
    • LOCATION:預訂的位置,例如 europe-west9
    • RESERVATION_NAME:預訂的名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。

    • NUMBER_OF_BASELINE_SLOTS:要分配給預留項目的基準運算單元數量。
    • NUMBER_OF_AUTOSCALING_SLOTS:指派給預留項目的自動調度運算單元數量。這等於預留項目大小上限減去基準運算單元數量。

  3. 按一下「執行」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。

bq

如要更新預訂大小,請使用 bq update 指令並加上 --reservation 標記:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --reservation RESERVATION_NAME

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:預訂的地點
  • NUMBER_OF_BASELINE_SLOTS:要分配給預留項目的基準運算單元數量
  • RESERVATION_NAME:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。
  • NUMBER_OF_AUTOSCALING_SLOTS:指派給預留項目的自動調度運算單元數量。這等於預留項目大小上限減去基準運算單元數量。

Python

使用這個程式碼範例前,請先安裝 google-cloud-bigquery-reservation 套件。 建構 ReservationServiceClient。使用 ReservationFieldMask.paths 屬性說明更新的屬性。使用 update_reservation 方法更新預訂。
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

設定查詢是否要使用閒置運算單元

--ignore_idle_slots 旗標可控制在保留項目中執行的查詢是否能使用其他保留項目的閒置運算單元。詳情請參閱「閒置運算單元」。你可以更新現有預訂的這項設定。

如要更新預訂項目,請使用 bq update 指令並加上 --reservation 旗標。以下範例將 --ignore_idle_slots 設為 true,也就是說,預留項目只會使用分配給預留項目的時段。

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

更改下列內容:

  • ADMIN_PROJECT_ID:專案 ID
  • LOCATION:預訂的地點
  • RESERVATION_NAME:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。

列出閒置時段設定

如要列出預留項目的閒置時段設定,請執行下列操作:

SQL

查詢INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT 檢視區塊ignore_idle_slots 欄。

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入下列陳述式:

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;

    取代下列項目:

    • ADMIN_PROJECT_ID:擁有預留資源的管理專案專案 ID
    • LOCATION:預訂的位置

  3. 按一下「執行」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。

bq

請使用 bq ls 指令,並加上 --reservation 旗標:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預留資源的管理專案專案 ID
  • LOCATION:預訂的位置

ignoreIdleSlots 欄位包含設定。

刪除保留項目

刪除預留項目後,目前使用該預留項目運算單元執行的任何工作都會失敗。為避免發生錯誤,請先讓執行中的工作完成,再刪除預訂。

所需權限

如要刪除預留項目,您需要下列身分與存取權管理 (IAM) 權限:

  • bigquery.reservations.delete,該管理專案會維護承諾使用合約的所有權。

下列預先定義的 IAM 角色都具備這項權限:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。

刪除預留項目

主控台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在導覽選單中,按一下「容量管理」

  3. 按一下「預訂」分頁標籤。

  4. 找出要刪除的預訂。

  5. 展開「動作」選項。

  6. 點選「刪除」。

  7. 按一下「Delete reservation」(刪除保留項目) 對話方塊中的「Delete」(刪除)

SQL

如要刪除預留位置,請使用 DROP RESERVATION DDL 陳述式

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入下列陳述式:

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;

    取代下列項目:

    • ADMIN_PROJECT_ID:擁有預留資源的管理專案專案 ID
    • LOCATION:預訂的地點
    • RESERVATION_NAME:預訂 ID

  3. 按一下「執行」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。

bq

如要刪除預留項目,請使用 bq rm 指令並加上 --reservation 旗標:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預留資源的管理專案專案 ID
  • LOCATION:預訂的地點
  • RESERVATION_NAME:預訂名稱。名稱只能包含小寫英數字元或連字號,開頭必須是字母,而且結尾不得為連字號,長度上限為 64 個字元。

Python

使用這個程式碼範例前,請先安裝 google-cloud-bigquery-reservation 套件。 建構 ReservationServiceClient。 使用 delete_reservation 方法刪除預留項目。
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")

控管預訂存取權

如要尋求支援,或針對這項功能提供意見回饋,請傳送電子郵件至 bigquery-wlm-feedback@google.com

您可以控管哪些使用者可存取特定預訂。如要讓使用者覆寫查詢的預留項目,他們必須擁有該預留項目的 reservations.use 權限。

所需權限

如要取得為工作指定特定預訂項目所需的權限,請要求管理員授予您預訂資源的預訂項目編輯者 (roles/bigquery.reservationEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色具備 reservations.use 權限,可為工作指定特定預留位置。

您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

控管預訂項目的存取權

如要在預訂項目中設定 Identity and Access Management (IAM) 條件,請執行下列任一操作:

主控台

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往 IAM

  2. 選取專案、資料夾或機構。

  3. 選取要將 bigquery.resourceEditor 角色授予哪一個主體:

  • 如要將 bigquery.resourceEditor 角色授予資源上已有其他角色的主體,請找出包含該主體的資料列,然後點選該列中的 「編輯主體」,並按一下 「新增其他角色」

  • 如要將 bigquery.resourceEditor 角色授予資源上沒有任何角色的主體,請按一下 「授予存取權」,然後輸入主體的 ID,例如 my-user@example.com

  1. 從下拉式清單中選取要授予的 bigquery.resourceEditor 角色。
  2. 為角色新增條件。舉例來說,您可以新增條件,將角色授予所有以 /reservation1 結尾的預訂。
  3. 按一下 [儲存]。主體就會取得指定資源的角色。

bq

如要授予預留項目存取權,請使用 bq set-iam-policy 指令:

  bq set-iam-policy projects/project1/locations/US << EOF
  resource: "RESOURCE"
  policy {
    bindings {
      role: "roles/bigquery.resourceAdmin"
        members: "user:USER"
        condition {
          title: "title"
          expression: "EXPRESSION"
        }
      }
    }
  update_mask { paths: "bindings" }
  EOF

更改下列內容:

  • RESOURCE:預訂資源的名稱。
  • USER:您要授予角色的使用者電子郵件地址。
  • EXPRESSION:角色授權依據的運算式。例如:resource.name.endsWith(\"/res1\")

如要進一步瞭解 IAM,請參閱「管理其他資源的存取權」。