Vista de JOBS_TIMELINE_BY_FOLDER

La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER contiene metadatos de BigQuery casi en tiempo real por fragmento de tiempo para todos los trabajos enviados en la carpeta superior del proyecto actual, incluidos los trabajos en subcarpetas que contiene. Esta vista contiene trabajos completados y en ejecución.

Permisos necesarios

A fin de consultar la vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER, necesitas el permiso bigquery.jobs.listAll de Identity and Access Management (IAM) para la carpeta superior. Cada uno de los siguientes roles predefinidos de IAM incluye el permiso requerido:

  • Administrador de carpetas
  • Administrador de BigQuery

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

Esquema

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.
period_shuffle_ram_usage_ratio FLOAT Proporción de uso aleatorio en el período seleccionado.
project_id STRING (Columna de agrupamiento en clústeres) ID del proyecto.
project_number INTEGER Es el número del proyecto.
folder_numbers REPEATED INTEGER Numere los IDs de las carpetas que contienen el proyecto, comenzando con la carpeta que contiene inmediatamente el proyecto, seguida de la carpeta que contiene la carpeta secundaria, y así sucesivamente. Por ejemplo, si “folder_numbers” es “[1, 2, 3]”, la carpeta “1” contiene inmediatamente el proyecto, la carpeta “2” contiene “1” y la carpeta “3” contiene “2”.
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.
edition STRING Es la edición asociada con la reserva asignada a este trabajo. Para obtener más información sobre las ediciones, consulta Introducción a las ediciones de BigQuery.
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é.
period_estimated_runnable_units INTEGER Unidades de trabajo que se pueden programar de inmediato en este período. Las ranuras adicionales para estas unidades de trabajo aceleran tu consulta, siempre que ninguna otra consulta en la reserva necesite ranuras adicionales.

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_FOLDER 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. Un ejemplo es region-us.

Ejemplos

En los siguientes ejemplos, se muestra cómo consultar la vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER.

Obtén la cantidad de trabajos únicos

En la siguiente consulta, se muestra la cantidad de trabajos únicos que se ejecutan por minuto en la carpeta del proyecto designado:

SELECT
  TIMESTAMP_TRUNC(period_start, MINUTE) AS per_start,
  COUNT(DISTINCT job_id) AS unique_jobs
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER,
  UNNEST(folder_numbers) f
WHERE
  my_folder_number = f
GROUP BY
  per_start
ORDER BY
  per_start DESC;

El resultado es similar al siguiente:

+---------------------------+---------------------------------+
|  per_start                |  unique_jobs                    |
+---------------------------+---------------------------------+
|  2019-10-10 00:04:00 UTC  |  5                              |
|  2019-10-10 00:03:00 UTC  |  2                              |
|  2019-10-10 00:02:00 UTC  |  3                              |
|  2019-10-10 00:01:00 UTC  |  4                              |
|  2019-10-10 00:00:00 UTC  |  4                              |
+---------------------------+---------------------------------+

Calcula el tiempo de ranura que se usa

En la siguiente consulta, se muestra el tiempo de ranura que se usa por minuto en la carpeta del proyecto designado:

SELECT
  TIMESTAMP_TRUNC(period_start, MINUTE) AS per_start,
  SUM(period_slot_ms) AS slot_ms
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER,
  UNNEST(folder_numbers) f
WHERE
  my_folder_number = f
  AND reservation_id = "my reservation id"
  AND statement_type != "SCRIPT"
GROUP BY
  per_start
ORDER BY
  per_start DESC;

El resultado es similar al siguiente:

+---------------------------+---------------------------------+
|  per_start                |  slot_ms                        |
+---------------------------+---------------------------------+
|  2019-10-10 00:04:00 UTC  |  500                            |
|  2019-10-10 00:03:00 UTC  |  1000                           |
|  2019-10-10 00:02:00 UTC  |  3000                           |
|  2019-10-10 00:01:00 UTC  |  4000                           |
|  2019-10-10 00:00:00 UTC  |  4000                           |
+---------------------------+---------------------------------+