Vista JOBS_TIMELINE_BY_ORGANIZATION
La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contiene metadatos de BigQuery casi en tiempo real por porción de tiempo de todas las tareas enviadas en la organización asociada al proyecto actual.
Esta vista contiene las tareas que se están ejecutando y las que se han completado.
Permisos obligatorios
Para consultar la vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, necesita el permiso bigquery.jobs.listAll de Gestión de Identidades y Accesos (IAM) de la organización.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye el permiso necesario:
- Administrador de recursos de BigQuery a nivel de organización
- Propietario de la organización
- Administrador de la organización
La tabla de esquemas de JOBS_BY_ORGANIZATION solo está disponible para los usuarios con organizacionesGoogle Cloud definidas.
Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.
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 tarea de BigQuery. Cada periodo empieza en un intervalo de un segundo y dura exactamente un segundo.
La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* tiene el siguiente esquema:
| Nombre de la columna | Tipo de datos | Valor |
|---|---|---|
period_start |
TIMESTAMP |
Hora de inicio de este periodo. |
period_slot_ms |
INTEGER |
Milisegundos de ranura consumidos en este periodo. |
project_id |
STRING |
ID del proyecto (columna de clustering). |
project_number |
INTEGER |
Número del proyecto. |
folder_numbers |
REPEATED INTEGER |
Los IDs numéricos de las carpetas que contienen el proyecto, empezando por la carpeta que contiene directamente 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 la carpeta `1` y la carpeta `3` contiene la carpeta `2`. |
user_email |
STRING |
(Columna de clustering) Dirección de correo o cuenta de servicio del usuario que ha ejecutado el trabajo. |
job_id |
STRING |
ID del trabajo. Por ejemplo, bquxjob_1234. |
job_type |
STRING |
El tipo de trabajo. Puede ser QUERY, LOAD,
EXTRACT, COPY o null. El tipo de tarea null indica una tarea interna, como la evaluación de una instrucción de una tarea de secuencia de comandos o la actualización de una vista materializada. |
statement_type |
STRING |
El tipo de instrucción de consulta, si es válida. Por ejemplo, SELECT, INSERT, UPDATE o DELETE. |
priority |
STRING |
La prioridad de este trabajo. Los valores válidos son INTERACTIVE y BATCH. |
parent_job_id |
STRING |
ID del trabajo principal (si lo hay). |
job_creation_time |
TIMESTAMP |
(Columna de partición) Hora de creación de este trabajo. La partición se basa en la hora UTC de esta marca de tiempo. |
job_start_time |
TIMESTAMP |
Hora de inicio de este trabajo. |
job_end_time |
TIMESTAMP |
Hora de finalización de este trabajo. |
state |
STRING |
Estado de ejecución del trabajo al final de este periodo. Los estados válidos son PENDING, RUNNING y DONE. |
reservation_id |
STRING |
Nombre de la reserva principal asignada a este trabajo al final de este periodo, si procede. |
edition |
STRING |
Edición asociada a 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_billed |
INTEGER |
Si el proyecto está configurado para usar los precios bajo demanda, este campo contiene el total de bytes facturados por la tarea. Si el proyecto está configurado para usar precios de tarifa plana, no se te cobrarán los bytes. Este campo no se puede configurar. |
total_bytes_processed |
INTEGER |
Total de bytes procesados por la tarea. |
error_result |
RECORD |
Detalles del error (si procede) como
ErrorProto.
|
cache_hit |
BOOLEAN |
Indica si los resultados de la consulta de este trabajo procedían de una caché. |
period_shuffle_ram_usage_ratio |
FLOAT |
Ratio de uso de la aleatorización en el periodo seleccionado. El valor es 0.0 si el trabajo se ha ejecutado con una reserva que usa el escalado automático y tiene cero ranuras de referencia. |
period_estimated_runnable_units |
INTEGER |
Unidades de trabajo que se pueden programar inmediatamente en este periodo. Los slots adicionales para estas unidades de trabajo aceleran tu consulta, siempre que ninguna otra consulta de la reserva necesite slots adicionales. |
Por motivos de estabilidad, te recomendamos que incluyas explícitamente las columnas en tus consultas de esquema de información en lugar de usar un comodín (SELECT *). Si incluyes las columnas explícitamente, evitarás que las consultas fallen si cambia el esquema subyacente.
Conservación de datos
En esta vista se muestran las tareas en curso junto con el historial de tareas de los últimos 180 días.
Si un proyecto se migra a una organización (ya sea porque no tenía ninguna o porque se migra desde otra), la información de los trabajos anterior a la fecha de migración no se podrá consultar en la vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, ya que esta solo conserva los datos a partir de la fecha de migración.
Á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 de esta vista:
| Nombre de la vista | Ámbito de los recursos | Ámbito de la región |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION |
Organización que contiene el proyecto especificado | REGION |
-
Opcional:
PROJECT_ID: el ID de tu proyecto. 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: 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 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+