Vista JOBS_TIMELINE_BY_ORGANIZATION

La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contiene metadatos de BigQuery en tiempo real por fragmento de tiempo para todos los trabajos enviados en la organización asociada con el proyecto actual. Esta vista contiene trabajos completados y en ejecución.

Permisos necesarios

Para consultar la vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, necesitas el permiso bigquery.jobs.listAll de Identity and Access Management (IAM) para la organización. Cada uno de los siguientes roles predefinidos de IAM incluye el permiso requerido:

  • BigQuery Resource Admin a nivel de la organización
  • Organization Owner
  • Administrador de la organización

La tabla de esquema JOBS_BY_ORGANIZATION solo está disponible para usuarios con organizaciones de Google Cloud definidas.

Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.

Schema

Cuando consultas las vistas INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, los resultados de la consulta contienen una fila por cada segundo de ejecución de cada trabajo de BigQuery. Cada período comienza en un intervalo de un segundo y dura un segundo exacto.

La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
period_start TIMESTAMP Es la hora de inicio de este período.
period_slot_ms INTEGER Son los milisegundos de ranura consumidos en este período.
project_id STRING Es el ID del proyecto (columna de agrupamiento en clústeres).
project_number INTEGER Es el número del proyecto.
user_email STRING Es la dirección de correo electrónico o la cuenta de servicio del usuario que ejecutó el trabajo (columna de agrupamiento en clústeres).
job_id STRING Es el ID del trabajo. Por ejemplo, bquxjob_1234.
job_type STRING Es el tipo de trabajo. Puede ser QUERY, LOAD, EXTRACT, COPY o null. El tipo de trabajo null indica un trabajo interno, como la evaluación de la declaración del trabajo de secuencia de comandos o la actualización de la vista materializada.
statement_type STRING Es el tipo de declaración de consulta, si es válido. Por ejemplo, SELECT, INSERT, UPDATE o DELETE.
job_creation_time TIMESTAMP Es la hora de creación de este trabajo (columna de partición). La partición se basa en la hora UTC de esta marca de tiempo.
job_start_time TIMESTAMP Es la hora de inicio de este trabajo.
job_end_time TIMESTAMP Es la hora de finalización de este trabajo.
state STRING Es estado de ejecución del trabajo al final de este período. Los estados válidos incluyen PENDING, RUNNING y DONE.
reservation_id STRING Es el nombre de la reserva principal asignada a este trabajo al final de este período, si corresponde.
total_bytes_processed INTEGER Es el total de bytes procesados por el trabajo.
error_result RECORD Son los detalles del error (si hay alguno), como ErrorProto. .
cache_hit BOOLEAN Indica si los resultados de la consulta de este trabajo provienen de una caché.

Retención de datos

Esta vista contiene los trabajos que se están ejecutando y el historial de trabajos de los últimos 180 días.

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 permiso de la región para esta vista:

Nombre de la vista Permiso del recurso Permiso de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION Organización que contiene el proyecto especificado REGION
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID es el ID de tu proyecto de Cloud. Si no se especifica, se usa el proyecto predeterminado.
  • REGION: cualquier nombre de región del conjunto de datos. Por ejemplo, region-us.

Examples

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'
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()
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         |
+-----------------------+----------------+---------------------+---------------+--------------------+