Gestione dei job

Dopo aver inviato un job BigQuery, puoi visualizzarne i dettagli, elencare job, annullare un job, ripetere un un job oppure elimina i metadati del job.

Quando un job viene inviato, può trovarsi in uno dei seguenti stati:

  • PENDING: il job è pianificato e in attesa di essere eseguito.
  • RUNNING: il job è in corso.
  • DONE: il job è stato completato. Se il job viene completato senza errori, BigQuery segnala questo stato come SUCCESS. Se il job viene completato con errori, BigQuery segnala questo stato come FAILURE.

Prima di iniziare

Concedi ruoli IAM (Identity and Access Management) che concedono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento. Le eventuali autorizzazioni necessarie per eseguire un'attività sono elencate nella sezione "Autorizzazioni obbligatorie" dell'attività.

Visualizza i dettagli del job

Puoi visualizzare i dettagli del job utilizzando la console Google Cloud, a riga di comando bq, l'API o le librerie client. I dettagli includono dati e informazioni metadati, come il tipo di job, lo stato del job e l'utente che lo ha creato.

Autorizzazioni obbligatorie

Per visualizzare i dettagli del job, devi disporre dell'autorizzazione IAM bigquery.jobs.get. Ti viene concessa automaticamente questa autorizzazione per i job che crei.

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per visualizzare i dettagli del job:

  • roles/bigquery.admin (ti consente di visualizzare i dettagli di tutti i job nel progetto)
  • roles/bigquery.user (ti consente di visualizzare i dettagli delle tue offerte di lavoro)
  • roles/bigquery.jobUser (ti consente di visualizzare i dettagli delle tue offerte di lavoro)

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Visualizza i dettagli del job

Per visualizzare i dettagli del job:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Seleziona il tipo di cronologia dei lavori che vuoi visualizzare:

    • Per visualizzare le informazioni dei tuoi lavori recenti, fai clic su Personali personalizzata.
    • Per visualizzare le informazioni sui job recenti nel tuo progetto, fai clic su Cronologia del progetto.
  3. Per visualizzare i dettagli del job, fai clic su un job.

bq

Emetti bq show con il flag --job=true e un ID job.

Quando fornisci l'ID job, puoi utilizzare l'ID completo o il breve in un modulo di testo. Ad esempio, gli ID job elencati nella console Google Cloud sono completamente qualificato, ovvero includono il progetto e la località:

my-project-1234:US.bquijob_123x456_123y123z123c

Gli ID job nello strumento a riga di comando sono elencati in forma breve. L'ID progetto e la località non sono inclusi:

bquijob_123x456_123y123z123c

Per specificare la località del job, fornisci il flag --location e imposta il valore alla tua posizione. Questo flag è facoltativo se utilizzi l'ID job completo. Se includi --location e stai utilizzando l'ID job completo, il flag --location è ignorato.

Il comando seguente richiede informazioni su un job:

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

Sostituisci quanto segue:

  • LOCATION: il nome del località in cui viene eseguito il job. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, imposta il valore del flag su asia-northeast1. Puoi impostare un valore predefinito per la località utilizzando il File .bigqueryrc. Se la località non viene specificata come parte dell'ID job o utilizzando la proprietà --location, viene usata la posizione predefinita.
  • JOB_ID: l'ID del job

Esempi

Il comando seguente ottiene informazioni di riepilogo sul job US.bquijob_123x456_123y123z123c in esecuzione nel myproject:

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

L'output è simile al seguente:

 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

Per visualizzare i dettagli completi del job, inserisci quanto segue:

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

L'output è simile al seguente:

{
  "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

Chiama jobs.get e fornisci i parametri jobId e projectId. (Facoltativo) Fornisci la location e imposta il valore sul parametro location in cui viene eseguito il job. Questo parametro è facoltativo se utilizzi un ID job completo che include la località, ad esempio my-project-1234:US.bquijob_123x456_123y123z123c.

Vai

Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

// 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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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 hai bisogno di ulteriori informazioni per risolvere i problemi di un job, consulta le INFORMATION_SCHEMA.JOBS* viste e i Log.

Elenco job in un progetto

BigQuery salva una cronologia di sei mesi di job per tutti i job di un progetto.

Puoi visualizzare la cronologia dei job nei seguenti modi:

  • Utilizzando la console Google Cloud.
  • Utilizza il comando bq ls.
  • Chiamata al metodo API jobs.list.
  • Utilizzare le librerie client.

La cronologia dei job include i job nello stato RUNNING e i job DONE (indicato segnalando lo stato come SUCCESS o FAILURE).

Autorizzazioni obbligatorie

Per elencare tutti i job creati in un progetto, devi disporre dell'autorizzazione IAM bigquery.jobs.create. Per elencare tutti i job creati da tutti gli utenti in un progetto, devi disporre dell'autorizzazione IAM bigquery.jobs.list. Puoi visualizzare solo i dettagli completi dei job che crei. I dettagli dei job creati da altri utenti vengono oscurati.

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per elencare i job:

  • roles/bigquery.admin (ti consente di elencare tutti i job nel progetto)
  • roles/bigquery.user (ti consente di elencare tutti i job nel progetto)
  • roles/bigquery.jobUser (ti consente di elencare le tue offerte di lavoro)

Per elencare tutti i job in un progetto e i relativi dettagli, devi disporre dell'autorizzazione IAM bigquery.jobs.listAll.

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per elencare tutti i job, inclusi i relativi dettagli:

  • roles/bigquery.admin
  • roles/bigquery.resourceAdmin

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Elenca job

BigQuery elenca i job per tutte le località.

Per elencare i job in un progetto:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Per elencare tutti i job in un progetto, fai clic su Cronologia progetto. In caso contrario proprietario del progetto, potresti non avere l'autorizzazione per visualizzare tutti i job di un progetto. I job più recenti sono elencati per primi.

  3. Per elencare i tuoi lavori, fai clic su Cronologia personale.

bq

Emetti bq ls con uno dei seguenti flag:

  • --jobs=true o -j: identifica i job come il tipo di risorsa da dall'elenco di lettura.
  • --all=true o -a: elenca i job di tutti gli utenti. Per visualizzare la versione completa (non oscurata) per tutti i job, devi avere bigquery.jobs.listAll autorizzazioni.
  • --min_creation_time: elenca i job dopo un timestamp fornito valore. Questo valore è rappresentato da un Timestamp in millisecondi di Unix epoch.
  • --max_creation_time: elenca i job prima di un timestamp fornito valore. Questo valore è rappresentato da un Timestamp in millisecondi di Unix epoch.
  • --max_results o -n limita i risultati. Il valore predefinito è 50 risultati.
bq ls --jobs=true --all=true \
    --min_creation_time=MIN_TIME \
    --max_creation_time=MAX_TIME \
    --max_results=MAX_RESULTS \
    PROJECT_ID

Sostituisci quanto segue:

  • MIN_TIME: un numero intero che rappresenta un Epoca Unix in millisecondi.
  • MAX_TIME: un numero intero che rappresenta un Epoca Unix in millisecondi.
  • MAX_RESULTS: un numero intero che indica il numero di job restituiti.
  • PROJECT_ID: l'ID del progetto che contiene le offerte di lavoro che stai elencando. Se impostare un progetto predefinito, Non è necessario fornire il parametro PROJECT_ID.

Esempi

Il comando seguente elenca tutti i job per l'utente corrente. Esecuzione di questo richiede le autorizzazioni bigquery.jobs.list.

bq ls --jobs=true myproject

Il comando seguente elenca tutti i job per tutti gli utenti. Esecuzione di questo comando richiede le autorizzazioni bigquery.jobs.listAll.

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

Il seguente comando elenca i 10 job più recenti in myproject:

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

Il comando seguente elenca tutti i job inviati prima del 3 marzo 2032 alle ore 04:04:00. Questo timestamp (in millisecondi) equivale al seguente valore intero: 1961899440000.

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

API

Chiama jobs.list e fornisci il parametro projectId. Per elencare i job per tutti gli utenti, imposta allUsers su true. L'impostazione di allUsers su true richiede Autorizzazioni bigquery.jobs.listAll.

Vai

Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

// 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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.


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))

Annulla job

Puoi annullare un job RUNNING o PENDING nei seguenti modi:

  • Utilizzo della console Google Cloud.
  • Utilizzo del bq cancel .
  • L'utilizzo del BQ.JOBS.CANCEL di sistema in una query SQL.
  • Chiamando il metodo API jobs.cancel.
  • Utilizzare le librerie client.

Anche se il job può essere annullato, il successo non è garantito. Il job potrebbe avere completato prima di inviare la richiesta di annullamento, oppure il job potrebbe trovarsi in una in cui non può essere annullata.

Autorizzazioni obbligatorie

Per annullare un job, devi disporre dell'autorizzazione IAM bigquery.jobs.update. Ti viene concessa automaticamente questa autorizzazione per i job che crei.

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per annullare un job:

  • roles/bigquery.admin (ti consente di annullare qualsiasi job nel progetto)
  • roles/bigquery.user (ti consente di annullare i job)
  • roles/bigquery.jobUser (ti consente di annullare i job)

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Annullare un job

Generalmente l'annullamento di un job richiede meno di un minuto.

Per annullare un lavoro:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Fai clic su Crea nuova query e inserisci una query.

  3. Per eseguire la query, fai clic su Esegui.

  4. Per annullare un lavoro, fai clic su Annulla.

SQL

Usa la procedura di sistema BQ.JOBS.CANCEL:

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

Sostituisci JOB_ID con l'ID del job che stai annullando.

Se ti trovi in un progetto diverso, ma nella stessa regione del job, vuoi annullare, devi includere anche l'ID progetto:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto che contiene il job che stai annullando
  • JOB_ID: l'ID del job che stai annullando

La procedura viene restituita immediatamente e BigQuery annulla lavoro subito dopo. Se il job ha già avuto esito positivo o negativo, non ha alcun effetto.

bq

Emetti bq cancel con l'argomento JOB_ID. Puoi richiedere annullare e tornare immediatamente utilizzando il flag --nosync=true. Di per impostazione predefinita, le richieste di annullamento attendono il completamento.

Quando fornisci l'argomento JOB_ID, puoi utilizzare il metodo l'ID completo o lo Short in un modulo di testo. Ad esempio, gli ID job elencati nella console Google Cloud sono completamente qualificato; cioè includono il progetto e la località:

my-project-1234:US.bquijob_123x456_123y123z123c

Gli ID job nello strumento a riga di comando bq sono elencati in forma breve. ID progetto e località non sono incluse:

bquijob_123x456_123y123z123c

Per specificare la località del job, fornisci il flag --location e imposta il valore alla tua posizione. Questo flag è facoltativo se utilizzi l'ID job completo. Se includi --location e stai utilizzando l'ID job completo, il flag --location è ignorato.

Il comando seguente richiede l'annullamento del job e attende il completamento. Se fornito l'ID job completo, il flag --location viene ignorato:

bq --location=LOCATION cancel JOB_ID

Il seguente comando richiede l'annullamento del job e restituisce immediatamente. Se fornito l'ID job completo, il flag --location viene ignorato:

bq --location=LOCATION --nosync cancel JOB_ID

Sostituisci quanto segue:

  • LOCATION (facoltativo): il nome del località in cui viene eseguito il job. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, imposta il valore del flag su asia-northeast1. Puoi impostare un valore predefinito per la località utilizzando il File .bigqueryrc.
  • JOB_ID: l'ID del job che stai annullando. Se copi l'ID job dalla console Google Cloud, l'ID progetto località sono incluse nell'ID job. Ad esempio: my-project-1234:US.bquijob_123x456_123y123z123c.

Esempi

Il comando seguente annulla il job my-project-1234:US.bquijob_123x456_123y123z123c in esecuzione nella località multiregionale US nel progetto my-project-1234 e attende della completamento. Poiché viene usato l'ID job completo, il flag località non specificato.

bq cancel my-project-1234:US.bquijob_123x456_123y123z123c

Il seguente comando annulla il job bquijob_123x456_123y123z123c in esecuzione nella località multiregionale US nel progetto my-project-1234 e attende della completamento. Poiché viene utilizzata la forma breve dell'ID job, --location viene fornito un flag.

bq --location=US cancel bquijob_123x456_123y123z123c

Il seguente comando annulla il job bquijob_123x456_123y123z123c in esecuzione nella località multiregionale US nel progetto my-project-1234, e restituisce immediatamente. Poiché viene utilizzato l'ID job completo, il flag --location è non specificato.

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

API

Chiama jobs.cancel e fornisci i parametri jobId e projectId. Fornisci location e imposta il valore sul parametro location in cui viene eseguito il job.

Vai

Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

// 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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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")

Elimina metadati del job

Puoi eliminare i metadati per un job specifico utilizzando lo strumento a riga di comando bq e la libreria client Python. BigQuery conserva una cronologia dei job eseguiti negli ultimi 6 mesi. Puoi usare questo metodo per rimuovere le informazioni sensibili che potrebbero essere presenti nelle istruzioni della query. I metadati del job possono essere eliminati solo una volta completato il job. Se un job ha creato job figlio, questi vengono eliminati. L'eliminazione dei job figlio non è consentito. Puoi eliminare solo i job padre o di primo livello.

Autorizzazioni obbligatorie

Per eliminare i metadati del job, devi disporre dell'autorizzazione IAM bigquery.jobs.delete.

Il ruolo IAM predefinito roles/bigquery.admin include l'autorizzazione necessaria per eliminare i metadati del job.

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Elimina metadati del job

bq

Esegui il comando bq rm con il flag -j e un ID job.

Quando fornisci l'ID job, puoi utilizzare l'ID completo o il breve in un modulo di testo. Ad esempio, gli ID job elencati nella console Google Cloud sono completamente qualificato, ovvero includono il progetto e la località:

my-project-1234:US.bquijob_123x456_123y123z123c

Gli ID job nello strumento a riga di comando bq sono elencati in forma breve. L'ID progetto e la località non sono inclusi:

bquijob_123x456_123y123z123c

Per specificare la località del job, fornisci il flag --location e imposta il valore alla tua posizione. Questo flag è facoltativo se utilizzi l'ID job completo. Se includi --location e stai utilizzando l'ID job completo, il flag --location è ignorato.

Il comando seguente elimina un job:

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

Python

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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.")

Job ripetuti

Non è possibile ripetere un job utilizzando lo stesso ID job. Puoi invece creare un'immagine un nuovo job con la stessa configurazione. Quando invii il nuovo job nel campo Nella console Google Cloud o nello strumento a riga di comando bq, viene assegnato un nuovo ID job. Quando il job utilizzando l'API o le librerie client, devi generare un nuovo job ID.

Autorizzazioni obbligatorie

Per eseguire un job, devi disporre dell'autorizzazione IAM bigquery.jobs.create.

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per eseguire un job:

  • roles/bigquery.admin
  • roles/bigquery.user
  • roles/bigquery.jobUser

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Autorizzazioni e ruoli predefiniti.

Ripetizione di un job

Per ripetere un job:

Console

Per ripetere un job di query, segui questi passaggi:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Per elencare tutti i tuoi lavori, fai clic su Cronologia personale. Per elencare tutti in un progetto, fai clic su Cronologia progetto.

  3. Fai clic su un job di query per aprire i relativi dettagli.

  4. Per ripetere una query, fai clic su Apri come nuova query.

  5. Fai clic su Esegui.

Per ripetere un job di caricamento:

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Per elencare tutti i tuoi lavori, fai clic su Cronologia personale. Per elencare tutti in un progetto, fai clic su Cronologia progetto.

  3. Fai clic su un job di caricamento per aprire i relativi dettagli.

  4. Per ripetere un job, fai clic su Ripeti job di caricamento.

bq

Esegui di nuovo il comando e BigQuery automaticamente genera un job con un nuovo ID job.

API

Non esiste un metodo di chiamata singola per ripetere un job: se vuoi ripetere lavoro specifico:

  1. Chiama jobs.get per e recuperare la risorsa affinché il job si ripeta.

  2. Rimuovi i campi id, status e statistics. Modifica il campo jobId utilizzando un nuovo valore generato dal cliente. le API nel tuo codice. Modifica tutti gli altri campi in base alle necessità.

  3. Chiama jobs.insert con la risorsa modificata e il nuovo ID job per avviare il nuovo job.