Visualização JOBS_TIMELINE_BY_ORGANIZATION

A visualização INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contém metadados do BigQuery em tempo quase real por fração de tempo para todos os jobs enviados na organização associada ao projeto atual. Essa visualização contém jobs em execução e concluídos.

Permissões necessárias

Para consultar a visualização INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, você precisa da permissão bigquery.jobs.listAll do Identity and Access Management (IAM) para a organização. Cada um dos seguintes papéis predefinidos do IAM inclui a permissão necessária:

  • Administrador de recursos do BigQuery no nível da organização
  • Proprietário da organização.
  • Administrador da organização

A tabela de esquema JOBS_BY_ORGANIZATION está disponível apenas para usuários de organizações definidas do Google Cloud.

Para mais informações sobre as permissões do BigQuery, consulte Controle de acesso com o IAM.

Esquema

Ao consultar as visualizações INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, os resultados da consulta terão uma linha para cada segundo de execução de cada job do BigQuery. Cada período começa em um intervalo de segundo inteiro e dura exatamente um segundo.

A visualização INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
period_start TIMESTAMP Horário de início deste período.
period_slot_ms INTEGER Milissegundos de slot consumidos neste período.
project_id STRING (Coluna de clustering) ID do projeto.
project_number INTEGER Número do projeto.
folder_numbers REPEATED INTEGER IDs de número das pastas que contêm o projeto, começando com a pasta que contém o projeto imediatamente, seguido pela pasta que contém a pasta filho e assim por diante. Por exemplo, se `folder_numbers` for `[1, 2, 3]`, a pasta `1` conterá imediatamente o projeto, a pasta `2` conterá `1` e a pasta `3` conterá ` 2".
user_email STRING (Coluna de clustering) endereço de e-mail ou conta de serviço do usuário que executou o job.
job_id STRING ID do job. Por exemplo, bquxjob_1234.
job_type STRING O tipo de job. Pode ser QUERY, LOAD, EXTRACT, COPY, ou null. O tipo de job null indica um job interno, como avaliação da instrução do job de script ou atualização da visualização materializada.
statement_type STRING O tipo de instrução de consulta, se for válido. Por exemplo, SELECT, INSERT, UPDATE, ou DELETE.
priority STRING A prioridade deste job. Os valores válidos incluem INTERACTIVE e BATCH.
parent_job_id STRING ID do job pai (se houver).
job_creation_time TIMESTAMP (Coluna de particionamento) horário da criação do job. O particionamento é baseado no horário UTC desse carimbo de data/hora.
job_start_time TIMESTAMP Horário de início deste job.
job_end_time TIMESTAMP Horário de término deste job.
state STRING Estado em execução do job no final deste período. Os estados válidos incluem PENDING, RUNNING, e DONE.
reservation_id STRING Nome da reserva principal atribuída a este job no final deste período, se aplicável.
edition STRING A edição associada à reserva atribuída a este job. Para mais informações sobre edições, consulte Introdução às edições do BigQuery.
total_bytes_billed INTEGER Se o projeto estiver configurado para usar preços sob demanda, então esse campo conterá o total de bytes cobrados pelo job. Se o projeto estiver configurado para usar preços fixos, você não será cobrado por bytes. Esse campo não é configurável.
total_bytes_processed INTEGER Total de bytes processados pelo job.
error_result RECORD Detalhes do erro (se houver) como um ErrorProto. .
cache_hit BOOLEAN Se os resultados da consulta deste job eram de um cache.
period_shuffle_ram_usage_ratio FLOAT Proporção de uso do embaralhamento no período selecionado.
period_estimated_runnable_units INTEGER Unidades de trabalho que podem ser programadas imediatamente nesse período. Os slots adicionais para essas unidades de trabalho aceleram a consulta, contanto que nenhuma outra consulta na reserva precise de slots adicionais.

Retenção de dados

Essa visualização contém os jobs em execução e o histórico dos últimos 180 dias.

Escopo e sintaxe

As consultas nessa visualização precisam incluir um qualificador de região. Se você não especificar um qualificador regional, os metadados serão recuperados de todas as regiões. A tabela a seguir explica o escopo da região dessa visualização:

Nome da visualização Escopo do recurso Escopo da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION Organização que contém o projeto especificado REGION
Substitua:

  • Opcional: PROJECT_ID: o ID do seu projeto do Google Cloud. Se não for especificado, o projeto padrão será usado.

  • REGION: qualquer nome da região do conjunto de dados. Por exemplo, `region-us`.

  • Exemplos

    Exemplo: ver o uso total de slots por minuto.

    Para executar a consulta em um projeto diferente do projeto padrão, adicione o ID do projeto no seguinte formato:

    `PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
    . Exemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

    O exemplo a seguir mostra o uso de slots a cada minuto por projetos atribuídos a YOUR_RESERVATION_ID em todos os jobs.

    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;

    O resultado será semelhante ao seguinte:

    +-----------------------+---------------------+---------------+-------------------+
    |     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        |
    +-----------------------+---------------------+---------------+-------------------+
    

    Exemplo: uso de slots por reserva.

    O exemplo a seguir mostra o uso de slots a cada minuto por cada reserva no último dia.

    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;

    O resultado será semelhante ao seguinte:

    +-----------------------+----------------+---------------------+---------------+--------------------+
    |     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         |
    +-----------------------+----------------+---------------------+---------------+--------------------+