Visualização JOBS_BY_USER

A visualização INFORMATION_SCHEMA.JOBS_BY_USER contém metadados em tempo real sobre os jobs do BigQuery enviados pelo usuário atual no projeto atual.

Papel necessário

Para receber a permissão necessária a fim de consultar a visualização INFORMATION_SCHEMA.JOBS_BY_USER, peça ao administrador para conceder a você o papel do IAM de Usuário do BigQuery (roles/bigquery.user) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém a permissão bigquery.jobs.list , que é necessária para consultar a visualização INFORMATION_SCHEMA.JOBS_BY_USER.

Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

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

Esquema

Os dados subjacentes são particionados pela coluna creation_time e agrupados por project_id e user_email.

A visualização INFORMATION_SCHEMA.JOBS_BY_USER tem o seguinte esquema:

Nome da coluna Tipo de dado Valor
bi_engine_statistics RECORD Se o projeto estiver configurado para usar a BI Engine SQL Interface, este campo conterá BiEngineStatistics. Se esse não for seu caso, NULL.
cache_hit BOOLEAN Se os resultados da consulta deste job eram de um cache. Se você tiver um job de instrução de várias consultas, o cache_hit da consulta mãe será NULL.
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.
destination_table RECORD Tabela de destino dos resultados (se houver).
dml_statistics RECORD Se o job for uma consulta com uma instrução DML, o valor será um registro com os seguintes campos:
  • inserted_row_count: o número de linhas que foram inseridas.
  • deleted_row_count: o número de linhas que foram excluídas.
  • updated_row_count: o número de linhas que foram atualizadas.
Para todos os outros jobs, o valor é NULL.
Essa coluna está presente nas visualizações INFORMATION_SCHEMA.JOBS_BY_USER e INFORMATION_SCHEMA.JOBS_BY_PROJECT.
end_time TIMESTAMP O horário de término do job, em milissegundos, desde o início. Esse campo representa o momento em que o job entra no estado DONE.
error_result RECORD Detalhes dos erros como objetos ErrorProto.
job_creation_reason.code STRING Especifica o motivo geral de criação de um job.
Os valores possíveis são:
  • REQUESTED: a criação do job foi solicitada.
  • LONG_RUNNING: a solicitação de consulta foi executada além de um tempo limite definido pelo sistema, especificado pelo campo timeoutMs na QueryRequest. Por isso, ela foi considerada uma estratégia operação para a qual uma tarefa foi criada.
  • LARGE_RESULTS: os resultados da consulta não podem caber no inline. resposta.
  • OTHER: o sistema determinou que a consulta precisa ser executada como um trabalho.
job_id STRING O ID do job, caso ele tenha sido criado. Caso contrário, o ID da consulta usando o modo de consulta curta. Por exemplo, bquxjob_1234
job_stages RECORD Estágios de consulta do job.

Observação: os valores desta coluna estão vazios para consultas lidas em tabelas com políticas de acesso no nível da linha. Para mais informações, consulte práticas recomendadas para segurança no nível da linha no BigQuery.

job_type STRING O tipo de job. Pode ser QUERY, LOAD, EXTRACT, COPY ou NULL. Um valor NULL indica um job interno, como uma avaliação de instrução de job de script ou uma atualização de visualização materializada.
labels RECORD Matriz de identificadores aplicados ao job como pares de chave-valor.
parent_job_id STRING ID do job pai (se houver).
priority STRING A prioridade deste job. Os valores válidos incluem INTERACTIVE e BATCH.
project_id STRING (Coluna de clustering) é o ID do projeto.
project_number INTEGER O número do projeto.
query STRING Texto da consulta SQL. Apenas a visualização JOBS_BY_PROJECT tem a coluna de consulta.
referenced_tables RECORD Matriz de tabelas referenciadas pelo job. Preenchido apenas para jobs de consulta que não são ocorrências em cache.
reservation_id STRING Nome da reserva principal atribuída a este job, no formato RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME.
Nesta saída:
  • RESERVATION_ADMIN_PROJECT: o nome do projeto do Google Cloud que administra a reserva
  • RESERVATION_LOCATION: o local da reserva
  • RESERVATION_NAME: o nome da reserva
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.
session_info RECORD Detalhes sobre a sessão em que este job foi executado, se houver.
start_time TIMESTAMP Horário de início do job, em milissegundos, desde o período. Esse campo representa o momento em que o job faz a transição do estado PENDING para RUNNING ou DONE.
state STRING Estado em execução do job. Os estados válidos incluem PENDING, RUNNING e DONE.
statement_type STRING O tipo de instrução de consulta. Por exemplo, DELETE, INSERT, SCRIPT, SELECT ou UPDATE. Consulte QueryStatementType para acessar uma lista de valores válidos.
timeline RECORD Cronograma de consulta do job. Contém snapshots de execução de consulta.
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, então você não será cobrado por bytes, e esse campo será apenas informativo.

Observação: os valores desta coluna estão vazios para consultas lidas em tabelas com políticas de acesso no nível da linha. Para mais informações, consulte práticas recomendadas para segurança no nível da linha no BigQuery.

total_bytes_processed INTEGER

Total de bytes processados pelo job.

Observação: os valores desta coluna estão vazios para consultas lidas em tabelas com políticas de acesso no nível da linha. Para mais informações, consulte práticas recomendadas para segurança no nível da linha no BigQuery.

total_modified_partitions INTEGER Número total de partições do job modificado. Esse campo é preenchido para jobs LOAD e QUERY.
total_slot_ms INTEGER Milissegundos de slot para o job durante toda a duração no estado RUNNING, incluindo novas tentativas.
transaction_id STRING ID da transação em que este job foi executado, se houver. (Visualização)
user_email STRING (Coluna de clustering) endereço de e-mail ou conta de serviço do usuário que executou o job.
query_info.resource_warning STRING A mensagem de aviso que aparece quando o uso de recursos durante o processamento da consulta está acima do limite interno do sistema.
Um job de consulta bem-sucedido pode ter o campo resource_warning preenchido. Com o resource_warning, você ganha mais pontos de dados para otimizar suas consultas e configurar o monitoramento das tendências de desempenho de um conjunto equivalente de consultas usando query_hashes.
query_info.query_hashes.normalized_literals STRING Contém os hashes da consulta. normalized_literals é um hash STRING hexadecimal que ignora comentários, valores de parâmetros, UDFs e literais.
Esse campo aparece para consultas bem-sucedidas do GoogleSQL que não são ocorrências em cache.
query_info.performance_insights RECORD Insights de desempenho para o job.
query_info.optimization_details STRUCT As otimizações baseadas em histórico do job.
transferred_bytes INTEGER Total de bytes transferidos para consultas entre nuvens, como jobs de transferência entre nuvens do BigQuery Omni.
materialized_view_statistics RECORD Estatísticas de visualizações materializadas consideradas em um job de consulta. (Visualização)

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. 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_BY_USER Jobs enviados pelo usuário atual no 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.

Exemplo

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_BY_USER
Substitua:

  • PROJECT_ID: o ID do projeto
  • REGION_NAME: a região do projeto;

Por exemplo, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_USER.

Conferir jobs pendentes ou em execução

SELECT
  job_id,
  creation_time,
  query
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
  state != 'DONE';

O resultado será semelhante ao seguinte:

+--------------+---------------------------+---------------------------------+
| job_id       |  creation_time            |  query                          |
+--------------+---------------------------+---------------------------------+
| bquxjob_1    |  2019-10-10 00:00:00 UTC  |  SELECT ... FROM dataset.table1 |
| bquxjob_2    |  2019-10-10 00:00:01 UTC  |  SELECT ... FROM dataset.table2 |
| bquxjob_3    |  2019-10-10 00:00:02 UTC  |  SELECT ... FROM dataset.table3 |
| bquxjob_4    |  2019-10-10 00:00:03 UTC  |  SELECT ... FROM dataset.table4 |
| bquxjob_5    |  2019-10-10 00:00:04 UTC  |  SELECT ... FROM dataset.table5 |
+--------------+---------------------------+---------------------------------+

Conferir insights de desempenho para consultas

O exemplo a seguir retorna todos os jobs de consulta que têm insights de desempenho nos últimos 30 dias, com um URL que leva ao gráfico de execução da consulta no console do Google Cloud.

SELECT
  `bigquery-public-data`.persistent_udfs.job_url(
    project_id || ':us.' || job_id) AS job_url,
  query_info.performance_insights
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
  DATE(creation_time) >= CURRENT_DATE - 30 -- scan 30 days of query history
  AND job_type = 'QUERY'
  AND state = 'DONE'
  AND error_result IS NULL
  AND statement_type != 'SCRIPT'
  AND EXISTS ( -- Only include queries which had performance insights
    SELECT 1
    FROM UNNEST(
      query_info.performance_insights.stage_performance_standalone_insights
    )
    WHERE slot_contention OR insufficient_shuffle_quota
    UNION ALL
    SELECT 1
    FROM UNNEST(
      query_info.performance_insights.stage_performance_change_insights
    )
    WHERE input_data_change.records_read_diff_percentage IS NOT NULL
  );