Visualização JOBS_TIMELINE
A visualização INFORMATION_SCHEMA.JOBS_TIMELINE
contém metadados do BigQuery em tempo real por fração de tempo para todos os jobs enviados no 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
, você precisa da
permissão bigquery.jobs.listAll
Identity and Access Management (IAM) do projeto.
Cada um dos seguintes papéis predefinidos do IAM inclui a permissão necessária:
- Proprietário do projeto
- Administrador do BigQuery
Para mais informações sobre as permissões do BigQuery, consulte Controle de acesso com o IAM.
Schema
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. |
period_shuffle_ram_usage_ratio |
FLOAT |
Proporção de uso do embaralhamento no período selecionado. |
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 . |
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. |
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_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_PROJECT] |
Nível do projeto | REGION |
- 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
Para executar a consulta em um projeto diferente do seu projeto padrão, inclua o ID do projeto no seguinte formato:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW. Por exemplo,
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE
.
No exemplo a seguir, calculamos a utilização de slots para cada segundo no último dia:
SELECT period_start, SUM(period_slot_ms) AS total_slot_ms, FROM `reservation-admin-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE WHERE period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() GROUP BY period_start ORDER BY period_start DESC;Observação: os nomes de visualização "INFORMATION_SCHEMA" diferenciam maiúsculas de minúsculas. O resultado será semelhante ao seguinte:
+---------------------+---------------+ | period_start | total_slot_ms | +---------------------+---------------+ | 2020-07-29 03:52:14 | 122415176 | | 2020-07-29 03:52:15 | 141107048 | | 2020-07-29 03:52:16 | 173335142 | | 2020-07-28 03:52:17 | 131107048 | +---------------------+---------------+
Verifique o uso de uma reserva específica com
WHERE reservation_id = "…"
. Para jobs de script, o job pai também informa o uso total de slots dos jobs filhos. Para evitar a contagem duplicada, use WHERE statement_type != "SCRIPT"
para excluir o job pai.
Exemplo: número de jobs RUNNING
e PENDING
ao longo do tempo
Para executar a consulta em um projeto diferente do seu projeto padrão, inclua o ID do projeto no seguinte formato:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW. Por exemplo,
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE
.
O exemplo a seguir calcula o número de jobs RUNNING
e PENDING
a cada
segundo no dia anterior:
SELECT period_start, SUM(IF(state = "PENDING", 1, 0)) as PENDING, SUM(IF(state = "RUNNING", 1, 0)) as RUNNING FROM `reservation-admin-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE WHERE period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() GROUP BY period_start;
O resultado será semelhante ao seguinte:
+---------------------+---------+---------+ | period_start | PENDING | RUNNING | +---------------------+---------+---------+ | 2020-07-29 03:52:14 | 7 | 27 | | 2020-07-29 03:52:15 | 1 | 21 | | 2020-07-29 03:52:16 | 5 | 21 | | 2020-07-29 03:52:17 | 4 | 22 | +---------------------+---------+---------+
Exemplo: uso de recursos por jobs em um momento específico
Para executar a consulta em um projeto diferente do seu projeto padrão, inclua o ID do projeto no seguinte formato:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW. Por exemplo,
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS
.
O exemplo a seguir retorna o job_id
de todos os jobs em execução em um momento
específico, além do uso de recursos durante esse período de um segundo:
SELECT job_id, period_slot_ms FROM `reservation-admin-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT WHERE period_start = '2020-07-29 03:52:14' AND statement_type != 'SCRIPT';
O resultado será semelhante ao seguinte:
+------------------+ | job_id | slot_ms | +------------------+ | job_1 | 2415176 | | job_2 | 4417245 | | job_3 | 427416 | | job_4 | 1458122 | +------------------+