Gerir empregos

Este documento descreve como gerir tarefas no BigQuery, incluindo como ver detalhes das tarefas, apresentar uma lista de tarefas, cancelar uma tarefa, repetir uma tarefa e eliminar metadados de tarefas.

Acerca das tarefas do BigQuery

Sempre que carrega, exporta, consulta ou copia dados, o BigQuery cria, agenda e executa automaticamente uma tarefa que acompanha o progresso da tarefa.

Uma vez que as tarefas podem demorar muito tempo a concluir, são executadas de forma assíncrona e o respetivo estado pode ser consultado. As ações mais curtas, como listar recursos ou obter metadados, não são geridas como tarefas.

Quando um trabalho é enviado, pode estar num dos seguintes estados:

  • PENDING: a tarefa está agendada e a aguardar execução.
  • RUNNING: o trabalho está em curso.
  • DONE: o trabalho está concluído. Se a tarefa for concluída sem erros, o BigQuery comunica este estado como SUCCESS. Se a tarefa for concluída com erros, o BigQuery comunica este estado como FAILURE.

Quotas

Para obter informações sobre as quotas de tarefas, consulte a documentação do tipo de tarefa na página Quotas e limites:

Preços

Cada tarefa está associada a um projeto específico que especificar. A conta de faturação anexada ao projeto associado é faturada por qualquer utilização incorrida pela tarefa. Se partilhar o acesso a um projeto, todos os trabalhos executados no projeto também são faturados à conta de faturação.

Por exemplo, quando executa uma tarefa de consulta, o custo é faturado ao projeto que executa a tarefa. Assim, quando vê o ID da tarefa de uma tarefa de consulta com o formato <project_id>:<region>.<job_id>, o project_id é o ID do projeto faturado pela consulta.

Para mais informações, consulte a secção Preços.

Antes de começar

Conceda funções de gestão de identidade e de acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento.

Funções necessárias

Para receber as autorizações de que precisa para executar e gerir tarefas, peça ao seu administrador para lhe conceder as seguintes funções da IAM no projeto:

  • Utilizador de tarefas do BigQuery (roles/bigquery.jobUser): para executar ou repetir uma tarefa, listar as suas tarefas, ver detalhes das suas tarefas e cancelar as suas tarefas.
  • Utilizador do BigQuery (roles/bigquery.user): para executar ou repetir uma tarefa, listar as suas tarefas, ver detalhes das suas tarefas e cancelar as suas tarefas (esta função é mais permissiva do que a função Utilizador de tarefas do BigQuery).
  • Administrador de recursos do BigQuery (roles/bigquery.resourceAdmin): para listar todas as tarefas e obter metadados sobre qualquer tarefa.
  • Administrador do BigQuery (roles/bigquery.admin): para listar todas as tarefas, obter metadados sobre qualquer tarefa e cancelar qualquer tarefa.

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para executar e gerir tarefas. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para executar e gerir tarefas:

  • bigquery.jobs.create no projeto para executar ou repetir uma tarefa e listar as suas tarefas.
  • bigquery.jobs.get no projeto para ver os metadados de qualquer tarefa.
  • bigquery.jobs.update no projeto para cancelar qualquer tarefa.
  • bigquery.jobs.listAll na organização, na pasta ou no projeto para listar todas as tarefas e obter metadados sobre qualquer tarefa enviada por qualquer utilizador. Para ver os detalhes de todas as tarefas, também é necessária a autorização bigquery.jobs.list.
  • bigquery.jobs.list no projeto para listar todas as tarefas e obter metadados em qualquer tarefa enviada por qualquer utilizador. Para tarefas enviadas por outros utilizadores, os detalhes e os metadados são ocultados.
  • bigquery.jobs.listExecutionMetadata na organização para listar todos os metadados de execução de tarefas (sem informações confidenciais) para qualquer tarefa enviada por qualquer utilizador.
  • bigquery.jobs.update no projeto para cancelar qualquer tarefa.
  • bigquery.jobs.delete no projeto para eliminar qualquer tarefa.

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Para mais informações sobre as funções e as autorizações do IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.

Ver detalhes do trabalho

Pode ver os detalhes das tarefas através da Google Cloud consola, da ferramenta de linha de comandos bq, da API ou das bibliotecas cliente. Os detalhes incluem dados e metadados, como o tipo de tarefa, o estado da tarefa e o utilizador que criou a tarefa.

Para ver os detalhes do trabalho, siga estes passos:

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Expanda o painel Histórico de trabalhos.

  3. Selecione o tipo de histórico de trabalhos que quer ver:

    • Para apresentar informações das suas tarefas recentes, clique em Histórico pessoal.
    • Para apresentar informações de tarefas recentes no seu projeto, clique em Histórico do projeto.
  4. Para ver os detalhes de uma tarefa, clique numa tarefa.

bq

Emita o comando bq show com a flag --job=true e um ID da tarefa.

Quando fornece o ID da tarefa, pode usar o ID totalmente qualificado ou o formato abreviado. Por exemplo, os IDs de tarefas apresentados na Google Cloud consola estão totalmente qualificados, ou seja, incluem o projeto e a localização:

my-project-1234:US.bquijob_123x456_123y123z123c

Os IDs das tarefas na ferramenta de linha de comandos são apresentados no formato abreviado. O ID do projeto e a localização não estão incluídos:

bquijob_123x456_123y123z123c

Para especificar a localização do trabalho, forneça a flag --location e defina o valor para a sua localização. Esta flag é opcional se usar o ID da tarefa totalmente qualificado. Se incluir a flag --location e estiver a usar o ID da tarefa totalmente qualificado, a flag --location é ignorada.

O comando seguinte pede informações sobre uma tarefa:

bq --location=LOCATION show --job=true JOB_ID

Substitua o seguinte:

  • LOCATION: o nome da localização onde a tarefa é executada. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, defina o valor da flag como asia-northeast1. Pode predefinir um valor para a localização através do ficheiro .bigqueryrc. Se a localização não for especificada como parte do ID da tarefa ou através da sinalização --location, é usada a localização predefinida.
  • JOB_ID: o ID da tarefa

Exemplos

O comando seguinte obtém informações de resumo sobre a tarefa US.bquijob_123x456_123y123z123c em execução em myproject:

bq show --job=true myproject:US.bquijob_123x456_123y123z123c

O resultado é semelhante ao seguinte:

 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 os detalhes completos da tarefa, introduza o seguinte:

bq show --format=prettyjson --job=true myproject:US.bquijob_123x456_789y123z456c

O resultado é semelhante ao seguinte:

{
  "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) Indique o parâmetro location e defina o valor para a localização onde a tarefa é executada. Este parâmetro é opcional se usar o ID da tarefa totalmente qualificado que inclui a localização, por exemplo, my-project-1234:US.bquijob_123x456_123y123z123c.

Go

Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// getJobInfo demonstrates retrieval of a job, which can be used to monitor
// completion or print metadata about the job.
func getJobInfo(w io.Writer, projectID, jobID string) error {
	// projectID := "my-project-id"
	// jobID := "my-job-id"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	job, err := client.JobFromID(ctx, jobID)
	if err != nil {
		return err
	}

	status := job.LastStatus()
	state := "Unknown"
	switch status.State {
	case bigquery.Pending:
		state = "Pending"
	case bigquery.Running:
		state = "Running"
	case bigquery.Done:
		state = "Done"
	}
	fmt.Fprintf(w, "Job %s was created %v and is in state %s\n",
		jobID, status.Statistics.CreationTime, state)
	return nil
}

Java

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;

// Sample to get a job
public class GetJob {

  public static void runGetJob() {
    // TODO(developer): Replace these variables before running the sample.
    String jobName = "MY_JOB_NAME";
    getJob(jobName);
  }

  public static void getJob(String jobName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      JobId jobId = JobId.of(jobName);
      Job job = bigquery.getJob(jobId);
      System.out.println("Job retrieved successfully");
    } catch (BigQueryException e) {
      System.out.println("Job not retrieved. \n" + e.toString());
    }
  }
}

Node.js

Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getJob() {
  // Get job properties.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const jobId = "existing-job-id";

  // Create a job reference
  const job = bigquery.job(jobId);

  // Retrieve job
  const [jobResult] = await job.get();

  console.log(jobResult.metadata.jobReference);
}

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

from google.cloud import bigquery


def get_job(
    client: bigquery.Client,
    location: str = "us",
    job_id: str = "abcd-efgh-ijkl-mnop",
) -> None:
    job = client.get_job(job_id, location=location)

    # All job classes have "location" and "job_id" string properties.
    # Use these properties for job operations such as "cancel_job" and
    # "delete_job".
    print(f"{job.location}:{job.job_id}")
    print(f"Type: {job.job_type}")
    print(f"State: {job.state}")
    print(f"Created: {job.created.isoformat()}")

Se precisar de mais informações para resolver problemas de uma tarefa, consulte as INFORMATION_SCHEMA.JOBS*vistas e os registos.

Anuncie empregos

O BigQuery guarda um histórico de tarefas de seis meses para todas as tarefas de um projeto, para todas as localizações. O histórico de tarefas inclui tarefas no estado RUNNING e tarefas DONE (indicadas através da comunicação do estado como SUCCESS ou FAILURE).

Para listar tarefas num projeto, siga estes passos:

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Expanda o painel Histórico de trabalhos.

  3. Para ver todos os trabalhos num projeto, clique em Histórico do projeto. Se não for o proprietário do projeto, pode não ter autorização para ver todas as tarefas de um projeto. Os trabalhos mais recentes são apresentados primeiro.

  4. Para ver a lista dos seus trabalhos, clique em Histórico pessoal.

bq

Emita o comando bq ls com uma das seguintes flags:

  • --jobs=true ou -j: identifica as tarefas como o tipo de recurso a listar.
  • --all=true ou -a: lista as tarefas de todos os utilizadores. Para ver os detalhes completos (sem ocultação) de todas as tarefas, tem de ter autorizações bigquery.jobs.listAll.
  • --min_creation_time: lista as tarefas após um valor de data/hora fornecido. Este valor é representado como uma indicação de tempo Unix epoch em milissegundos.
  • --max_creation_time: lista as tarefas antes de um valor de data/hora fornecido. Este valor é representado como uma indicação de tempo Unix epoch em milissegundos.
  • --max_results ou -n limita os resultados. A predefiniçã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 o seguinte:

  • MIN_TIME: um número inteiro que representa uma indicação de tempo de época Unix em milissegundos.
  • MAX_TIME: um número inteiro que representa uma indicação de tempo de época Unix em milissegundos.
  • MAX_RESULTS: um número inteiro que indica o número de tarefas devolvidas.
  • PROJECT_ID: o ID do projeto que contém as tarefas que está a listar. Se definir um projeto predefinido, não precisa de fornecer o parâmetro PROJECT_ID.

Exemplos

O comando seguinte apresenta uma lista de todas as tarefas do utilizador atual. A execução deste comando requer autorizações bigquery.jobs.list.

bq ls --jobs=true myproject

O comando seguinte apresenta uma lista de todas as tarefas para todos os utilizadores. A execução deste comando requer autorizações de bigquery.jobs.listAll.

bq ls --jobs=true --all=true myproject

O comando seguinte apresenta uma lista das 10 tarefas mais recentes em myproject:

bq ls --jobs=true --all=true --max_results=10 myproject

O comando seguinte apresenta uma lista de todas as tarefas enviadas antes de 3 de março de 2032 às 04:04:00. Esta data/hora (em milissegundos) é equivalente ao seguinte valor inteiro: 1961899440000.

bq ls --jobs=true --max_creation_time=1961899440000

API

Chame o método jobs.list e forneça o parâmetro projectId. Para apresentar uma lista de tarefas para todos os utilizadores, defina o parâmetro allUsers como true. A definição de allUsers como true requer autorizações de bigquery.jobs.listAll. O método jobs.list não devolve tarefas secundárias. Para apresentar uma lista de tarefas secundárias, use a INFORMATION_SCHEMA.JOBS vista.

Go

Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listJobs demonstrates iterating through the BigQuery jobs collection.
func listJobs(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	// jobID := "my-job-id"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	it := client.Jobs(ctx)
	// List up to 10 jobs to demonstrate iteration.
	for i := 0; i < 10; i++ {
		j, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		state := "Unknown"
		switch j.LastStatus().State {
		case bigquery.Pending:
			state = "Pending"
		case bigquery.Running:
			state = "Running"
		case bigquery.Done:
			state = "Done"
		}
		fmt.Fprintf(w, "Job %s in state %s\n", j.ID(), state)
	}
	return nil
}

Java

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;

// Sample to get list of jobs
public class ListJobs {

  public static void runListJobs() {
    listJobs();
  }

  public static void listJobs() {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Page<Job> jobs = bigquery.listJobs(BigQuery.JobListOption.pageSize(10));
      if (jobs == null) {
        System.out.println("Dataset does not contain any jobs.");
        return;
      }
      jobs.getValues().forEach(job -> System.out.printf("Success! Job ID: %s", job.getJobId()));
    } catch (BigQueryException e) {
      System.out.println("Jobs not listed in dataset due to error: \n" + e.toString());
    }
  }
}

Node.js

Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function listJobs() {
  // Lists all jobs in current GCP project.

  // List the 10 most recent jobs in reverse chronological order.
  //  Omit the max_results parameter to list jobs from the past 6 months.
  const options = {maxResults: 10};
  const [jobs] = await bigquery.getJobs(options);

  console.log('Jobs:');
  jobs.forEach(job => console.log(job.id));
}

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.


from google.cloud import bigquery

import datetime

# Construct a BigQuery client object.
client = bigquery.Client()

# List the 10 most recent jobs in reverse chronological order.
# Omit the max_results parameter to list jobs from the past 6 months.
print("Last 10 jobs:")
for job in client.list_jobs(max_results=10):  # API request(s)
    print("{}".format(job.job_id))

# The following are examples of additional optional parameters:

# Use min_creation_time and/or max_creation_time to specify a time window.
print("Jobs from the last ten minutes:")
ten_mins_ago = datetime.datetime.utcnow() - datetime.timedelta(minutes=10)
for job in client.list_jobs(min_creation_time=ten_mins_ago):
    print("{}".format(job.job_id))

# Use all_users to include jobs run by all users in the project.
print("Last 10 jobs run by all users:")
for job in client.list_jobs(max_results=10, all_users=True):
    print("{} run by user: {}".format(job.job_id, job.user_email))

# Use state_filter to filter by job state.
print("Last 10 jobs done:")
for job in client.list_jobs(max_results=10, state_filter="DONE"):
    print("{}".format(job.job_id))

Cancelar uma tarefa

Pode cancelar uma tarefa RUNNING ou PENDING. Normalmente, demora menos de um minuto a concluir o cancelamento de uma tarefa.

Mesmo que seja possível cancelar o trabalho, o êxito não é garantido. A tarefa pode ter sido concluída quando o pedido de cancelamento foi enviado ou pode estar numa fase em que não pode ser cancelada.

.

Para cancelar uma tarefa, siga estes passos:

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Clique em Compor nova consulta e introduza uma consulta.

  3. Para executar a consulta, clique em Executar.

  4. Para cancelar uma tarefa, clique em Cancelar.

SQL

Use o procedimento do sistema BQ.JOBS.CANCEL:

  CALL BQ.JOBS.CANCEL('JOB_ID');

Substitua JOB_ID pelo ID da tarefa que está a cancelar.

Se estiver num projeto diferente, mas na mesma região que a tarefa que quer cancelar, também tem de incluir o ID do projeto:

  CALL BQ.JOBS.CANCEL('PROJECT_ID.JOB_ID');

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto que contém a tarefa que está a cancelar
  • JOB_ID: o ID da tarefa que está a cancelar

O procedimento é devolvido imediatamente e o BigQuery cancela a tarefa pouco depois. Se a tarefa já tiver sido bem-sucedida ou falhado, o procedimento não tem efeito.

bq

Emita o comando bq cancel com o argumento JOB_ID. Pode pedir o cancelamento e a devolução imediatamente através da flag --nosync=true. Por predefinição, os pedidos de cancelamento aguardam a conclusão.

Quando fornece o argumento JOB_ID, pode usar o ID totalmente qualificado ou o formato abreviado. Por exemplo, os IDs de tarefas apresentados na Google Cloud consola estão totalmente qualificados, ou seja, incluem o projeto e a localização:

my-project-1234:US.bquijob_123x456_123y123z123c

Os IDs das tarefas na ferramenta de linhas de comando bq são apresentados no formato abreviado. O ID do projeto e a localização não estão incluídos:

bquijob_123x456_123y123z123c

Para especificar a localização do trabalho, forneça a flag --location e defina o valor para a sua localização. Esta flag é opcional se usar o ID da tarefa totalmente qualificado. Se incluir a flag --location e estiver a usar o ID da tarefa totalmente qualificado, a flag --location é ignorada.

O comando seguinte pede o cancelamento da tarefa e aguarda a conclusão. Se o ID da tarefa totalmente qualificado for fornecido, o indicador --location é ignorado:

bq --location=LOCATION cancel JOB_ID

O comando seguinte pede o cancelamento da tarefa e é devolvido imediatamente. Se o ID da tarefa totalmente qualificado for fornecido, o indicador --location é ignorado:

bq --location=LOCATION --nosync cancel JOB_ID

Substitua o seguinte:

  • LOCATION (opcional): o nome da localização onde a tarefa é executada. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, defina o valor da flag como asia-northeast1. Pode predefinir um valor para a localização através do ficheiro .bigqueryrc.
  • JOB_ID: o ID da tarefa que está a cancelar. Se copiar o ID da tarefa da Google Cloud consola, o ID do projeto e a localização são incluídos no ID da tarefa. Por exemplo, my-project-1234:US.bquijob_123x456_123y123z123c.

Exemplos

O seguinte comando cancela a tarefa my-project-1234:US.bquijob_123x456_123y123z123c em execução na localização US de várias regiões no projeto my-project-1234 e aguarda a conclusão. Uma vez que é usado o ID da tarefa totalmente qualificado, o indicador de localização não é fornecido.

bq cancel my-project-1234:US.bquijob_123x456_123y123z123c

O comando seguinte cancela a tarefa bquijob_123x456_123y123z123c em execução na localização multirregião US no projeto my-project-1234 e aguarda a conclusão. Uma vez que é usado o formato abreviado do ID da tarefa, é fornecida a flag --location.

bq --location=US cancel bquijob_123x456_123y123z123c

O comando seguinte cancela o trabalho bquijob_123x456_123y123z123c em execução na localização de várias regiões no projeto my-project-1234 e é devolvido imediatamente.US Uma vez que é usado o ID da tarefa totalmente qualificado, a flag --location não é fornecida.

bq --nosync cancel my-project-1234:US.bquijob_123x456_123y123z123c

API

Chame jobs.cancel e faculte os parâmetros jobId e projectId. Forneça o parâmetro location e defina o valor para a localização onde a tarefa é executada.

Go

Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// cancelJob demonstrates how a job cancellation request can be issued for a specific
// BigQuery job.
func cancelJob(projectID, jobID string) error {
	// projectID := "my-project-id"
	// jobID := "my-job-id"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	job, err := client.JobFromID(ctx, jobID)
	if err != nil {
		return nil
	}
	return job.Cancel(ctx)
}

Java

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.QueryJobConfiguration;
import java.util.UUID;

// Sample to cancel a job
public class CancelJob {

  public static void runCancelJob() {
    // TODO(developer): Replace these variables before running the sample.
    String query = "SELECT country_name from `bigquery-public-data.utility_us.country_code_iso`";
    cancelJob(query);
  }

  public static void cancelJob(String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // Specify a job configuration to set optional job resource properties.
      QueryJobConfiguration queryConfig = QueryJobConfiguration.newBuilder(query).build();

      // The location and job name are optional,
      // if both are not specified then client will auto-create.
      String jobName = "jobId_" + UUID.randomUUID().toString();
      JobId jobId = JobId.newBuilder().setLocation("us").setJob(jobName).build();

      // Create a job with job ID
      bigquery.create(JobInfo.of(jobId, queryConfig));

      // Get a job that was just created
      Job job = bigquery.getJob(jobId);
      if (job.cancel()) {
        System.out.println("Job canceled successfully");
      } else {
        System.out.println("Job was not canceled");
      }
    } catch (BigQueryException e) {
      System.out.println("Job was not canceled.\n" + e.toString());
    }
  }
}

Node.js

Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function cancelJob() {
  // Attempts to cancel a job.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const jobId = "existing-job-id";

  // Create a job reference
  const job = bigquery.job(jobId);

  // Attempt to cancel job
  const [apiResult] = await job.cancel();

  console.log(apiResult.job.status);
}

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

from google.cloud import bigquery


def cancel_job(
    client: bigquery.Client,
    location: str = "us",
    job_id: str = "abcd-efgh-ijkl-mnop",
) -> None:
    job = client.cancel_job(job_id, location=location)
    print(f"{job.location}:{job.job_id} cancelled")

Elimine os metadados da tarefa

Pode eliminar os metadados de uma tarefa específica através da ferramenta de linhas de comando bq e da biblioteca cliente Python. O BigQuery preserva um histórico de tarefas executadas nos últimos 6 meses. Pode usar este método para remover informações confidenciais que possam estar presentes em declarações de consultas. Os metadados da tarefa só podem ser eliminados após a conclusão da tarefa. Se uma tarefa tiver criado tarefas secundárias, estas também são eliminadas. Não é permitida a eliminação de tarefas secundárias. Só é possível eliminar tarefas principais ou de nível superior.

Para eliminar metadados de tarefas, siga estes passos:

bq

Emita o comando bq rm com a flag -j e um ID da tarefa.

Quando fornece o ID da tarefa, pode usar o ID totalmente qualificado ou o formato abreviado. Por exemplo, os IDs de tarefas apresentados na Google Cloud consola estão totalmente qualificados, ou seja, incluem o projeto e a localização:

my-project-1234:US.bquijob_123x456_123y123z123c

Os IDs das tarefas na ferramenta de linhas de comando bq são apresentados no formato abreviado. O ID do projeto e a localização não estão incluídos:

bquijob_123x456_123y123z123c

Para especificar a localização do trabalho, forneça a flag --location e defina o valor para a sua localização. Esta flag é opcional se usar o ID da tarefa totalmente qualificado. Se incluir a flag --location e estiver a usar o ID da tarefa totalmente qualificado, a flag --location é ignorada.

O seguinte comando elimina uma tarefa:

bq --location=location \
    --project_id=project_id \
    rm -j job_id

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

from google.api_core import exceptions
from google.cloud import bigquery

# TODO(developer): Set the job ID to the ID of the job whose metadata you
#                  wish to delete.
job_id = "abcd-efgh-ijkl-mnop"

# TODO(developer): Set the location to the region or multi-region
#                  containing the job.
location = "us-east1"

client = bigquery.Client()

client.delete_job_metadata(job_id, location=location)

try:
    client.get_job(job_id, location=location)
except exceptions.NotFound:
    print(f"Job metadata for job {location}:{job_id} was deleted.")

Repetir trabalhos

Não é possível repetir uma tarefa com o mesmo ID da tarefa. Em alternativa, crie uma nova tarefa com a mesma configuração. Quando envia a nova tarefa na Google Cloud consola ou na ferramenta de linhas de comando bq, é atribuído um novo ID da tarefa. Quando envia a tarefa através da API ou das bibliotecas de cliente, tem de gerar um novo ID da tarefa.

Para repetir uma tarefa, siga estes passos:

Consola

Para repetir uma tarefa de consulta, siga estes passos:

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Expanda o painel Histórico de trabalhos.

  3. Para ver todos os seus trabalhos, clique em Histórico pessoal. Para listar todas as tarefas num projeto, clique em Histórico do projeto.

  4. Clique numa tarefa de consulta para abrir os detalhes da tarefa.

  5. Para repetir uma consulta, clique em Abrir como nova consulta.

  6. Clique em Executar.

Para repetir uma tarefa de carregamento, faça o seguinte:

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Expanda o painel Histórico de trabalhos.

  3. Para ver todos os seus trabalhos, clique em Histórico pessoal. Para listar todas as tarefas num projeto, clique em Histórico do projeto.

  4. Clique numa tarefa de carregamento para abrir os detalhes da tarefa.

  5. Para repetir uma tarefa, clique em Repetir tarefa de carregamento.

bq

Emita o comando novamente e o BigQuery gera automaticamente uma tarefa com um novo ID da tarefa.

API

Não existe um método de chamada única para repetir uma tarefa. Se quiser repetir uma tarefa específica:

  1. Chame jobs.get para obter o recurso para repetir a tarefa.

  2. Remova os campos id, status e statistics. Altere o campo jobId para um novo valor gerado pelo código do cliente. Altere outros campos conforme necessário.

  3. Chame jobs.insert com o recurso modificado e o novo ID da tarefa para iniciar a nova tarefa.

O que se segue?