Vista JOBS_BY_FOLDER

La vista INFORMATION_SCHEMA.JOBS_BY_FOLDER contiene los metadatos casi en tiempo real sobre todos los trabajos enviados en la carpeta superior del proyecto actual, incluidos los trabajos en las subcarpetas que contiene.

Función requerida

Para obtener el permiso que necesitas para consultar la vista INFORMATION_SCHEMA.JOBS_BY_FOLDER, pídele a tu administrador que te otorgue el rol de IAM Visualizador de recursos de BigQuery (roles/bigquery.resourceViewer) en tu carpeta superior. 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.listAll, que se requiere para consultar la vista INFORMATION_SCHEMA.JOBS_BY_FOLDER.

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 la IAM.

Esquema

La columna creation_time particiona los datos subyacentes y project_id y user_email los agrupan. La columna query_info contiene información adicional sobre tus trabajos de consulta.

La vista INFORMATION_SCHEMA.JOBS_BY_FOLDER 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).
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.
folder_numbers REPEATED INTEGER El número de IDs de las carpetas que contienen el proyecto, el cual comienza con la carpeta que contiene el proyecto de inmediato, seguido de la carpeta que contiene la carpeta secundaria, y así sucesivamente. Por ejemplo, si folder_numbers es [1, 2, 3], la carpeta 1 contiene de inmediato el proyecto, la carpeta 2 contiene 1, y la carpeta 3 contiene 2. Esta columna solo se propaga en JOBS_BY_FOLDER.
job_creation_reason.code STRING Especifica el motivo de alto nivel por el que se creó un trabajo.
Los valores posibles son los siguientes:
  • REQUESTED: Se solicitó la creación de un trabajo.
  • LONG_RUNNING: La solicitud de consulta se ejecutó más allá del tiempo de espera definido por el sistema especificado por el campo timeoutMs en QueryRequest. Como resultado, se consideró una operación de larga duración para la que se creó un trabajo.
  • LARGE_RESULTS: los resultados de la consulta no pueden caber en la respuesta en línea.
  • OTHER: el sistema determinó que la consulta debe ejecutarse como un trabajo.
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:
  • RESERVATION_ADMIN_PROJECT: Es el nombre del proyecto de Google Cloud que administra la reserva.
  • RESERVATION_LOCATION: Es la ubicación de la reserva.
  • RESERVATION_NAME: El nombre de la reserva
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.
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_FOLDER Carpeta que contiene el proyecto especificado 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.

Ejemplo

En la siguiente consulta, se muestra el ID de trabajo, la hora de creación y el estado (PENDING, RUNNING o DONE) de todos los trabajos interactivos en la carpeta del proyecto designado:

SELECT
  job_id,
  creation_time,
  state
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_FOLDER
WHERE
  priority = 'INTERACTIVE';

El resultado es similar al siguiente:

+--------------+---------------------------+---------------------------------+
| job_id       |  creation_time            |  state                          |
+--------------+---------------------------+---------------------------------+
| bquxjob_1    |  2019-10-10 00:00:00 UTC  |  DONE                           |
| bquxjob_2    |  2019-10-10 00:00:01 UTC  |  DONE                           |
| bquxjob_3    |  2019-10-10 00:00:02 UTC  |  DONE                           |
| bquxjob_4    |  2019-10-10 00:00:03 UTC  |  RUNNING                        |
| bquxjob_5    |  2019-10-10 00:00:04 UTC  |  PENDING                        |
+--------------+---------------------------+---------------------------------+

Obtén bytes procesados por trabajos de exportación

En el ejemplo siguiente, se calcula el valor total_processed_bytes para los tipos de trabajo EXTRACT. Para obtener información sobre las cuotas para los trabajos de exportación, consulta Política de cuotas para trabajos de exportación. El total de bytes procesados se puede usar para supervisar el uso total y garantizar que los trabajos de exportación permanezcan por debajo del límite de 50 TB por día.

SELECT
    DATE(creation_time) as day,
    project_id as source_project_id,
    SUM(total_bytes_processed) AS total_bytes_processed
 FROM
   region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "EXTRACT"
GROUP BY
    day,
    source_project_id
ORDER BY
    day DESC

Obtén el uso de trabajos de copia

Para obtener información sobre los trabajos de copia, consulta Copia una tabla. En el siguiente ejemplo, se proporciona el uso de trabajos de copia:

SELECT
    DATE(creation_time) as day,
    project_id as source_project_id,
CONCAT(destination_table.project_id,":",destination_table.dataset_id,".",destination_table.table_id) as destination_table,
    COUNT(job_id) AS copy_job_count
 FROM
   region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "COPY"
GROUP BY
    day,
    source_project_id,
    destination_table
ORDER BY
    day DESC

Visualiza las estadísticas de rendimiento de las consultas

En el siguiente ejemplo, se muestran todos los trabajos de consulta que tienen estadísticas de rendimiento de la carpeta del proyecto designado 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-us`.INFORMATION_SCHEMA.JOBS_BY_FOLDER
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
  );