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 de vistas materializadas. |
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 esta tarefa 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. O valor é
0.0 se a tarefa tiver sido executada com uma reserva que usa o dimensionamento automático
e tiver zero espaços de base. |
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. |
Para garantir a estabilidade, recomendamos que liste explicitamente as colunas nas suas consultas de esquema de informações em vez de usar um caráter universal (SELECT *). A listagem explícita de colunas impede que as consultas sejam interrompidas se o esquema subjacente for alterado.
Retenção de dados
Esta vista apresenta as tarefas em execução, juntamente com o histórico de tarefas dos últimos 180 dias.
Se um projeto for migrado para uma organização (quer não tenha nenhuma organização ou seja migrado de uma organização diferente), as informações de tarefas anteriores à data de migração não são acessíveis através da visualização INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION, uma vez que a visualização só retém dados a partir da data de migração.
Â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 |
-
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
`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 | +-----------------------+----------------+---------------------+--------------------------+------------------------------+