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:

  • current_slots es la cantidad de ranuras que se agregaron a la reserva mediante el ajuste de escala automático.
  • max_slots es la cantidad máxima de ranuras que se pueden agregar a la reserva mediante el ajuste de escala automático.
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
Reemplaza lo siguiente:

  • 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.