Vista JOBS_TIMELINE_BY_ORGANIZATION

A vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contém metadados do BigQuery quase em tempo real por intervalo de tempo para todas as tarefas enviadas na organização associada ao projeto atual. Esta vista contém tarefas em execução e concluídas.

Autorizações necessárias

Para consultar a vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, precisa da autorização de gestão de identidade e de acesso (IAM) bigquery.jobs.listAll para a organização. Cada uma das seguintes funções de IAM predefinidas inclui a autorização necessária:

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

A tabela de esquemas JOBS_BY_ORGANIZATION só está disponível para utilizadores com Google Cloud organizações definidas.

Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.

Esquema

Quando consulta as visualizações INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, os resultados da consulta contêm uma linha para cada segundo de execução de cada tarefa do BigQuery. Cada período começa num intervalo de um segundo inteiro e dura exatamente um segundo.

A vista INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
period_start TIMESTAMP Hora de início deste período.
period_slot_ms INTEGER Milissegundos de intervalo consumidos neste período.
project_id STRING ID do projeto (coluna de agrupamento).
project_number INTEGER Número do projeto.
folder_numbers REPEATED INTEGER IDs numéricos das pastas que contêm o projeto, começando pela pasta que contém imediatamente o projeto, seguida da pasta que contém a pasta secundária e assim sucessivamente. Por exemplo, se `folder_numbers` for `[1, 2, 3]`, a pasta `1` contém imediatamente o projeto, a pasta `2` contém `1` e a pasta `3` contém `2`.
user_email STRING (Coluna de agrupamento) Endereço de email ou conta de serviço do utilizador que executou a tarefa.
job_id STRING ID da tarefa. Por exemplo, bquxjob_1234.
job_type STRING O tipo de trabalho. Pode ser QUERY, LOAD, EXTRACT, COPY ou null. O tipo de tarefa null indica uma tarefa interna, como a avaliação de declarações de tarefas de scripts ou a atualização da vista materializada.
statement_type STRING O tipo de declaração de consulta, se for válida. Por exemplo, SELECT, INSERT, UPDATE ou DELETE.
priority STRING A prioridade desta tarefa. Os valores válidos incluem INTERACTIVE e BATCH.
parent_job_id STRING ID da tarefa principal, se existir.
job_creation_time TIMESTAMP (Coluna de partição) Hora da criação desta tarefa. A partição baseia-se na hora UTC desta data/hora.
job_start_time TIMESTAMP Hora de início desta tarefa.
job_end_time TIMESTAMP Hora de fim desta tarefa.
state STRING Estado de execução da tarefa 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 trabalho no final deste período, se aplicável.
edition STRING A edição associada à reserva atribuída a esta tarefa. Para mais informações sobre as edições, consulte o artigo Introdução às edições do BigQuery.
total_bytes_billed INTEGER Se o projeto estiver configurado para usar preços a pedido, este campo contém o total de bytes faturados para a tarefa. Se o projeto estiver configurado para usar preços fixos, não lhe é faturado o número de bytes. Este campo não é configurável.
total_bytes_processed INTEGER Total de bytes processados pela tarefa.
error_result RECORD Detalhes do erro (se existir) como um ErrorProto.
cache_hit BOOLEAN Se os resultados da consulta deste trabalho foram provenientes de uma cache.
period_shuffle_ram_usage_ratio FLOAT Rácio de utilização da funcionalidade Shuffle no período selecionado.
period_estimated_runnable_units INTEGER Unidades de trabalho que podem ser agendadas imediatamente neste período. Os slots adicionais para estas unidades de trabalho aceleram a sua consulta, desde que nenhuma outra consulta na reserva precise de slots adicionais.

Retenção de dados

Esta vista contém tarefas em execução e o histórico de tarefas dos últimos 180 dias.

Âmbito e sintaxe

As consultas nesta vista têm de incluir um qualificador de região. Se não especificar um qualificador regional, os metadados são obtidos de todas as regiões. A tabela seguinte explica o âmbito da região para esta vista:

Nome da visualização de propriedade Âmbito do recurso Âmbito da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION Organização que contém o projeto especificado REGION
Substitua o seguinte:
  • Opcional: PROJECT_ID: o ID do seu projeto do Google Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido.
  • REGION: qualquer nome da região do conjunto de dados. Por exemplo, `region-us`.

Exemplos

Exemplo: veja a utilização total de espaços por segundo

Para executar a consulta num projeto que não seja o seu projeto predefinido, adicione o ID do projeto no seguinte formato:

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
. Por exemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

O exemplo seguinte mostra a utilização de slots por segundo de projetos atribuídos a YOUR_RESERVATION_ID em todas as tarefas:

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;

O resultado é semelhante ao seguinte:

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

Exemplo: utilização de slots por reserva

O exemplo seguinte mostra a utilização de espaços por segundo para cada reserva no último dia:

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;

O resultado é semelhante ao seguinte:

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