Vista RESERVATIONS_TIMELINE
La vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE
muestra
porciones de tiempo de los metadatos de las reservas de cada proyecto de administración de reservas
en tiempo real. Además, el array per_second_details
muestra los detalles del ajuste automático de escala de cada segundo.
Permiso obligatorio
Para consultar la vista INFORMATION_SCHEMA.RESERVATION_TIMELINE
, 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
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 de los últimos 180 días y una fila por cada minuto con cambios en la reserva de cualquier ocurrencia de más de 180 días. Cada periodo empieza en un intervalo de un minuto completo y dura exactamente un minuto.
La vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_PROJECT
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
autoscale |
STRUCT |
Contiene información sobre la capacidad de escalado automático de la reserva. Los campos incluyen lo siguiente:
|
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. |
ignore_idle_slots |
BOOL |
Devuelve el valor "false" si la función de compartir espacios está habilitada; de lo contrario, devuelve "true". |
labels |
RECORD |
Matriz de etiquetas asociadas a la reserva. |
period_start |
TIMESTAMP |
Hora de inicio de este periodo de un minuto. |
per_second_details |
STRUCT |
Contiene información sobre la capacidad de reserva y el uso en cada segundo. Los campos incluyen lo siguiente:
Si se produce algún cambio en el escalado automático o en las reservas durante ese minuto, la matriz se rellena con 60 filas. Sin embargo, en el caso de las reservas que no se escalan automáticamente y que no cambian durante este minuto, la matriz está vacía, ya que, de lo contrario, repetiría el mismo número 60 veces. |
project_id |
STRING |
ID del proyecto de administración de la reserva. |
project_number |
INTEGER |
Número del proyecto. |
reservation_id |
STRING |
Para combinar con la tabla jobs_timeline. Tiene el formato project_id:location.reservation_name. |
reservation_name |
STRING |
El nombre de la reserva. |
slots_assigned |
INTEGER |
Número de ranuras asignadas a esta reserva. |
slots_max_assigned |
INTEGER |
La capacidad máxima de ranuras de esta reserva, incluido el uso compartido de ranuras. Si ignore_idle_slots es true, es lo mismo que slots_assigned . De lo contrario, es el número total de ranuras de todos los compromisos de capacidad del proyecto de administración. |
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 y de los recursos de esta vista:
Nombre de la vista | Ámbito de los recursos | Ámbito de la región |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] |
Nivel de proyecto | REGION |
-
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`
.
Ejemplos
Ejemplo: ver el uso total de espacios por segundo
Para ejecutar la consulta en un proyecto que no sea el predeterminado, añade 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 segundo de los proyectos asignados a YOUR_RESERVATION_ID
en todas las tareas:
SELECT s.start_time AS period_start, SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds, ANY_VALUE(s.slots_assigned) AS estimated_slots_assigned, ANY_VALUE(s.slots_max_assigned) AS estimated_slots_max_assigned FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON jobs.reservation_id = res.reservation_id JOIN res.per_second_details s ON jobs.period_start = s.start_time WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.period_start 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_seconds | estimated_slots_assigned | estimated_slots_max_assigned | +-----------------------+---------------------+--------------------------+------------------------------+ |2021-06-08 21:33:59 UTC| 100.000 | 100 | 100 | |2021-06-08 21:33:58 UTC| 96.753 | 100 | 100 | |2021-06-08 21:33:57 UTC| 41.668 | 100 | 100 | +-----------------------+---------------------+--------------------------+------------------------------+
Ejemplo: Uso de slots por reserva
En el siguiente ejemplo se muestra el uso de las franjas por segundo de cada reserva del último día:
SELECT s.start_time AS period_start, res.reservation_id, SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds, ANY_VALUE(res.slots_assigned) AS estimated_slots_assigned, ANY_VALUE(res.slots_max_assigned) AS estimated_slots_max_assigned, FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON jobs.reservation_id = res.reservation_id JOIN res.per_second_details s ON jobs.period_start = s.start_time WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.period_start 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_seconds | estimated_slots_assigned | estimated_slots_max_assigned | +-----------------------+----------------+---------------------+--------------------------+------------------------------+ |2021-06-08 21:33:59 UTC| prod01 | 100.000 | 100 | 100 | |2021-06-08 21:33:58 UTC| prod02 | 177.201 | 200 | 500 | |2021-06-08 21:32:57 UTC| prod01 | 96.753 | 100 | 100 | |2021-06-08 21:32:56 UTC| prod02 | 182.329 | 200 | 500 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+