Vista RESERVATIONS_TIMELINE

En la vista INFORMATION_SCHEMA.RESERVATIONS_TIMELINE, se muestran fragmentos de metadatos de las reservas de cada proyecto de 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.

Schema

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. 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
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_name STRING Es el nombre de la reserva.
ignore_idle_slots BOOL Falso si el uso compartido de ranuras está habilitado; de lo contrario, es verdadero.
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.
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.
reservation_id STRING Para unirse con la tabla jobs_timeline. Tiene el formato project_id:location.reservation_name.

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
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. 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
Por ejemplo, `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         |
+-----------------------+----------------+---------------------+---------------+--------------------+