RESERVATIONS 视图
INFORMATION_SCHEMA.RESERVATIONS
视图包含管理项目中所有当前预留的近乎实时列表。每一行代表一个当前预留。当前预留是指尚未删除的预留。如需详细了解预留,请参阅预留简介。
所需权限
要查询 INFORMATION_SCHEMA.RESERVATIONS
视图,您需要拥有项目的 bigquery.reservations.list
Identity and Access Management (IAM) 权限。以下每个预定义的 IAM 角色均可提供所需的权限:
roles/bigquery.resourceAdmin
roles/bigquery.resourceEditor
roles/bigquery.resourceViewer
roles/bigquery.user
roles/bigquery.admin
如需详细了解 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 |
有关预留的自动扩缩容量的信息。包括以下字段:
|
edition |
STRING |
与此预留关联的版本。如需详细了解版本,请参阅 BigQuery 版本简介。 |
范围和语法
针对此视图的查询必须包含区域限定符。如果您未指定区域限定符,则会从所有区域检索元数据。下表说明了此视图的区域范围:
视图名称 | 资源范围 | 区域范围 |
---|---|---|
[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
联接,以将作业时间片与预留信息相关联。