Como gerenciar jobs
Depois de enviar um job do BigQuery, é possível visualizar detalhes do job, listar jobs, cancelar um job, repetir um job, ou excluir metadados do job.
Quando um job é enviado, ele pode estar em um dos seguintes estados:
PENDING
: o job está programado e aguardando para ser executado.RUNNING
: o job está em andamento.DONE
: o job foi concluído. Se o job for concluído sem erros, o BigQuery informará esse estado comoSUCCESS
. Se o job for concluído com erros, o BigQuery informará esse estado comoFAILURE
.
Antes de começar
Atribua papéis do Identity and Access Management (IAM) que concedam aos usuários as permissões necessárias para realizar cada tarefa deste documento. As permissões necessárias para executar uma tarefa (se houver) são listadas na seção "Permissões necessárias".
Mais detalhes do job
Para ver os detalhes do job, use o console do Google Cloud, a ferramenta de linha de comando bq, a API ou as bibliotecas de cliente. Os detalhes incluem dados e metadados, como o tipo, o estado e o usuário que criou o job.
Permissões necessárias
Para ver os detalhes do job, você precisa da permissão bigquery.jobs.get
do IAM.
Essa permissão é concedida automaticamente aos jobs que você criar.
Cada um dos papéis do IAM predefinidos a seguir inclui as permissões necessárias para visualizar os detalhes do job:
roles/bigquery.admin
(permite visualizar detalhes de todos os jobs no projeto)roles/bigquery.user
(permite visualizar detalhes dos seus jobs)roles/bigquery.jobUser
(permite visualizar detalhes dos seus jobs)
Para mais informações sobre papéis e permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Ver detalhes do job
Para visualizar os detalhes do job, faça o seguinte:
Console
Acessar a página do BigQuery.
Selecione o tipo de histórico de jobs que você quer ver:
- Para exibir informações dos jobs recentes, clique em Histórico pessoal.
- Para exibir informações de jobs recentes no projeto, clique em Histórico do projeto.
Para ver os detalhes de um job, clique nele.
bq
Emita o comando bq show
com a sinalização --job=true
e um ID de job.
Quando você fornece o ID do job, é possível usar o ID totalmente qualificado ou a forma abreviada. Por exemplo, os IDs de jobs listados no console do Google Cloud são totalmente qualificados, ou seja, incluem o projeto e o local:
my-project-1234:US.bquijob_123x456_123y123z123c
Os IDs dos jobs na ferramenta de linha de comando são listados usando a forma abreviada e não incluem o ID e o local do projeto:
bquijob_123x456_123y123z123c
Para especificar o local do job, forneça a sinalização --location
e defina o valor
do local. Essa sinalização é opcional,
caso seja usado o ID do job totalmente qualificado. Se você incluir a sinalização --location
e estiver usando o ID do job totalmente qualificado, a sinalização --location
será
ignorada.
O comando a seguir solicita informações sobre um job:
bq --location=LOCATION show --job=true JOB_ID
Substitua:
LOCATION
: o nome do local em que o job é executado. Por exemplo, se você estiver usando o BigQuery na região de Tóquio, defina o valor da sinalização comoasia-northeast1
. É possível definir um valor padrão para o local usando o arquivo.bigqueryrc
. Se o local não for especificado como parte do ID do job ou por meio da sinalização--location
, será usado o local padrão.JOB_ID
: o ID do job
Exemplos
O comando a seguir recebe informações resumidas sobre o job
US.bquijob_123x456_123y123z123c
em execução em myproject
.
bq show --job=true myproject:US.bquijob_123x456_123y123z123c
O resultado será assim:
Job Type State Start Time Duration User Email Bytes Processed Bytes Billed Billing Tier Labels ---------- --------- ----------------- ---------- ------------------- ----------------- -------------- -------------- -------- extract SUCCESS 06 Jul 11:32:10 0:01:41 user@example.com
Para ver detalhes completos do job, digite o seguinte:
bq show --format=prettyjson --job=true myproject:US.bquijob_123x456_789y123z456c
O resultado será assim:
{ "configuration": { "extract": { "compression": "NONE", "destinationUri": "[URI removed]", "destinationUris": [ "[URI removed]" ], "sourceTable": { "datasetId": "github_repos", "projectId": "bigquery-public-data", "tableId": "commits" } } }, "etag": "\"[etag removed]\"", "id": "myproject:bquijob_123x456_789y123z456c", "jobReference": { "jobId": "bquijob_123x456_789y123z456c", "projectId": "[Project ID removed]" }, "kind": "bigquery#job", "selfLink": "https://bigquery.googleapis.com/bigquery/v2/projects/federated-testing/jobs/bquijob_123x456_789y123z456c", "statistics": { "creationTime": "1499365894527", "endTime": "1499365894702", "startTime": "1499365894702" }, "status": { "errorResult": { "debugInfo": "[Information removed for readability]", "message": "Operation cannot be performed on a nested schema. Field: author", "reason": "invalid" }, "errors": [ { "message": "Operation cannot be performed on a nested schema. Field: author", "reason": "invalid" } ], "state": "DONE" }, "user_email": "user@example.com" }
API
Chame jobs.get e forneça os parâmetros jobId
e projectId
. (Opcional) Insira o parâmetro location
e defina o valor do local
em que o job é executado. Esse parâmetro é opcional, caso esteja usando o
código do job totalmente qualificado, que inclui o local, por exemplo,
my-project-1234:US.bquijob_123x456_123y123z123c
.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Se você precisar de mais informações para resolver problemas de um job, consulte as visualizações INFORMATION_SCHEMA.JOBS*
e Registros.
Listar jobs em um projeto
O BigQuery salva um histórico de jobs de seis meses para todos os jobs de um projeto.
É possível visualizar o histórico de jobs das seguintes maneiras:
- Use o console do Google Cloud.
- Uso do comando
bq ls
. - fazendo uma chamada do método de API
jobs.list
; - usando as bibliotecas de cliente.
O histórico de jobs inclui aqueles que estão no estado RUNNING
e que estão como DONE
, um campo que aparece quando o estado é informado como SUCCESS
ou FAILURE
.
Permissões necessárias
Para listar todos os jobs criados em um projeto, você precisa da permissão bigquery.jobs.create
do IAM. Para listar todos os jobs criados por todos os usuários em um projeto, você precisa da permissão bigquery.jobs.list
do IAM. Só é possível ver os detalhes completos dos jobs que você criar. Os detalhes dos jobs criados por outros usuários são editados.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para listar jobs:
roles/bigquery.admin
(permite listar todos os jobs no projeto)roles/bigquery.user
(permite listar todos os jobs no projeto)roles/bigquery.jobUser
(permite listar seus jobs)
Para listar todos os jobs em um projeto, incluindo os detalhes, você precisa da permissão bigquery.jobs.listAll
do IAM.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para listar todos os jobs, incluindo os detalhes:
roles/bigquery.admin
roles/bigquery.resourceAdmin
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Listar jobs
O BigQuery lista jobs para todos os locais.
Para listar jobs em um projeto, faça o seguinte:
Console
Acessar a página do BigQuery.
Para listar todos os jobs de um projeto, clique em Histórico do projeto. Se você não for o proprietário do projeto, talvez não tenha permissão para visualizar todos os jobs desse projeto. Os jobs mais recentes são listados primeiro.
Para listar seus jobs, clique em Histórico pessoal.
bq
Emita o comando bq ls
com uma das seguintes sinalizações:
--jobs=true
ou-j
: identifica jobs como o tipo de recurso a ser listado.--all=true
ou-a
: lista os jobs de todos os usuários. Para ver os detalhes completos (não editados) de todos os jobs, você precisa ter permissõesbigquery.jobs.listAll
.--min_creation_time
: lista os jobs após um valor de carimbo de data/hora ser fornecido. Esse valor é representado como um carimbo de data/hora da época Unix em milissegundos.--max_creation_time
: lista os jobs antes de um valor de carimbo de data/hora ser fornecido. Esse valor é representado como um carimbo de data/hora da época Unix em milissegundos.--max_results
ou-n
limita os resultados. O padrão é 50 resultados.
bq ls --jobs=true --all=true \ --min_creation_time=MIN_TIME \ --max_creation_time=MAX_TIME \ --max_results=MAX_RESULTS \ PROJECT_ID
Substitua:
MIN_TIME
: um número inteiro que representa um carimbo de data/hora da época Unix em milissegundos.MAX_TIME
: um número inteiro que representa um carimbo de data/hora da época Unix em milissegundos.MAX_RESULTS
: um número inteiro que indica o número de jobs retornados.PROJECT_ID
: o ID do projeto que contém os jobs que você está listando. Se você definir um projeto padrão, não será necessário fornecer o parâmetroPROJECT_ID
.
Exemplos
O comando a seguir lista todos os jobs do usuário atual. A execução deste comando requer permissões bigquery.jobs.list
.
bq ls --jobs=true myproject
O comando a seguir lista todos os jobs de todos os usuários. A execução deste comando requer permissões bigquery.jobs.listAll
.
bq ls --jobs=true --all=true myproject
O comando a seguir lista os 10 jobs mais recentes em myproject
:
bq ls --jobs=true --all=true --max_results=10 myproject
O comando a seguir lista todos os jobs enviados antes de 3 de março de 2032 às 4:04:00. Esse carimbo de data/hora (em milissegundos) é equivalente ao seguinte valor inteiro: 1961899440000
.
bq ls --jobs=true --max_creation_time=1961899440000
API
Chame jobs.list e forneça o parâmetro projectId
. Para listar jobs para todos os usuários, configure o parâmetro allUsers
como true
. Configurar allUsers
como true
requer permissões bigquery.jobs.listAll
.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Cancelar jobs
É possível cancelar um job RUNNING
ou PENDING
das seguintes maneiras:
- Usando o Console do Google Cloud.
- Usando o comando
bq cancel
. - usando o
procedimento do sistema
BQ.JOBS.CANCEL
em uma consulta SQL; - usando o método de API
jobs.cancel
; - usando bibliotecas de cliente.
Nem todos os tipos de jobs podem ser cancelados. Se o job não puder ser cancelado, um erro será retornado.
Mesmo que o job possa ser cancelado, o sucesso não é garantido. O job pode ter sido concluído no momento em que a solicitação de cancelamento foi enviada ou estar em uma etapa em que não pode ser cancelado.
Permissões necessárias
Para cancelar um job, você precisa da permissão do IAM bigquery.jobs.update
.
Essa permissão é concedida automaticamente aos jobs que você criar.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para cancelar um job:
roles/bigquery.admin
(permite cancelar qualquer job no projeto)roles/bigquery.user
(permite cancelar seus jobs)roles/bigquery.jobUser
(permite cancelar seus jobs)
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Cancelar um job
Geralmente, leva menos de um minuto para concluir um cancelamento de job.
Para cancelar um job, faça o seguinte:
Console
Acessar a página do BigQuery.
Clique em Escrever nova consulta e faça a consulta.
Para executar a consulta, clique em Executar.
Para cancelar um job, clique em Cancelar.
SQL
Use o procedimento de sistema BQ.JOBS.CANCEL
:
CALL BQ.JOBS.CANCEL('JOB_ID');
Substitua JOB_ID pelo ID do job que você está cancelando.
Se você estiver em um projeto diferente, mas na mesma região do job que quer cancelar, inclua também o ID do projeto:
CALL BQ.JOBS.CANCEL('PROJECT_ID.JOB_ID');
Substitua:
PROJECT_ID
: o ID do projeto que contém o job que você está cancelandoJOB_ID
é o código do job que você está cancelando.
O procedimento retorna imediatamente, e o BigQuery cancela o job logo depois. Se o job já foi concluído ou falhou, o procedimento não tem efeito.
bq
Emita o comando bq cancel
com o argumento JOB_ID
. É possível solicitar
o cancelamento e retornar imediatamente usando a sinalização --nosync=true
. Por
padrão, as solicitações de cancelamento aguardam a conclusão.
Quando você fornece o argumento JOB_ID
,
é possível usar o ID totalmente qualificado ou a forma
abreviada. Por exemplo, os IDs de jobs listados no console do Google Cloud são totalmente
qualificados, ou seja, incluem o projeto e o local:
my-project-1234:US.bquijob_123x456_123y123z123c
Os IDs dos jobs na ferramenta de linha de comando bq são listados usando a forma abreviada e não incluem o ID e o local do projeto:
bquijob_123x456_123y123z123c
Para especificar o local do job, forneça a sinalização --location
e defina o valor
do local. Essa sinalização é opcional,
caso seja usado o ID do job totalmente qualificado. Se você incluir a sinalização --location
e estiver usando o ID do job totalmente qualificado, a sinalização --location
será
ignorada.
Com o comando a seguir, você solicita o cancelamento do job e aguarda a conclusão: Se
o ID do job totalmente qualificado for fornecido, a sinalização --location
será ignorada:
bq --location=LOCATION cancel JOB_ID
O cancelamento do job é solicitado com o comando a seguir, com retorno imediato. Se
o ID do job totalmente qualificado for fornecido, a sinalização --location
será ignorada:
bq --location=LOCATION --nosync cancel JOB_ID
Substitua:
LOCATION
(opcional): o nome do local em que o job é executado. Por exemplo, se você estiver usando o BigQuery na região de Tóquio, defina o valor da sinalização comoasia-northeast1
. É possível definir um valor padrão para o local usando o arquivo.bigqueryrc
.JOB_ID
é o código do job que você está cancelando. Se você copiar o ID do job do console do Google Cloud, o ID e o local do projeto serão incluídos nele. Por exemplo,my-project-1234:US.bquijob_123x456_123y123z123c
.
Exemplos
O comando a seguir cancela o job
my-project-1234:US.bquijob_123x456_123y123z123c
em execução na
multirregião US
no projeto my-project-1234
e aguarda
a conclusão. Como o ID do job que está sendo usado é totalmente qualificado, a sinalização de local
não é fornecida.
bq cancel my-project-1234:US.bquijob_123x456_123y123z123c
O comando a seguir cancela o job bquijob_123x456_123y123z123c
em execução na
localização multirregional US
no projeto my-project-1234
e
aguarda a conclusão. Como a forma do ID do job que está sendo usada é abreviada, a sinalização --location
é fornecida.
bq --location=US cancel bquijob_123x456_123y123z123c
O comando a seguir cancela o job bquijob_123x456_123y123z123c
em execução
na multirregião US
no projeto my-project-1234
e retorna imediatamente.
Como o código do job que está sendo usado é totalmente qualificado, a sinalização --location
não é fornecida.
bq --nosync cancel my-project-1234:US.bquijob_123x456_123y123z123c
API
Chame jobs.cancel e forneça os parâmetros jobId
e projectId
. Insira o parâmetro location
e defina o valor do local em que o job é executado.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Excluir metadados do job
É possível excluir os metadados de um job específico usando a ferramenta de linha de comando bq e a biblioteca de cliente do Python. O BigQuery preserva um histórico de jobs executados nos últimos seis meses. Use esse método para remover informações confidenciais que podem estar presentes nas instruções de consulta. Os metadados do job só podem ser excluídos após a conclusão. Se um job tiver criado jobs filho, eles também serão excluídos. Não é permitida a exclusão de jobs filhos. Somente jobs pai ou de nível superior podem ser excluídos.
Permissões necessárias
Para excluir os metadados do job, você precisa da permissão bigquery.jobs.delete
do IAM.
O papel predefinido do IAM roles/bigquery.admin
inclui a permissão necessária para excluir os metadados do job.
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Excluir metadados do job
bq
Emita o comando bq rm
com a sinalização -j
e um ID de job.
Quando você fornece o ID do job, é possível usar o ID totalmente qualificado ou a forma abreviada. Por exemplo, os IDs de jobs listados no console do Google Cloud são totalmente qualificados, ou seja, incluem o projeto e o local:
my-project-1234:US.bquijob_123x456_123y123z123c
Os IDs dos jobs na ferramenta de linha de comando bq são listados usando a forma abreviada e não incluem o ID e o local do projeto.
bquijob_123x456_123y123z123c
Para especificar o local do job, forneça a sinalização --location
e defina o valor
do local. Essa sinalização é opcional,
caso seja usado o ID do job totalmente qualificado. Se você incluir a sinalização --location
e estiver usando o ID do job totalmente qualificado, a sinalização --location
será
ignorada.
O comando a seguir exclui um job:
bq --location=location \ --project_id=project_id \ rm -j job_id
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Repetir jobs
Não é possível repetir um job usando o mesmo ID. Em vez disso, crie um novo job com a mesma configuração. Quando você envia o novo job no console do Google Cloud ou na ferramenta de linha de comando bq, um novo ID do job é atribuído. Quando você envia o job usando a API ou bibliotecas de cliente, é necessário gerar um novo código de job.
Permissões necessárias
Para executar um job, você precisa da permissão do IAM bigquery.jobs.create
.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para executar um job:
roles/bigquery.admin
roles/bigquery.user
roles/bigquery.jobUser
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Repetir um job
Para repetir um job, faça o seguinte:
Console
Para repetir um job de consulta, faça o seguinte:
Acessar a página do BigQuery.
Para listar seus jobs, clique em Histórico pessoal. Para listar todos os jobs de um projeto, clique em Histórico do projeto.
Clique em um job de consulta para abrir os detalhes dele.
Para repetir uma consulta, clique em Abrir como nova consulta.
Clique em Executar.
Para repetir um job de carregamento, faça o seguinte:
Acessar a página do BigQuery.
Para listar seus jobs, clique em Histórico pessoal. Para listar todos os jobs de um projeto, clique em Histórico do projeto.
Clique em um job de carregamento para abrir os detalhes dele.
Para repetir um job, clique em Repetir job de carregamento.
bq
Emita o comando novamente, e o BigQuery gera automaticamente um job com um novo ID.
API
Não há um método de chamada única para repetir um job. Para fazer isso:
Chame
jobs.get
para recuperar o recurso e executar o job novamente.Remova os campos id, status e statistics. Altere o campo jobId para um novo valor gerado pelo código de cliente. Altere outros campos, conforme necessário;
Para iniciar o novo job, chame
jobs.insert
com o recurso modificado e o novo ID do job.