管理工作負載指派作業

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

建立保留項目指派作業

如要使用購買的配額,請建立指派作業,將專案、資料夾、機構或主體指派給配額預留項目。您無法在指派層級指派或分配特定數量的運算單元,運算單元是在預訂層級管理及指派。

指派邏輯和條件

專案會使用資源階層中指派給專案的最明確單一預留項目。BigQuery 會使用下列評估邏輯選取正確的預訂:

  1. 資源階層優先順序:BigQuery 會根據指派對象資源的祖先 (專案 > 資料夾 > 機構),評估指派作業。資料夾和機構指派作業不適用於標準版保留項目。
  2. 使用 principal 屬性指派特定使用者 (預先發布): BigQuery 預留項目指派作業支援選用的 principal 屬性,管理員可根據執行作業的使用者或服務帳戶身分,將查詢作業導向特定預留項目。在特定指派對象資源中,如果指派作業與主體相符,優先順序會高於主體未設定的通用指派作業。

    每個專案的使用者專屬指派項目預設上限為 10 個。如需變更預設限制的協助,請傳送電子郵件至 bigquery-wlm-feedback@google.com

如要在預訂項目中建立指派項目,預訂項目必須符合下列至少一項條件:

  • 已設定非零數量的指派基準運算單元。

  • 設定的自動調度運算單元數量不為零。

  • 已設為使用閒置運算單元,且專案中有可用的閒置運算單元。

如果您嘗試將資源指派給不符合至少一項條件的預訂項目,系統會顯示以下訊息:Assignment is pending, your project will be executed as on-demand.

您可以將資源指派給容錯移轉保留項目,但指派作業會在次要位置處於待處理狀態。

所需權限

如要建立預留項目指派作業,您必須具備下列 Identity and Access Management (IAM) 權限:

  • bigquery.reservationAssignments.create 管理專案和指派對象。

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

將機構指派給預留項目

控制台

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

    前往「BigQuery」

  2. 按一下導覽選單中的「工作負載管理」

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

  4. 在預訂表格中找出預訂項目。

  5. 展開「動作」選項。

  6. 按一下「建立作業」

  7. 在「建立作業」部分,按一下「瀏覽」

  8. 瀏覽或搜尋機構,然後選取所需項目。

  9. 在「Job Type」(工作類型) 區段中,選取要為這項預留項目指派的工作類型。選項包括:

    • QUERY
    • CONTINUOUS
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    如要進一步瞭解工作類型,請參閱「預留指派項目」。預設值為 QUERY

    如要進一步瞭解如何透過 Enterprise Plus 版指派,允許使用者使用 Gemini in BigQuery,請參閱「設定 Gemini in BigQuery」。

  10. 選用:在「使用者」欄位中,輸入使用者、服務帳戶或第三方身分的電子郵件地址。

  11. 點選「建立」

SQL

如要將機構指派給預訂項目,請使用 CREATE ASSIGNMENT DDL 陳述式

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

    前往「BigQuery」

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

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS (
      assignee = 'organizations/ORGANIZATION_ID',
      job_type = 'JOB_TYPE',
      principal = 'PRINCIPAL');

    請替換下列項目:

    • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
    • LOCATION:預訂的位置
    • RESERVATION_NAME:預留項目名稱
    • ASSIGNMENT_ID:指派作業的 ID

      ID 在專案和位置中不得重複,開頭和結尾須為小寫英文字母或數字,且只能使用小寫英文字母、數字和破折號。

    • ORGANIZATION_ID機構 ID
    • JOB_TYPE:要指派給這項預留的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
    • 選用:PRINCIPAL:身分格式,指定使用者、服務帳戶或第三方身分

      principal 欄位僅支援下列 IAM 主體 ID 格式:

      • Google 帳戶
      • 服務帳戶
      • 工作團隊身分集區中的單一身分
      • workload identity pool 中的單一身分

  3. 按一下「執行」

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

bq

如要將機構的工作指派給預留項目,請使用 bq mk 指令,並加上 --reservation_assignment 旗標:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_type=ORGANIZATION \
    --assignee_id=ORGANIZATION_ID \
    --job_type=JOB_TYPE \
    --principal=PRINCIPAL

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • ORGANIZATION_ID機構 ID
  • JOB_TYPE:要指派給這項預留的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
  • 選用:PRINCIPAL:指定使用者、服務帳戶或第三方身分的身分識別格式。

    --principal 旗標僅支援下列 IAM 主體 ID 格式:

    • Google 帳戶
    • 服務帳戶
    • 工作團隊身分集區中的單一身分
    • workload identity pool 中的單一身分

建立預訂指派項目後,請等待至少 5 分鐘再執行查詢。否則系統可能會按照以量計價的定價模式計費。

設定專案上限和排程政策覆寫

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

您可以建立專案上限 (一種指派規則),為預訂項目的預設排程政策設定專案專屬的覆寫設定。 舉例來說,您可以限制專案的運算單元用量和並行查詢數量。

與其他決定專案使用哪個預訂項目的預訂指派不同,專案上限是僅控管特定專案排程行為的指派資源。

建立專案上限時,須遵守下列限制:

  • 指派對象必須是 Cloud de Confiance 專案。不支援資料夾和機構。
  • 工作類型必須未設定,或明確設為 JOB_TYPE_UNSPECIFIED
  • 變更 max_slots 政策值後,必須先啟動新查詢,更新才會生效。

如要透過這些排程政策指派項目建立專案上限,請選取下列任一選項:

控制台

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

    前往「BigQuery」

  2. 在導覽選單中,依序前往「Administration」>「Workload management」

  3. 按一下「指派規則」分頁標籤。

  4. 按一下「建立指派規則」

  5. 在「規則類型」清單中,選取「專案上限」

  6. 在「Select a project」清單中選取專案,然後按一下「Continue」

  7. 在「預留項目」清單中選取預留項目,然後按一下「繼續」

  8. 在「專案覆寫」部分,於「最大時段數」和「最大並行數」欄位中輸入值。

  9. 點選「建立」

SQL

如要建立專案排程政策指派,請使用 CREATE ASSIGNMENT DDL 陳述式搭配 scheduling_policy_max_slotsscheduling_policy_concurrency 選項。

CREATE ASSIGNMENT
  `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
  assignee = 'projects/PROJECT_ID',
  scheduling_policy_max_slots = MAX_SLOTS,
  scheduling_policy_concurrency = MAX_CONCURRENCY);

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • ASSIGNMENT_ID:指派作業的 ID
  • PROJECT_ID:要指派的 Cloud de Confiance 專案 ID
  • MAX_SLOTS:專案中執行的查詢可消耗的運算單元數量上限
  • MAX_CONCURRENCY:專案可同時執行的查詢數量上限

bq

如要使用 bq 指令列工具建立排程政策指派,請使用 bq mk 指令搭配 --scheduling_policy_max_slots--scheduling_policy_concurrency 旗標。

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT \
    --scheduling_policy_max_slots=MAX_SLOTS \
    --scheduling_policy_concurrency=MAX_CONCURRENCY

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • PROJECT_ID:要指派的 Cloud de Confiance 專案 ID
  • MAX_SLOTS:專案中執行的查詢可消耗的運算單元數量上限
  • MAX_CONCURRENCY:專案可同時執行的查詢數量上限

如要修改或移除現有的排程政策指派項目,請使用 ALTER ASSIGNMENT DDL 陳述式:

ALTER ASSIGNMENT
  `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
SET OPTIONS (
  scheduling_policy_max_slots = NEW_MAX_SLOTS,
  scheduling_policy_concurrency = NEW_MAX_CONCURRENCY);
-- To remove a scheduling policy setting, set its values to null. To all
   settings, delete the assignment.
   

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • ASSIGNMENT_ID:指派作業的 ID
  • NEW_MAX_SLOTS:專案中執行的查詢可消耗的運算單元數量上限
  • NEW_MAX_CONCURRENCY:專案可同時執行的查詢數量上限

如要查看有效的排程政策覆寫,請查看 INFORMATION_SCHEMA.ASSIGNMENTS 檢視畫面中的 scheduling_policyassignment_type 欄。

將專案或資料夾指派給預留項目

控制台

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

    前往「BigQuery」

  2. 按一下導覽選單中的「工作負載管理」

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

  4. 在預訂表格中找出預訂項目。

  5. 展開「動作」選項。

  6. 按一下「建立作業」

  7. 在「建立作業」部分,按一下「瀏覽」

  8. 瀏覽或搜尋專案或資料夾,並選取所需項目。

  9. 在「Job Type」(工作類型) 區段中,選取要為這項預留項目指派的工作類型。選項包括:

    • QUERY
    • CONTINUOUS
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    控制台目前不支援建立及修改更精細的背景工作類型,例如 BACKGROUND_COLUMN_METADATA_INDEX

    如要進一步瞭解工作類型,請參閱「預留指派項目」。預設值為 QUERY

  10. 選用:在「使用者」欄位中,輸入使用者、服務帳戶或第三方身分的電子郵件地址。

  11. 點選「建立」

SQL

如要將專案指派給預留項目,請使用 CREATE ASSIGNMENT DDL 陳述式

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

    前往「BigQuery」

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

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE",
      principal="PRINCIPAL");

    請替換下列項目:

    • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
    • LOCATION:預訂的位置
    • RESERVATION_NAME:預留項目名稱
    • ASSIGNMENT_ID:指派作業的 ID

      ID 在專案和位置中不得重複,開頭和結尾須為小寫英文字母或數字,且只能使用小寫英文字母、數字和破折號。

    • PROJECT_ID:要指派給預留項目的專案 ID
    • JOB_TYPE:要指派給這項預訂的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUND_CHANGE_DATA_CAPTUREBACKGROUND_COLUMN_METADATA_INDEXBACKGROUND_SEARCH_INDEX_REFRESHBACKGROUNDML_EXTERNAL
    • 選用:PRINCIPAL:身分格式,指定使用者、服務帳戶或第三方身分。principal 欄位僅支援下列 IAM 主體 ID 格式:

      • Google 帳戶
      • 服務帳戶
      • 工作團隊身分集區中的單一身分
      • workload identity pool 中的單一身分

  3. 按一下「執行」

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

bq

如要將工作指派給預留項目,請使用 bq mk 指令並加上 --reservation_assignment 旗標:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_type=PROJECT \
    --assignee_id=PROJECT_ID \
    --job_type=JOB_TYPE \
    --principal=PRINCIPAL

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • PROJECT_ID:要指派給這項預留位置的專案 ID
  • JOB_TYPE:要指派給這項預訂的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUND_CHANGE_DATA_CAPTUREBACKGROUND_COLUMN_METADATA_INDEXBACKGROUND_SEARCH_INDEX_REFRESHBACKGROUNDML_EXTERNAL
  • 選用:PRINCIPAL:指定使用者、服務帳戶或第三方身分的身分識別格式。

    --principal 旗標僅支援下列 IAM 主體 ID 格式:

    • Google 帳戶
    • 服務帳戶
    • 工作團隊身分集區中的單一身分
    • workload identity pool 中的單一身分

Terraform

請使用 google_bigquery_reservation_assignment 資源。

如要向 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
  }
}

data "google_project" "project" {}

resource "google_bigquery_reservation_assignment" "default" {
  assignee    = "projects/${data.google_project.project.project_id}"
  job_type    = "QUERY"
  reservation = google_bigquery_reservation.default.id
}

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

準備 Cloud Shell

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

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

    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. 開啟 Cloud de Confiance 專案即可查看結果。在 Cloud de Confiance 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

建立預訂指派項目後,請等待至少 5 分鐘再執行查詢。否則系統可能會按照以量計價的定價模式計費。

如要建立僅使用閒置運算單元的專案,請建立保留項目,並為其指派 0 個運算單元,然後按照先前的步驟將專案指派給該保留項目。

指派給特定使用者

您可以將預留項目指派給專案、資料夾或機構中的特定主體,例如使用者或服務帳戶。這項功能有助於將特定使用者的工作負載,導向專屬的保留項目。

在決定要為工作使用哪個保留項目時,BigQuery 會依下列順序評估指派作業:

  1. 評估資源階層,從專案開始,然後是父項資料夾,最後是機構。
  2. 在階層的每個層級,BigQuery 會先檢查是否有與執行工作的主體相符的指派項目。
  3. 如果該層級沒有與主體相符的指派項目,請檢查同一層級是否有沒有主體的一般指派項目。
  4. 如果找不到指派項目,請前往階層中的下一個層級。

如果專案層級的指派項目沒有主體,就會覆寫資料夾層級有主體的指派項目。

支援的主體格式

principal 選項支援下列 IAM v2 主體格式:

身分類型 主要格式
使用者 principal://goog/subject/EMAIL_ADDRESS
服務帳戶 principal://iam.googleapis.com/projects/-/serviceAccounts/EMAIL_ADDRESS
工作團隊身分集區身分 principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID
Workload Identity Pool 身分 principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID

將主體指派給預留項目

SQL

如要建立使用者專屬的指派項目,請使用 CREATE ASSIGNMENT DDL 陳述式搭配 principal 選項。

CREATE ASSIGNMENT
  `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
  assignee = 'projects/PROJECT_ID',
  principal = 'principal://goog/subject/EMAIL_ADDRESS',
  job_type = 'QUERY');

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • ASSIGNMENT_ID:指派作業 ID
  • PROJECT_ID:專案 ID
  • `EMAIL_ADDRESS:使用者的電子郵件地址
  • JOB_TYPE:要指派給這項預留的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL

bq

如要建立使用者專屬的指派項目,請使用 bq mk 指令並加上 --principal 旗標:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT \
    --principal=PRINCIPAL \
    --job_type=JOB_TYPE

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • ASSIGNMENT_ID:指派作業 ID
  • PROJECT_ID:專案 ID
  • PRINCIPAL: the principal identifier, for example,principal://goog/subject/EMAIL_ADDRESS`
  • JOB_TYPE:要指派給這項預留的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL

將專案指派給「none

指派給 none 代表沒有指派作業。指派給 none 的專案會採用以量計價方案。

SQL

如要將專案指派給 none,請使用 CREATE ASSIGNMENT DDL 陳述式

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

    前往「BigQuery」

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

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="QUERY");

    請替換下列項目:

    • LOCATION:應採用以量計價的職缺地點
    • ASSIGNMENT_ID:指派作業的 ID

      ID 在專案和位置中不得重複,開頭和結尾須為小寫英文字母或數字,且只能使用小寫英文字母、數字和破折號。

    • PROJECT_ID:要指派給預留項目的專案 ID

  3. 按一下「執行」

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

bq

如要將專案指派給 none,請使用 bq mk 指令並加上 --reservation_assignment 標記:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=none \
    --job_type=QUERY \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
  • LOCATION:應採用以量計價的職缺地點
  • PROJECT_ID:要指派給 none 的專案 ID

Terraform

請使用 google_bigquery_reservation_assignment 資源。

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

以下範例會將專案指派給 none

data "google_project" "project" {}

resource "google_bigquery_reservation_assignment" "default" {
  assignee    = "projects/${data.google_project.project.project_id}"
  job_type    = "QUERY"
  reservation = "projects/${data.google_project.project.project_id}/locations/us/reservations/none"
}

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

準備 Cloud Shell

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

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

    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. 開啟 Cloud de Confiance 專案即可查看結果。在 Cloud de Confiance 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

如果管理專案中沒有任何預留項目,您就必須使用 bq 指令列工具,查看指派給 none 的專案。

覆寫查詢的預留項目

如要在查詢中使用特定預留項目,您需要下列 Identity and Access Management (IAM) 權限:

  • 預留項目或管理專案bigquery.reservations.use 權限。

如要指派查詢在特定預留項目中執行,請執行下列任一操作:

控制台

  1. 前往「BigQuery」頁面。

    前往「BigQuery」

  2. 按一下 「SQL 查詢」

  3. 在查詢編輯器中輸入有效的 GoogleSQL 查詢。

  4. 依序點選「編輯」>「查詢設定」

  5. 清除「自動位置設定」核取方塊,然後選取預留項目所在的區域或多區域。

  6. 在「預留項目」清單中,選取要執行查詢的預留項目。

  7. 按一下 [儲存]

  8. 在編輯器分頁中編寫查詢並執行。查詢會在您指定的預訂中執行。

SQL

在工作階段中設定 @@reservation 系統變數,指派查詢執行的預留位置:

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

    前往「BigQuery」

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

    SET @@reservation='RESERVATION';
    SELECT QUERY;

    更改下列內容:

    • RESERVATION:要執行查詢的預留位置。

    • QUERY:要執行的查詢。

  3. 按一下「執行」

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

舉例來說,下列查詢會使用 SET 陳述式,將 US 多區域中的預留項目設為 test-reservation,然後呼叫基本查詢:

SET @@reservation='projects/project1/locations/US/reservations/test-reservation';
SELECT 42;

bq

  1. 在 Cloud de Confiance 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Cloud de Confiance Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 在 Cloud Shell 中,使用 bq query 指令--reservation_id 旗標執行查詢:

    bq query --use_legacy_sql=false --reservation_id=RESERVATION_ID
    'QUERY'

    更改下列內容:

    • RESERVATION_ID:要執行查詢的預訂。

    • QUERY:查詢的 SQL 陳述式。

    舉例來說,下列查詢會在 US 多區域的 test-reservation 預留項目中執行:

    bq query --reservation_id=project1.US:test-reservation 'SELECT 42;'

API

如要使用 API 指定預留位置,請插入新工作,並填入 query 工作設定屬性。在 reservation 欄位中指定預訂。

將運算單元指派給 BigQuery ML 工作負載

以下各節將說明 BigQuery ML 模型的預留空間指派規定。如要建立這些保留項目指派設定,請按照「將機構指派給保留項目」或「將專案或資料夾指派給保留項目」中的程序操作。

外部模型

下列 BigQuery ML 模型類型會使用外部服務:

如要使用這些服務將預留時段指派給查詢,請建立使用 ML_EXTERNAL 工作類型的預留指派項目。如果系統找不到 ML_EXTERNAL 工作類型的預訂指派,查詢工作會使用以量計價模式執行。

如果是外部模型訓練工作,保留項目指派中的運算單元會用於預先處理、訓練和後續處理步驟。訓練期間無法搶佔這些位置,但預先處理和後續處理期間可以使用閒置位置。

矩陣分解模型

如要建立矩陣因式分解模型,您必須建立保留項目,並使用 BigQuery Enterprise 或 Enterprise Plus 版,然後建立使用 QUERY 工作類型的保留項目指派作業。

其他模型類型

如果是外部模型或矩陣因式分解模型以外的 BigQuery ML 模型,您可以建立使用 QUERY 工作類型的保留項目指派作業,將預留運算單元指派給使用這些服務的查詢。如果系統找不到任何指派的保留項目,且工作類型為 QUERY,查詢工作就會採用依用量計價

尋找保留項目指派作業

所需權限

如要搜尋特定專案、資料夾或機構的保留項目指派作業,您必須具備下列 Identity and Access Management (IAM) 權限:

  • 管理專案的 bigquery.reservationAssignments.list

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

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

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

尋找專案的預留項目指派作業

如要查看是否已將專案、資料夾或機構指派給保留項目,請按照下列步驟操作:

控制台

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

    前往「BigQuery」

  2. 按一下導覽選單中的「工作負載管理」

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

  4. 在預訂項目表格中展開預訂項目,即可查看指派給該預訂項目的資源,或使用「篩選器」欄位依資源名稱篩選。

SQL

如要找出專案查詢工作指派的保留項目,請查詢 INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT 檢視畫面

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

    前往「BigQuery」

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

      SELECT
        assignment_id
      FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
      WHERE
        assignee_id = 'PROJECT_ID'
        AND job_type = 'JOB_TYPE';

    請替換下列項目:

    • LOCATION:要查看預訂的位置
    • ADMIN_PROJECT_ID:擁有預訂資源的管理專案專案 ID
    • PROJECT_ID:要指派給預留項目的專案 ID
    • JOB_TYPE:要指派給這項預留的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL

  3. 按一下「執行」

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

bq

如要找出專案的查詢工作所指派的預留項目,請使用 bq show 指令搭配 --reservation_assignment 旗標:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

如要找出特定使用者的指派項目,請加入 --principal 旗標:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT \
    --principal=PRINCIPAL

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的專案 ID
  • LOCATION:要查看預訂的位置
  • JOB_TYPE:要指派給這項預留的工作類型,例如 QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
  • PROJECT_ID:專案 ID
  • PRINCIPAL:主體 ID,例如 principal://goog/subject/EMAIL_ADDRESS

如要查看特定使用者的有效指派規則,請檢查「INFORMATION_SCHEMA.ASSIGNMENTS」檢視畫面中的「principal」欄,或執行「bq ls --reservation_assignment」。此外,您也可以查詢 INFORMATION_SCHEMA.JOBS 檢視畫面,確認哪個預訂執行了特定工作。使用 bq show --reservation_assignment 指令時,您可以加入選用的 --principal 旗標,篩選特定使用者指派項目。

更新保留項目指派作業

將指派作業移至其他預訂

您可以將指派作業從一個預訂項目移至另一個預訂項目。

如要移動保留項目指派作業,您必須在管理專案和指派對象中,具備下列身分與存取權管理 (IAM) 權限。

  • bigquery.reservationAssignments.create
  • bigquery.reservationAssignments.delete

下列預先定義的 IAM 角色都包含這些權限:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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

如要移動作業,請使用 bq update 指令:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --destination_reservation_id=DESTINATION_RESERVATION \
    ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的專案 ID
  • LOCATION:新預訂的地點
  • RESERVATION_NAME:要從中移轉指派作業的預訂
  • DESTINATION_RESERVATION:要將指派項目移至的預訂
  • ASSIGNMENT_ID:指派作業的 ID

    如要取得指派 ID,請參閱「列出專案的預訂指派作業」。

刪除預留項目指派作業

如要將專案從預訂項目中移除,請刪除預訂項目指派作業。如果未將專案指派給任何保留項目,該專案會繼承上層資料夾或機構中的任何指派作業,否則如果沒有上層指派作業,則會採用以量計價模式。

刪除保留項目指派作業後,使用該保留項目中時段執行的工作會繼續執行,直到完成為止。

所需權限

如要刪除預留項目指派作業,您必須具備下列 Identity and Access Management (IAM) 權限:

  • bigquery.reservationAssignments.delete 管理專案和指派對象。

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

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

將專案從預訂項目中移除

如要將專案從預訂項目中移除:

控制台

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

    前往「BigQuery」

  2. 按一下導覽選單中的「工作負載管理」

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

  4. 在預訂表格中展開預訂項目,找出專案。

  5. 展開「動作」選項。

  6. 點選「刪除」。

SQL

使用 DROP ASSIGNMENT DDL 陳述式

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

    前往「BigQuery」

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

    DROP ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;

    請替換下列項目:

  3. 按一下「執行」

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

bq

如要從預訂項目中移除專案,請使用 bq rm 指令搭配 --reservation_assignment 旗標:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID

更改下列內容:

  • ADMIN_PROJECT_ID:擁有預訂資源的專案 ID
  • LOCATION:預訂的位置
  • RESERVATION_NAME:預訂名稱
  • ASSIGNMENT_ID:指派作業的 ID

    如要取得指派 ID,請參閱「尋找專案的預訂指派作業」。