Vista JOBS_TIMELINE_BY_ORGANIZATION

La vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contiene metadatos de BigQuery casi 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.

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.
project_id STRING Es el ID del proyecto (columna de agrupamiento en clústeres).
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.
priority STRING La prioridad de este trabajo. Los valores válidos incluyen INTERACTIVE y BATCH.
parent_job_id STRING ID del trabajo superior, si hay alguno.
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_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. Este campo no se puede configurar.
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_shuffle_ram_usage_ratio FLOAT Proporción de uso aleatorio en el período seleccionado.
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_ORGANIZATION Organización 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`.

  • Ejemplos

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