Jobs verwalten

Nachdem Sie einen BigQuery-Job gesendet haben, können Sie Jobdetails aufrufen, Jobs auflisten, einen Job abbrechen, einen Job wiederholen oder Jobmetadaten löschen.

Wenn ein Job gesendet wurde, kann er einen der folgenden Status haben:

  • PENDING: Der Job ist geplant und wartet auf die Ausführung.
  • RUNNING: Der Job wird bearbeitet.
  • DONE: Der Job ist abgeschlossen. Wenn der Job fehlerfrei ausgeführt wird, meldet BigQuery diesen Status als SUCCESS. Wenn der Job mit Fehlern abgeschlossen wird, meldet BigQuery diesen Status als FAILURE.

Hinweis

Erteilen Sie IAM-Rollen (Identity and Access Management), die Nutzern die erforderlichen Berechtigungen zum Ausführen der einzelnen Aufgaben in diesem Dokument geben. Die Berechtigungen, die zum Ausführen einer Aufgabe erforderlich sind (sofern zutreffend), werden im Abschnitt "Erforderliche Berechtigungen" der Aufgabe aufgelistet.

Auftragsdetails aufrufen

Sie können Jobdetails über die Google Cloud Console, das bq-Befehlszeilentool, die API oder die Clientbibliotheken aufrufen. Die Details enthalten Daten und Metadaten wie den Jobtyp, den Jobstatus und den Nutzer, der den Job erstellt hat.

Erforderliche Berechtigungen

Zum Aufrufen von Jobdetails benötigen Sie die IAM-Berechtigung bigquery.jobs.get. Sie erhalten diese Berechtigung automatisch für die von Ihnen erstellten Jobs.

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Aufrufen von Jobdetails benötigen:

  • roles/bigquery.admin (kann Details zu allen Jobs im Projekt aufrufen)
  • roles/bigquery.user (kann Details zu Ihren Jobs aufrufen)
  • roles/bigquery.jobUser (kann Details zu Ihren Jobs aufrufen)

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Auftragsdetails aufrufen

So rufen Sie Jobdetails auf:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Maximieren Sie den Bereich Jobverlauf.

  3. Wählen Sie den Jobverlaufstyp aus, den Sie sehen möchten:

    • Klicken Sie auf Persönlicher Verlauf, um Informationen zu Ihren letzten Jobs aufzurufen.
    • Zum Aufrufen von Informationen zu den letzten Jobs in Ihrem Projekt klicken Sie auf Projektverlauf.
  4. Klicken Sie auf einen Job, um die Jobdetails aufzurufen.

bq

Führen Sie den Befehl bq show mit dem Flag --job=true und einer Job-ID aus.

Wenn Sie die Job-ID angeben, können Sie die vollständig qualifizierte ID oder die Kurzform verwenden. In der Google Cloud Console aufgeführte Job-IDs sind beispielsweise voll qualifiziert – sie enthalten das Projekt und den Standort:

my-project-1234:US.bquijob_123x456_123y123z123c

Job-IDs im Befehlszeilentool werden mit der Kurzform aufgelistet – Projekt-ID und Standort sind nicht enthalten:

bquijob_123x456_123y123z123c

Zur Angabe des Jobstandorts geben Sie das Flag --location an und legen als Wert Ihren Standort fest. Dieses Flag ist optional, wenn Sie die vollständig qualifizierte Job-ID verwenden. Wenn Sie das Flag --location und die vollständig qualifizierte Job-ID gemeinsam verwenden, wird das Flag --location ignoriert.

Der folgende Befehl fordert Informationen zu einem Job an:

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

Dabei gilt:

  • LOCATION: der Name des Standorts, an dem der Job ausgeführt wird. Wenn Sie beispielsweise BigQuery in der Region Tokio verwenden, geben Sie für das Flag den Wert asia-northeast1 an. Mit der Datei .bigqueryrc können Sie einen Standardwert für den Standort festlegen. Wenn der Standort nicht als Teil der Job-ID oder mithilfe des Flags --location angegeben ist, wird der Standardstandort verwendet.
  • JOB_ID: die ID des Jobs

Beispiele

Der folgende Befehl ruft zusammenfassende Informationen zum Job US.bquijob_123x456_123y123z123c ab, der in myproject ausgeführt wird:

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

Die Ausgabe sieht etwa so aus:

 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

Geben Sie Folgendes ein, um die kompletten Jobdetails aufzurufen:

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

Die Ausgabe sieht etwa so aus:

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

Rufen Sie jobs.get auf und geben Sie die Parameter jobId und projectId an. Optional: Geben Sie den Parameter location an und legen Sie als Wert den Standort fest, an dem der Job ausgeführt wird. Dieser Parameter ist optional, wenn Sie die vollständig qualifizierte Job-ID verwenden, die den Standort enthält, z. B. my-project-1234:US.bquijob_123x456_123y123z123c.

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Weitere Informationen zur Fehlerbehebung bei einem Job finden Sie in den INFORMATION_SCHEMA.JOBS*-Ansichten und den Logs.

Jobs in einem Projekt auflisten

BigQuery speichert einen sechswöchigen Jobverlauf für alle Jobs eines Projekts.

Sie können den Jobverlauf auf folgende Arten aufrufen:

  • Google Cloud Console verwenden
  • Verwendung des bq ls-Befehls.
  • Durch Aufrufen der API-Methode jobs.list
  • Mithilfe der Clientbibliotheken

Der Jobverlauf enthält Jobs mit den Status RUNNING und DONE, dargestellt durch die Statusmeldung SUCCESS oder FAILURE.

Erforderliche Berechtigungen

Zum Auflisten aller Jobs, die Sie in einem Projekt erstellt haben, benötigen Sie die IAM-Berechtigung bigquery.jobs.create. Zum Auflisten aller Jobs, die von allen Nutzern in einem Projekt erstellt wurden, benötigen Sie die IAM-Berechtigung bigquery.jobs.list. Sie können nur die Details der von Ihnen erstellten Jobs sehen. Die Details zu Jobs, die von anderen Nutzern erstellt wurden, werden entfernt.

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Auflisten von Jobs benötigen:

  • roles/bigquery.admin (kann alle Jobs im Projekt auflisten)
  • roles/bigquery.user (kann alle Jobs im Projekt auflisten)
  • roles/bigquery.jobUser (kann Ihre Jobs auflisten)

Zum Auflisten aller Jobs in einem Projekt, einschließlich ihrer Details, benötigen Sie die IAM-Berechtigung bigquery.jobs.listAll.

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie benötigen, um alle Jobs einschließlich ihrer Details aufzulisten:

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

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Jobs auflisten

BigQuery listet Jobs für alle Standorte auf.

So listen Sie Jobs in einem Projekt auf:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Maximieren Sie den Bereich Jobverlauf.

  3. Klicken Sie auf Projektverlauf, um alle Jobs in einem Projekt aufzulisten. Wenn Sie nicht der Projektinhaber sind, sind Sie möglicherweise nicht berechtigt, alle Jobs für ein Projekt anzeigen zu lassen. Die aktuellsten Jobs werden zuerst aufgeführt.

  4. Klicken Sie auf Persönlicher Verlauf, um Ihre Jobs aufzulisten.

bq

Führen Sie den Befehl bq ls mit einem der folgenden Flags aus:

  • --jobs=true oder -j gibt Jobs als Ressourcentyp an, der aufgelistet werden soll.
  • Mit --all=true oder -a werden die Jobs von allen Nutzern angezeigt. Zur ungekürzten Anzeige aller Details für alle Jobs brauchen Sie Berechtigungen des Typs bigquery.jobs.listAll.
  • --min_creation_time: listet Jobs nach einem angegebenen Zeitstempelwert auf. Dieser Wert wird als Unix-Epochen-Zeitstempel in Millisekunden dargestellt.
  • --max_creation_time: listet Jobs vor einem angegebenen Zeitstempelwert auf. Dieser Wert wird als Unix-Epochen-Zeitstempel in Millisekunden dargestellt.
  • --max_results oder -n begrenzen die Ergebnisse. Der Standardwert sind 50 Ergebnisse.
bq ls --jobs=true --all=true \
    --min_creation_time=MIN_TIME \
    --max_creation_time=MAX_TIME \
    --max_results=MAX_RESULTS \
    PROJECT_ID

Dabei gilt:

  • MIN_TIME: Eine Ganzzahl, die einen Zeitstempel der Unix-Epoche in Millisekunden darstellt.
  • MAX_TIME: Eine Ganzzahl, die einen Zeitstempel der Unix-Epoche in Millisekunden darstellt.
  • MAX_RESULTS: eine Ganzzahl, die die Anzahl der zurückgegebenen Jobs angibt.
  • PROJECT_ID: die ID des Projekts, das die aufgelisteten Jobs enthält. Wenn Sie ein Standardprojekt festgelegt haben, brauchen Sie den Parameter PROJECT_ID nicht anzugeben.

Beispiele

Mit dem folgenden Befehl werden alle Jobs für den aktuellen Nutzer aufgelistet. Zur Ausführung dieses Befehls sind Berechtigungen des Typs bigquery.jobs.list erforderlich.

bq ls --jobs=true myproject

Mit dem folgenden Befehl werden alle Jobs für alle Nutzer aufgelistet. Zur Ausführung dieses Befehls sind Berechtigungen des Typs bigquery.jobs.listAll erforderlich.

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

Mit dem folgenden Befehl werden die zehn letzten Jobs in myproject aufgelistet:

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

Der folgende Befehl listet alle Jobs auf, die vor dem 3. März 2032 um 4:04:00 Uhr gesendet wurden. Dieser Zeitstempel (in Millisekunden) ist gleich dem Ganzzahlenwert 1961899440000.

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

API

Rufen Sie jobs.list auf und geben Sie dabei den Parameter projectId an. Zum Auflisten der Jobs für alle Nutzer legen Sie für den Parameter allUsers den Wert true fest. Die Festlegung von allUsers auf true erfordert Berechtigungen des Typs bigquery.jobs.listAll.

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.


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

Jobs abbrechen

So können Sie Jobs mit dem Status RUNNING oder PENDING abbrechen:

  • Google Cloud Console verwenden
  • Durch Verwendung des bq cancel-Befehls.
  • BQ.JOBS.CANCEL-Systemprozedur in einer SQL-Abfrage verwenden
  • Durch Aufruf der API-Methode jobs.cancel
  • Mithilfe der Clientbibliotheken

Auch wenn der Job abgebrochen werden kann, ist der Vorgang nicht immer erfolgreich. Der Job kann z. B. abgeschlossen sein, bevor die Anfrage zum Abbrechen gesendet wurde, oder er befindet sich in einer Phase, in der ein Abbrechen nicht möglich ist.

Erforderliche Berechtigungen

Zum Abbrechen eines Jobs benötigen Sie die IAM-Berechtigung bigquery.jobs.update. Sie erhalten diese Berechtigung automatisch für die von Ihnen erstellten Jobs.

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Abbrechen eines Jobs benötigen:

  • roles/bigquery.admin (zum Abbrechen eines beliebigen Jobs im Projekt)
  • roles/bigquery.user (zum Abbrechen Ihrer Jobs)
  • roles/bigquery.jobUser (zum Abbrechen Ihrer Jobs)

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Job abbrechen

Es dauert in der Regel weniger als eine Minute, einen Job abzubrechen.

So brechen Sie einen Job ab:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie auf Neue Abfrage erstellen und geben Sie eine Abfrage ein.

  3. Klicken Sie zum Ausführen der Abfrage auf Run (Ausführen).

  4. Wenn Sie einen Job abbrechen möchten, klicken Sie auf Abbrechen.

SQL

Verwenden Sie das Systemverfahren BQ.JOBS.CANCEL:

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

Ersetzen Sie JOB_ID durch die ID des Jobs, den Sie abbrechen.

Wenn Sie sich in einem anderen Projekt, aber in derselben Region befinden, in der der Job abgebrochen wird, müssen Sie auch die Projekt-ID angeben:

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

Dabei gilt:

  • PROJECT_ID: die ID des Projekts, das den Job enthält, den Sie abbrechen möchten
  • JOB_ID: die ID des Jobs, den Sie abbrechen

Die Prozedur wird sofort zurückgegeben und der Job wird in BigQuery bald abgebrochen. Wenn der Job bereits erfolgreich war oder fehlgeschlagen ist, hat das Verfahren keine Auswirkungen.

bq

Führen Sie den Befehl bq cancel mit dem Argument JOB_ID aus. Sie können einen Abbruch und eine umgehende Rückgabe anfragen. Verwenden Sie dazu das Flag --nosync=true. Standardmäßig warten Abbruchanfragen auf den Abschluss des Vorgangs.

Wenn Sie das Argument JOB_ID angeben, können Sie die voll qualifizierte ID oder die Kurzform verwenden. In der Google Cloud Console aufgeführte Job-IDs sind beispielsweise voll qualifiziert – sie enthalten das Projekt und den Standort:

my-project-1234:US.bquijob_123x456_123y123z123c

Job-IDs im bq-Befehlszeilentool werden mit der Kurzform aufgelistet – Projekt-ID und Standort sind nicht enthalten:

bquijob_123x456_123y123z123c

Zur Angabe des Jobstandorts geben Sie das Flag --location an und legen als Wert Ihren Standort fest. Dieses Flag ist optional, wenn Sie die vollständig qualifizierte Job-ID verwenden. Wenn Sie das Flag --location und die vollständig qualifizierte Job-ID gemeinsam verwenden, wird das Flag --location ignoriert.

Der folgende Befehl fordert den Jobabbruch an und wartet auf den Abschluss des Vorgangs: Wenn die vollständig qualifizierte Job-ID angegeben ist, wird das Flag --location ignoriert:

bq --location=LOCATION cancel JOB_ID

Der folgende Befehl fordert den Jobabbruch an und wird sofort zurückgegeben: Wenn die vollständig qualifizierte Job-ID angegeben ist, wird das Flag --location ignoriert:

bq --location=LOCATION --nosync cancel JOB_ID

Dabei gilt:

  • LOCATION (optional): der Name des Standorts, an dem der Job ausgeführt wird. Wenn Sie beispielsweise BigQuery in der Region Tokio verwenden, geben Sie für das Flag den Wert asia-northeast1 an. Mit der Datei .bigqueryrc können Sie einen Standardwert für den Standort festlegen.
  • JOB_ID: die ID des Jobs, den Sie abbrechen. Wenn Sie die Job-ID aus der Google Cloud Console kopieren, sind darin die Projekt-ID und der Standort in enthalten. Beispiel: my-project-1234:US.bquijob_123x456_123y123z123c

Beispiele

Der folgende Befehl bricht den Auftrag my-project-1234:US.bquijob_123x456_123y123z123c ab, der im Projekt my-project-1234 am multiregionalen Standort US läuft, und wartet auf den Abschluss. Da die vollständig qualifizierte Job-ID verwendet wird, ist das Standort-Flag nicht angegeben.

bq cancel my-project-1234:US.bquijob_123x456_123y123z123c

Der folgende Befehl bricht den Auftrag bquijob_123x456_123y123z123c ab, der im Projekt my-project-1234 am multiregionalen Standort US läuft, und wartet auf den Abschluss. Da die Kurzform der Job-ID verwendet wird, ist das Flag --location angegeben.

bq --location=US cancel bquijob_123x456_123y123z123c

Der folgende Befehl bricht den Auftrag bquijob_123x456_123y123z123c ab, der im Projekt my-project-1234 am multiregionalen Standort US läuft, und wird sofort zurückgegeben. Da die vollständig qualifizierte Job-ID verwendet wird, ist das Flag --location nicht angegeben.

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

API

Rufen Sie jobs.cancel auf und geben Sie die Parameter jobId und projectId an. Geben Sie den Parameter location an und legen Sie als Wert den Standort fest, an dem der Job ausgeführt wird.

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Jobmetadaten löschen

Sie können die Metadaten für einen bestimmten Job mit dem bq-Befehlszeilentool und der Python-Clientbibliothek löschen. In BigQuery wird ein Verlauf der Jobs gespeichert, die in den letzten sechs Monaten ausgeführt wurden. Sie können diese Methode verwenden, um vertrauliche Informationen zu entfernen, die möglicherweise in Abfrageanweisungen vorhanden sind. Jobmetadaten können erst gelöscht werden, nachdem der Job abgeschlossen ist. Wenn ein Job untergeordnete Jobs erstellt hat, werden auch die untergeordneten Jobs gelöscht. Das Löschen von untergeordneten Jobs ist nicht zulässig. Nur übergeordnete Jobs oder Jobs oberster Ebene können gelöscht werden.

Erforderliche Berechtigungen

Zum Löschen von Jobmetadaten benötigen Sie die IAM-Berechtigung bigquery.jobs.delete.

Die vordefinierte IAM-Rolle roles/bigquery.admin enthält die Berechtigung, die Sie zum Löschen von Jobmetadaten benötigen.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Jobmetadaten löschen

bq

Führen Sie den Befehl bq rm mit dem Flag -j und einer Job-ID aus.

Wenn Sie die Job-ID angeben, können Sie die vollständig qualifizierte ID oder die Kurzform verwenden. In der Google Cloud Console aufgeführte Job-IDs sind beispielsweise voll qualifiziert – sie enthalten das Projekt und den Standort:

my-project-1234:US.bquijob_123x456_123y123z123c

Job-IDs im bq-Befehlszeilentool werden mit der Kurzform aufgelistet – Projekt-ID und Standort sind nicht enthalten:

bquijob_123x456_123y123z123c

Zur Angabe des Jobstandorts geben Sie das Flag --location an und legen als Wert Ihren Standort fest. Dieses Flag ist optional, wenn Sie die vollständig qualifizierte Job-ID verwenden. Wenn Sie das Flag --location und die vollständig qualifizierte Job-ID gemeinsam verwenden, wird das Flag --location ignoriert.

Mit dem folgenden Befehl wird ein Job gelöscht:

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Jobs wiederholen

Ein Job mit derselben Job-ID kann nicht wiederholt werden. Stattdessen müssen Sie einen neuen Job mit der gleichen Konfiguration erstellen. Wenn Sie den neuen Job über die Google Cloud Console oder das bq-Befehlszeilentool senden, wird eine neue Job-ID zugewiesen. Wenn Sie den Job mithilfe der API oder der Clientbibliotheken senden, müssen Sie eine neue Job-ID generieren.

Erforderliche Berechtigungen

Zum Ausführen eines Jobs benötigen Sie die IAM-Berechtigung bigquery.jobs.create.

Jede der folgenden vordefinierten IAM-Rollen enthält die Berechtigungen, die Sie zum Ausführen eines Jobs benötigen:

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

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Job wiederholen

So wiederholen Sie einen Job:

Console

So wiederholen Sie einen Abfragejob:

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Maximieren Sie den Bereich Jobverlauf.

  3. Klicken Sie auf Persönlicher Verlauf, um alle Ihre Jobs aufzulisten. Klicken Sie auf Projektverlauf, um alle Jobs in einem Projekt aufzulisten.

  4. Klicken Sie auf einen Abfragejob, um die Jobdetails zu öffnen.

  5. Klicken Sie zum Wiederholen einer Abfrage auf Als neue Abfrage öffnen.

  6. Klicken Sie auf Ausführen.

So wiederholen Sie einen Ladejob:

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Maximieren Sie den Bereich Jobverlauf.

  3. Klicken Sie auf Persönlicher Verlauf, um alle Ihre Jobs aufzulisten. Klicken Sie auf Projektverlauf, um alle Jobs in einem Projekt aufzulisten.

  4. Klicken Sie auf einen Ladejob, um die Jobdetails zu öffnen.

  5. Klicken Sie auf Ladejob wiederholen, um einen Job zu wiederholen.

bq

Führen Sie den Befehl noch einmal aus. BigQuery generiert automatisch einen Job mit einer neuen Job-ID.

API

Ein Job kann nicht mithilfe eines einzelnen Aufrufs wiederholt werden. Gehen Sie so vor, um einen Job zu wiederholen:

  1. Rufen Sie jobs.get auf, um die Ressource für den Job abzurufen, der noch einmal ausgeführt werden soll.

  2. Entfernen Sie die Felder id, status und statistics. Ändern Sie das Feld jobId in einen neuen Wert, der von Ihrem Clientcode generiert wird. Ändern Sie die anderen Felder nach Bedarf.

  3. Rufen Sie jobs.insert mit der geänderten Ressource und mit der neuen Job-ID auf, um den neuen Job zu starten.