「預訂」檢視畫面

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

必要權限

如要查詢 INFORMATION_SCHEMA.RESERVATIONS 檢視畫面,您必須具備專案的 bigquery.reservations.list 身分與存取權管理 (IAM) 權限。以下每個預先定義的 IAM 角色都包含必要的權限:

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」。

結構定義

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 版本簡介」。
primaryLocation STRING 保留資料的主要備用資源目前的位置。這個欄位僅會針對使用受管理的災難復原功能的訂房設定。
secondaryLocation STRING 預留資料的次要備援位置。這個欄位僅會針對使用受管理的災難復原功能的訂房設定。
originalPrimaryLocation STRING 最初建立預訂的所在位置。
labels RECORD 與預訂相關聯的標籤陣列。

範圍和語法

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

檢視表名稱 資源範圍 區域範圍
[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 彙整,將工作時間片段與預留資訊建立關聯。