Vista de RESERVATIONS
La vista INFORMATION_SCHEMA.RESERVATIONS
contiene una lista casi en tiempo real de todas las reservas actuales dentro del proyecto de administración. Cada fila representa una reserva única y actual. Una reserva actual es una reserva que no se borró. Para obtener más información sobre las reservas, consulta Introducción a las reservas.
Permiso necesario
Para consultar la vista INFORMATION_SCHEMA.RESERVATIONS
, necesitas el permiso bigquery.reservations.list
de Identity and Access Management (IAM) para el proyecto.
Cada uno de los siguientes roles predefinidos de IAM incluye el permiso requerido:
roles/bigquery.resourceAdmin
roles/bigquery.resourceEditor
roles/bigquery.resourceViewer
roles/bigquery.user
roles/bigquery.admin
Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.
Esquema
La vista INFORMATION_SCHEMA.RESERVATIONS
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
ddl |
STRING |
La declaración DDL que se usa para crear esta reserva. |
project_id |
STRING |
ID del proyecto de administración. |
project_number |
INTEGER |
Número del proyecto de administración. |
reservation_name |
STRING |
Nombre de reserva que proporcionó el usuario. |
ignore_idle_slots |
BOOL |
Si es falso, toda consulta que use esta reserva puede utilizar las ranuras inactivas de otros compromisos de capacidad. |
slot_capacity |
INTEGER |
Modelo de referencia de la reserva. |
target_job_concurrency |
INTEGER |
La cantidad objetivo de consultas que pueden ejecutarse de forma simultánea, limitada por los recursos disponibles. Si es cero, este valor se calcula de forma automática en función de los recursos disponibles. |
autoscale |
STRUCT |
Información sobre la capacidad de ajuste de escala automático de la reserva. Los campos incluyen lo siguiente:
|
edition |
STRING |
Es la edición asociada a esta reserva. Para obtener más información sobre las ediciones, consulta Introducción a las ediciones de BigQuery. |
Permiso y sintaxis
Las consultas realizadas a esta vista deben incluir un calificador de región. Si no especificas un calificador regional, los metadatos se recuperan de todas las regiones. En la siguiente tabla, se explica el permiso de la región para esta vista:
Nombre de la vista | Permiso del recurso | Permiso de la región |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] |
Nivel de proyecto | REGION |
- Opcional:
PROJECT_ID
: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.
REGION
: Cualquier nombre de región del conjunto de datos.
Un ejemplo es region-us
.
Unión entre las vistas de reserva y las de trabajo
Las vistas de trabajos contienen la columna reservation_id
. Si tu trabajo se ejecutó en un proyecto con una reserva asignada, reservation_id
seguirá este formato: reservation-admin-project:reservation-location.reservation-name
.
Para unir las vistas de reserva y las de trabajo, puedes realizar una unión entre la columna de vistas de trabajo reservation_id
y las columnas de vistas de reservas project_id
y reservation_name
. En el siguiente ejemplo, se muestra un ejemplo de cómo usar la cláusula JOIN
entre las reservas de las reservas y del trabajo.
Ejemplo
En el siguiente ejemplo, se muestra el uso de las ranuras, la capacidad de las ranuras y la reserva asignada para un proyecto con una asignación de reserva en la última hora. El uso de ranuras se proporciona en unidades de milisegundos de ranura por segundo.
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));
El resultado es similar al siguiente:
+------------------+---------------------+---------------+----------------+------------------+----------+
| 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 |
Esta consulta usa la vista RESERVATIONS
para obtener información de reservas. Si las reservas cambiaron en la última hora, es posible que la columna reservation_slot_capacity
no sea precisa.
La consulta une RESERVATIONS
con JOBS_TIMELINE
para asociar los períodos de trabajo con la información de reserva.