「預訂」檢視畫面

INFORMATION_SCHEMA.RESERVATIONS 檢視畫面會列出管理專案中所有目前的預留項目,且清單近乎即時更新。每一列代表一個目前的預訂。目前的預訂是指尚未刪除的預訂。如要進一步瞭解預留項目,請參閱「預留項目簡介」。

必要權限

如要查詢 INFORMATION_SCHEMA.RESERVATIONS 檢視,您必須具備專案的 bigquery.reservations.list Identity and Access Management (IAM) 權限。下列預先定義的 IAM 角色都包含必要權限:

  • BigQuery 資源管理員 (roles/bigquery.resourceAdmin)
  • BigQuery 資源編輯者 (roles/bigquery.resourceEditor)
  • BigQuery 資源檢視者 (roles/bigquery.resourceViewer)
  • BigQuery 使用者 (roles/bigquery.user)
  • BigQuery 管理員 (roles/bigquery.admin)

如要進一步瞭解 BigQuery 權限,請參閱 BigQuery IAM 角色和權限

結構定義

INFORMATION_SCHEMA.RESERVATIONS 檢視表具有下列結構定義:

資料欄名稱 資料類型
ddl STRING 用來建立這項預留資源的 DDL 陳述式。
project_id STRING 管理專案的 ID。
project_number INTEGER 管理專案的編號。
reservation_name STRING 使用者提供的預留項目名稱。
ignore_idle_slots BOOL 如為 false,使用這個預留項目的任何查詢都可以使用其他容量承諾的閒置運算單元。
slot_capacity INTEGER 預留項目的基準。
target_job_concurrency INTEGER 可同時執行的查詢目標數量,受可用資源限制。如果為零,系統會根據可用資源自動計算這個值。
autoscale STRUCT

保留項目的自動調度容量相關資訊。欄位包括:

  • current_slots:自動調度資源功能為預訂新增的時段數量。
  • max_slots:自動調度資源可為預留項目新增的運算單元數量上限。
edition STRING 與這項預訂相關聯的版本。如要進一步瞭解版本,請參閱「BigQuery 版本簡介」。
primary_location STRING 預訂項目主要副本的目前位置。這個欄位只會針對使用代管災難復原功能的預留項目設定。
secondary_location STRING 預留項目次要副本的目前位置。這個欄位只會針對使用代管災難復原功能的預留項目設定。
original_primary_location STRING 最初建立預訂的位置。
labels RECORD 與預訂項目相關聯的標籤陣列。
max_slots INTEGER 這個預留項目可使用的運算單元數量上限,包括基準運算單元 (slot_capacity)、閒置運算單元 (如果 ignore_idle_slots 為 false) 和自動調度運算單元。使用者會指定這個欄位,以使用預訂預測功能
scaling_mode STRING 預留項目的縮放模式,決定預留項目如何從基準縮放至 max_slots。使用者會指定這個欄位,以使用預訂預測功能

範圍和語法

對這個檢視表執行的查詢必須包含區域限定詞。如未指定區域限定符,系統會從所有區域擷取中繼資料。下表說明這個檢視畫面的區域範圍:

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] 專案層級 REGION
取代下列項目:
  • 選用:PROJECT_ID:您的 Google Cloud 專案 ID。如未指定,系統會使用預設專案。
  • REGION:任何資料集區域名稱。 例如:`region-us`

在預訂檢視畫面和工作檢視畫面之間進行聯結

工作檢視畫面包含 reservation_id 欄。如果作業是在已指派保留項目的專案中執行,reservation_id 會採用下列格式:reservation-admin-project:reservation-location.reservation-name

如要在預訂檢視畫面和工作檢視畫面之間加入,可以在工作檢視畫面資料欄 reservation_id 和預訂檢視畫面資料欄 project_idreservation_name 之間加入。以下範例顯示預訂和工作檢視區塊之間的 JOIN 子句範例。

範例

以下範例顯示過去一小時內,專案的運算單元用量、運算單元容量和指派的預留項目。運算單元用量以每秒運算單元毫秒為單位。

WITH
  job_data AS (
  SELECT
    job.period_start,
    job.reservation_id,
    job.period_slot_ms,
    job.job_id,
    job.job_type
  FROM
    `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job
  WHERE
    job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR))
SELECT
  reservation.reservation_name AS reservation_name,
  job.period_start,
  reservation.slot_capacity,
  job.period_slot_ms,
  job.job_id,
  job.job_type
FROM
  job_data AS job
INNER JOIN
  `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation
ON
  (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));

輸出結果會與下列內容相似:

+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name |    period_start     | slot_capacity | period_slot_ms |           job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation   | 2021-04-30 17:30:54 |           100 |          11131 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:55 |           100 |          49978 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:56 |           100 |           9038 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:57 |           100 |          17237 | bquxjob_66707... | QUERY    |

這項查詢使用 RESERVATIONS 檢視取得預訂資訊。如果預訂在過去一小時內有變更,「reservation_slot_capacity」欄可能不準確。

查詢會聯結 RESERVATIONSJOBS_TIMELINE,將工作時間片段與預訂資訊建立關聯。