Vista RESERVATIONS_TIMELINE
En la vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE
, se muestran fragmentos de tiempo de los metadatos de reserva para cada proyecto de administración de reservas en tiempo real y por minuto. Además, el array per_second_details
muestra detalles del ajuste automático para cada segundo.
Permiso necesario
Para consultar la vista INFORMATION_SCHEMA.RESERVATION_TIMELINE
, necesitas el permiso bigquery.reservations.list
de Identity and Access Management (IAM) en el proyecto.
Cada uno de los siguientes roles predefinidos de IAM incluye el permiso requerido:
- Administrador de recursos de BigQuery (
roles/bigquery.resourceAdmin
) - Editor de recursos de BigQuery (
roles/bigquery.resourceEditor
) - Visualizador de recursos de BigQuery (
roles/bigquery.resourceViewer
) - BigQuery User (
roles/bigquery.user
) - BigQuery Admin (
roles/bigquery.admin
)
Para obtener más información sobre los permisos de BigQuery, consulta Roles y permisos de IAM 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 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 |
Contiene 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. |
labels |
RECORD |
Es un array de etiquetas asociadas con la reserva. |
period_start |
TIMESTAMP |
Es la hora de inicio de este período de un minuto. |
per_second_details |
STRUCT |
Contiene información sobre la capacidad y el uso de la reserva en cada segundo. Los campos incluyen lo siguiente:
Si hay cambios en el ajuste de escala automático o en las reservas durante este minuto, el array se completará con 60 filas. Sin embargo, para las reservas que no se ajustan automáticamente y que permanecen sin cambios durante este minuto, el array está vacío, ya que, de lo contrario, repetiría el mismo número 60 veces. |
project_id |
STRING |
Es el ID del proyecto de administración 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. |
max_slots |
INTEGER |
Cantidad máxima de ranuras que puede usar esta reserva, incluidas las ranuras de modelo de referencia (slot_capacity ), las ranuras inactivas (si ignore_idle_slots es falso) y las ranuras de ajuste de escala automático. Los usuarios especifican este campo para usar la función de previsibilidad de reservas. |
scaling_mode |
STRING |
Es el modo de ajuste de escala de la reserva, que determina cómo se ajusta la escala de la reserva desde el modelo de referencia hasta max_slots . Los usuarios especifican este campo para usar la función de previsibilidad de reservas. |
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
: Es el ID de tu 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 segundo
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 segundo de proyectos asignados a YOUR_RESERVATION_ID
en todos los trabajos:
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 ranuras por reserva
En el siguiente ejemplo, se muestra el uso de ranuras por segundo para cada reserva en el ú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 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+