Vista JOBS_BY_USER
La vista INFORMATION_SCHEMA.JOBS_BY_USER
contiene metadatos casi en tiempo real sobre los trabajos de BigQuery que envía el usuario actual en el proyecto actual.
Función requerida
Para obtener el permiso que necesitas para consultar la vista INFORMATION_SCHEMA.JOBS_BY_USER
, pídele a tu administrador que te otorgue el rol de IAM usuario de BigQuery (roles/bigquery.user
) en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene el permiso bigquery.jobs.list
que se requiere para consultar la vista INFORMATION_SCHEMA.JOBS_BY_USER
.
También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.
Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.
Esquema
La columna creation_time
particiona los datos subyacentes y project_id
y user_email
los agrupan.
La vista INFORMATION_SCHEMA.JOBS_BY_USER
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
bi_engine_statistics |
RECORD |
Si el proyecto está configurado para usar la interfaz de SQL de BI Engine, este campo contiene BiEngineStatistics.
En caso contrario NULL .
|
cache_hit |
BOOLEAN |
Indica si los resultados de la consulta de este trabajo provienen de una caché.
Si tienes un trabajo de declaración de varias consultas, el cache_hit para tu consulta superior es NULL .
|
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. |
destination_table |
RECORD |
Es la tabla de destino para los resultados (si hay alguno). |
dml_statistics |
RECORD |
Si el trabajo es una consulta con una declaración DML, el valor es un registro con los siguientes campos:
NULL .Esta columna está presente en las vistas INFORMATION_SCHEMA.JOBS_BY_USER y
INFORMATION_SCHEMA.JOBS_BY_PROJECT .
|
end_time |
TIMESTAMP |
La hora de finalización de este trabajo, en milisegundos, desde el ciclo de entrenamiento. Este campo representa el momento en el que el trabajo ingresa al estado DONE . |
error_result |
RECORD |
Detalles de cualquier error como objetos ErrorProto. |
job_creation_reason.code |
STRING |
Especifica el motivo de alto nivel por el que se creó un trabajo. Los valores posibles son los siguientes:
|
job_id |
STRING |
El ID del trabajo si se creó uno. De lo contrario, el ID de la consulta de una consulta que usa el modo de consulta breve. Por ejemplo, bquxjob_1234 . |
job_stages |
RECORD |
Etapas de consulta del trabajo.
Nota: Los valores de esta columna están vacíos para las consultas que leen de tablas con políticas de acceso a nivel de fila. Si deseas obtener más información, consulta las prácticas recomendadas para la seguridad a nivel de las filas en BigQuery. |
job_type |
STRING |
Es el tipo de trabajo. Puede ser QUERY , LOAD , EXTRACT ,
COPY o NULL . Un valor NULL indica un trabajo interno, como una evaluación de declaración de trabajo de secuencia de comandos o una actualización de vista materializada.
|
labels |
RECORD |
Array de etiquetas aplicadas al trabajo como pares clave-valor. |
parent_job_id |
STRING |
ID del trabajo superior, si hay alguno. |
priority |
STRING |
La prioridad de este trabajo. Los valores válidos incluyen INTERACTIVE y BATCH . |
project_id |
STRING |
(Columna de agrupamiento en clústeres) el ID del proyecto. |
project_number |
INTEGER |
El número del proyecto. |
query |
STRING |
Texto de consulta de SQL. Solo la vista JOBS_BY_PROJECT tiene la columna de consulta. |
referenced_tables |
RECORD |
Es el array de tablas a las que hace referencia el trabajo. Solo se propaga para los trabajos de consulta que no son aciertos de caché. |
reservation_id |
STRING |
Nombre de la reserva principal asignada a este trabajo, en el formato RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME .En este resultado, se ilustra lo siguiente:
|
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. |
session_info |
RECORD |
Detalles sobre la sesión en la que se ejecutó este trabajo, si corresponde. |
start_time |
TIMESTAMP |
La hora de inicio de este trabajo, en milisegundos, desde el ciclo de entrenamiento. Este campo representa el momento en el que el trabajo pasa del estado PENDING a RUNNING o DONE . |
state |
STRING |
Estado de ejecución del trabajo. Los estados válidos incluyen PENDING , RUNNING y DONE .
|
statement_type |
STRING |
El tipo de declaración de consulta. Por ejemplo, DELETE , INSERT ,
SCRIPT , SELECT o UPDATE . Consulta QueryStatementType para obtener una lista de valores válidos.
|
timeline |
RECORD |
Cronograma de consultas del trabajo. Contiene instantáneas de la ejecución de consultas. |
total_bytes_billed |
INTEGER |
Si el proyecto está configurado para usar
precios según demanda,
este campo contiene el total de bytes facturados para el trabajo. Si el proyecto está configurado para usar
precios de tasa fija,
no se te facturará por los bytes y este campo solo es informativo.
Nota: Los valores de esta columna están vacíos para las consultas que leen de tablas con políticas de acceso a nivel de fila. Si deseas obtener más información, consulta las prácticas recomendadas para la seguridad a nivel de las filas en BigQuery. |
total_bytes_processed |
INTEGER |
Es el total de bytes procesados por el trabajo. Nota: Los valores de esta columna están vacíos para las consultas que leen de tablas con políticas de acceso a nivel de fila. Si deseas obtener más información, consulta las prácticas recomendadas para la seguridad a nivel de las filas en BigQuery. |
total_modified_partitions |
INTEGER |
Cantidad total de particiones que modificó el trabajo. Este campo se propaga para los trabajos LOAD y QUERY .
|
total_slot_ms |
INTEGER |
Son los milisegundos de ranura para el trabajo durante toda su duración en el estado RUNNING , incluidos los reintentos. |
transaction_id |
STRING |
ID de la transacción en la que se ejecutó este trabajo, si corresponde. (Vista previa) |
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). |
query_info.resource_warning |
STRING |
Es el mensaje de advertencia que aparece si el uso de recursos durante el procesamiento de consultas está por encima del umbral interno del sistema. Un trabajo de consulta exitoso puede tener el campo resource_warning propagado. Con resource_warning , obtienes datos adicionales para optimizar tus consultas y configurar la supervisión de las tendencias de rendimiento de un conjunto de consultas equivalente mediante query_hashes .
|
query_info.query_hashes.normalized_literals |
STRING |
Contiene los hashes de la consulta. normalized_literals es un hash STRING hexadecimal que ignora los comentarios, los valores de parámetros, las UDF y los literales.
El valor de hash diferirá cuando cambien las vistas subyacentes o si la consulta hace referencia de forma implícita a columnas, como SELECT * , y cambia el esquema de la tabla.
Este campo aparece para las consultas correctas de GoogleSQL que no son aciertos de caché. |
query_info.performance_insights |
RECORD |
Estadísticas de rendimiento del trabajo. |
query_info.optimization_details |
STRUCT |
Las optimizaciones basadas en el historial para el trabajo. |
transferred_bytes |
INTEGER |
Total de bytes transferidos para consultas de múltiples nubes, como trabajos de transferencia entre nubes de BigQuery Omni. |
materialized_view_statistics |
RECORD |
Estadísticas de vistas materializadas que se consideran en un trabajo de consulta. (Vista previa) |
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. 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_BY_USER |
Trabajos que envía el usuario actual en el proyecto especificado | REGION |
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`
.
Ejemplo
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_BY_USER
PROJECT_ID
: El ID del proyectoREGION_NAME
: Es la región del proyecto.
Por ejemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
.
Cómo ver trabajos pendientes o en ejecución
SELECT job_id, creation_time, query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE state != 'DONE';
El resultado es similar al siguiente:
+--------------+---------------------------+---------------------------------+ | job_id | creation_time | query | +--------------+---------------------------+---------------------------------+ | bquxjob_1 | 2019-10-10 00:00:00 UTC | SELECT ... FROM dataset.table1 | | bquxjob_2 | 2019-10-10 00:00:01 UTC | SELECT ... FROM dataset.table2 | | bquxjob_3 | 2019-10-10 00:00:02 UTC | SELECT ... FROM dataset.table3 | | bquxjob_4 | 2019-10-10 00:00:03 UTC | SELECT ... FROM dataset.table4 | | bquxjob_5 | 2019-10-10 00:00:04 UTC | SELECT ... FROM dataset.table5 | +--------------+---------------------------+---------------------------------+
Visualiza las estadísticas de rendimiento de las consultas
En el siguiente ejemplo, se muestran todos tus trabajos de consulta que tienen estadísticas de rendimiento en los últimos 30 días, junto con una URL que vincula al grafo de ejecución de consulta en la consola de Google Cloud.
SELECT `bigquery-public-data`.persistent_udfs.job_url( project_id || ':us.' || job_id) AS job_url, query_info.performance_insights FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE DATE(creation_time) >= CURRENT_DATE - 30 -- scan 30 days of query history AND job_type = 'QUERY' AND state = 'DONE' AND error_result IS NULL AND statement_type != 'SCRIPT' AND EXISTS ( -- Only include queries which had performance insights SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_standalone_insights ) WHERE slot_contention OR insufficient_shuffle_quota UNION ALL SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_change_insights ) WHERE input_data_change.records_read_diff_percentage IS NOT NULL );