「預訂」檢視畫面
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 |
保留項目的自動調整容量相關資訊。欄位包括:
|
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_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
彙整,將工作時間片段與預留資訊建立關聯。