Vista RESERVAS

La vista INFORMATION_SCHEMA.RESERVATIONS contiene una lista casi en tiempo real de todas las reservas actuales del proyecto de administración. Cada fila representa una reserva actual. Una reserva actual es una reserva que no se ha eliminado. Para obtener más información sobre las reservas, consulta el artículo Introducción a las reservas.

Permiso obligatorio

Para consultar la vista INFORMATION_SCHEMA.RESERVATIONS, necesitas el permiso bigquery.reservations.list de gestión de identidades y accesos (IAM) en el proyecto. Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye el permiso necesario:

  • Administrador de recursos de BigQuery (roles/bigquery.resourceAdmin)
  • Editor de recursos de BigQuery (roles/bigquery.resourceEditor)
  • Lector de recursos de BigQuery (roles/bigquery.resourceViewer)
  • Usuario de BigQuery (roles/bigquery.user)
  • Administrador de BigQuery (roles/bigquery.admin)

Para obtener más información sobre los permisos de BigQuery, consulta el artículo sobre los roles y permisos de gestión de identidades y accesos de BigQuery.

Esquema

La vista INFORMATION_SCHEMA.RESERVATIONS tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
ddl STRING La instrucción DDL utilizada 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 la reserva proporcionado por el usuario.
ignore_idle_slots BOOL Si es false, cualquier consulta que use esta reserva puede usar las ranuras inactivas sin usar de otros compromisos de capacidad.
slot_capacity INTEGER Valor de referencia de la reserva.
target_job_concurrency INTEGER El número objetivo de consultas que se pueden ejecutar simultáneamente, que está limitado por los recursos disponibles. Si es cero, este valor se calcula automáticamente en función de los recursos disponibles.
autoscale STRUCT

Información sobre la capacidad de escalado automático de la reserva. Los campos incluyen lo siguiente:

  • current_slots: número de espacios que se han añadido a la reserva mediante el ajuste de escala automático.
  • max_slots: número máximo de espacios que se pueden añadir a la reserva mediante el ajuste de escala automático.
edition STRING La edición asociada a esta reserva. Para obtener más información sobre las ediciones, consulta Introducción a las ediciones de BigQuery.
primary_location STRING Ubicación actual de la réplica principal de la reserva. Este campo solo se define en las reservas que usan la función de recuperación ante desastres gestionada.
secondary_location STRING Ubicación actual de la réplica secundaria de la reserva. Este campo solo se define en las reservas que usan la función de recuperación ante desastres gestionada.
original_primary_location STRING Ubicación en la que se creó originalmente la reserva.
labels RECORD Matriz de etiquetas asociadas a la reserva.
max_slots INTEGER El número máximo de ranuras que puede usar esta reserva, incluidas las ranuras de base (slot_capacity), las ranuras inactivas (si ignore_idle_slots es false) y las ranuras de escalado automático. Los usuarios especifican este campo para usar la función de previsibilidad de reservas.
scaling_mode STRING El modo de escalado de la reserva, que determina cómo se escala la reserva desde la línea de base hasta max_slots. Los usuarios especifican este campo para usar la función de previsibilidad de reservas.

Ámbito y sintaxis

Las consultas en esta vista deben incluir un calificador de región. Si no especifica un calificador regional, los metadatos se recuperan de todas las regiones. En la siguiente tabla se explica el ámbito de la región de esta vista:

Nombre de la vista Ámbito de los recursos Ámbito de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] Nivel de proyecto REGION
Sustituye lo siguiente:
  • Opcional: PROJECT_ID: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado.
  • REGION: cualquier nombre de región del conjunto de datos. Por ejemplo, `region-us`.

Unión entre las vistas de reserva y las de trabajo

Las vistas de tareas contienen la columna reservation_id. Si tu trabajo se ejecutó en un proyecto al que se le asignó una reserva, reservation_id seguiría este formato: reservation-admin-project:reservation-location.reservation-name.

Para combinar las vistas de reserva y de tarea, puedes combinar la columna de vistas de tarea reservation_id con las columnas de vistas de reserva project_id y reservation_name. En el siguiente ejemplo se muestra cómo usar la cláusula JOIN entre las vistas de reserva y de trabajo.

Ejemplo

En el siguiente ejemplo se muestra el uso de las ranuras, la capacidad de las ranuras y la reserva asignada de un proyecto con una asignación de reserva durante la última hora. El uso de los slots se indica en unidades de milisegundos de slot 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 debería ser 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 sobre las reservas. Si las reservas han cambiado en la última hora, es posible que la columna reservation_slot_capacity no sea precisa.

La consulta combina RESERVATIONS con JOBS_TIMELINE para asociar los intervalos de tiempo del trabajo con la información de la reserva.