「預留項目」檢視畫面

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 與預訂相關聯的標籤陣列。
reservation_group_path ARRAY<STRING> 預留項目連結的預留項目群組。舉例來說,如果預留項目連結至群組 my-group,reservation_group_path 欄位會包含類似 [my-group] 的清單。
max_slots INTEGER 這項預留項目可使用的運算單元數量上限,包括基準運算單元 (slot_capacity)、閒置運算單元 (如果 ignore_idle_slots 為 false) 和自動調度資源運算單元。使用者指定這個欄位,即可使用預留項目可預測性功能。
scaling_mode STRING 預留項目的調度資源模式,決定預留項目如何從基準調度至 max_slots。使用者指定這個欄位,即可使用預留項目可預測性功能。

為確保穩定性,建議您在資訊結構定義查詢中明確列出資料欄,而非使用萬用字元 (SELECT *)。明確列出資料欄可避免查詢因基礎結構定義變更而中斷。

範圍和語法

對這個檢視表執行的查詢必須包含區域限定詞。下表說明這個檢視畫面的區域範圍:

檢視表名稱 資源範圍 區域範圍
[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_id 和 reservation_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 欄可能不準確。

查詢會將 RESERVATIONS 與 JOBS_TIMELINE 彙整,將工作時間片段與預留資訊建立關聯。