Vista RESERVATIONS_TIMELINE
En la vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE
, se muestran fragmentos de
metadatos de las reservas casi en tiempo real de cada proyecto del administrador de reservas para cada
minuto. Para comparar el uso de ranuras con la capacidad de las ranuras, puedes combinar la información de la reserva con el cronograma de trabajos mediante la vista de cronograma de reservas.
Esquema
Cuando consultas las vistas INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_*
, los resultados de la consulta contienen una fila por cada minuto de cada reserva de BigQuery en los últimos 180 días y una fila por cada minuto con cambios de reserva para cualquier ocurrencia de más de 180 días. Cada período comienza en un intervalo de un minuto y dura un minuto exacto.
La vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_PROJECT
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
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. |
ignore_idle_slots |
BOOL |
Falso si el uso compartido de ranuras está habilitado; de lo contrario, es verdadero. |
period_start |
TIMESTAMP |
Es la hora de inicio de este período de un minuto. |
project_id |
STRING |
Es el ID del proyecto de administrador de reservas. |
project_number |
INTEGER |
Es el número del proyecto. |
reservation_id |
STRING |
Para unirse con la tabla jobs_timeline. Tiene el formato project_id:location.reservation_name. |
reservation_name |
STRING |
Es el nombre de la reserva. |
slots_assigned |
INTEGER |
La cantidad de ranuras asignadas a esta reserva. |
slots_max_assigned |
INTEGER |
La capacidad máxima de la ranura para esta reserva, incluido el uso compartido de ranuras. Si ignore_idle_slots es verdadero, es igual a slots_assigned ; de lo contrario, es la cantidad total de ranuras en todos los compromisos de capacidad del proyecto de administración. |
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 alcance de la región y los recursos para esta vista:
Nombre de la vista | Permiso del recurso | Permiso de la región |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_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.
Por ejemplo, `region-us`
.
Ejemplos
Ejemplo: Consulta el uso total de ranuras por minuto
Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto con el siguiente formato:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
.
En el siguiente ejemplo, se muestra el uso de ranuras por minuto de proyectos asignados a YOUR_RESERVATION_ID
en todos los trabajos:
SELECT res.period_start, SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes, ANY_VALUE(res.slots_assigned) AS slot_assigned, ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.reservation_id = 'YOUR_RESERVATION_ID' AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start ORDER BY period_start DESC;
El resultado es similar al siguiente:
+-----------------------+---------------------+---------------+-------------------+ | period_start | period_slot_minutes | slots_assigned| slots_max_assigned| +-----------------------+---------------------+---------------+-------------------+ |2021-06-08 21:33:00 UTC| 100.000 | 100 | 100 | |2021-06-08 21:32:00 UTC| 96.753 | 100 | 100 | |2021-06-08 21:31:00 UTC| 41.668 | 100 | 100 | +-----------------------+---------------------+---------------+-------------------+
Ejemplo: Uso de ranuras por reserva
En el siguiente ejemplo, se muestra el uso de ranuras por minuto para cada reserva en el último día:
SELECT res.period_start, res.reservation_id, SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes, ANY_VALUE(res.slots_assigned) AS slots_assigned, ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned, FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start, reservation_id ORDER BY period_start DESC, reservation_id;
El resultado es similar al siguiente:
+-----------------------+----------------+---------------------+---------------+--------------------+ | period_start | reservation_id | period_slot_minutes | slot_assigned | slots_max_assigned | +-----------------------+----------------+---------------------+---------------+--------------------+ |2021-06-08 21:33:00 UTC| prod01 | 100.000 | 100 | 100 | |2021-06-08 21:33:00 UTC| prod02 | 177.201 | 200 | 500 | |2021-06-08 21:32:00 UTC| prod01 | 96.753 | 100 | 100 | |2021-06-08 21:32:00 UTC| prod02 | 182.329 | 200 | 500 | +-----------------------+----------------+---------------------+---------------+--------------------+