Mengelola tugas

Setelah mengirimkan tugas BigQuery, Anda dapat melihat detail tugas, membuat daftar tugas, membatalkan tugas, mengulangi tugas, atau menghapus metadata tugas.

Tugas yang dikirimkan bisa dalam salah satu status berikut:

  • PENDING: Tugas dijadwalkan dan menunggu untuk dijalankan.
  • RUNNING: Tugas sedang berlangsung.
  • DONE: Tugas selesai. Jika tugas selesai tanpa error, BigQuery melaporkan status ini sebagai SUCCESS. Jika tugas selesai dengan error, BigQuery melaporkan status ini sebagai FAILURE.

Sebelum memulai

Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini. Izin yang diperlukan untuk melakukan tugas (jika ada) tercantum di bagian "Izin yang diperlukan" pada tugas tersebut.

Melihat detail tugas

Anda dapat melihat detail tugas menggunakan konsol Google Cloud, alat command line bq, API, atau library klien. Detail tersebut mencakup data dan metadata, seperti jenis tugas, status tugas, dan pengguna yang membuat tugas.

Izin yang diperlukan

Untuk melihat detail tugas, Anda memerlukan izin IAM bigquery.jobs.get. Anda otomatis diberi izin ini untuk tugas yang Anda buat.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk melihat detail tugas:

  • roles/bigquery.admin (memungkinkan Anda melihat detail semua tugas dalam project)
  • roles/bigquery.user (memungkinkan Anda melihat detail tugas)
  • roles/bigquery.jobUser (memungkinkan Anda melihat detail tugas)

Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, lihat Peran dan izin yang telah ditetapkan.

Melihat detail tugas

Untuk melihat detail tugas, lakukan langkah-langkah berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Luaskan panel Histori tugas.

  3. Pilih jenis histori tugas yang ingin Anda lihat:

    • Untuk menampilkan informasi tugas terbaru, klik Personal history.
    • Untuk menampilkan informasi tugas terbaru dalam project Anda, klik Project history.
  4. Untuk melihat detail tugas, klik satu tugas.

bq

Berikan perintah bq show dengan flag --job=true dan ID tugas.

Saat memberikan ID tugas, Anda dapat menggunakan ID yang sepenuhnya memenuhi syarat atau berdurasi singkat. Misalnya, ID tugas yang tercantum di konsol Google Cloud sepenuhnya memenuhi syarat, yaitu menyertakan project dan lokasi:

my-project-1234:US.bquijob_123x456_123y123z123c

ID tugas di alat command line dicantumkan menggunakan bentuk singkat. Project ID dan lokasi tidak disertakan:

bquijob_123x456_123y123z123c

Untuk menentukan lokasi tugas, berikan tanda --location dan tetapkan nilainya ke lokasi Anda. Tanda ini bersifat opsional jika Anda menggunakan ID tugas yang sepenuhnya memenuhi syarat. Jika Anda menyertakan tanda --location dan menggunakan ID tugas yang sepenuhnya memenuhi syarat, tanda --location akan diabaikan.

Perintah berikut meminta informasi tentang tugas:

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

Ganti kode berikut:

  • LOCATION: nama lokasi tempat tugas dijalankan. Misalnya, jika Anda menggunakan BigQuery di wilayah Tokyo, tetapkan nilai flag ke asia-northeast1. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc. Jika lokasi tidak ditentukan sebagai bagian dari ID tugas atau dengan menggunakan flag --location, lokasi default akan digunakan.
  • JOB_ID: ID tugas

Contoh

Perintah berikut mendapatkan informasi ringkasan tentang tugas US.bquijob_123x456_123y123z123c yang berjalan di myproject:

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

Outputnya mirip dengan hal berikut ini:

 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

Untuk melihat detail tugas lengkap, masukkan:

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

Outputnya mirip dengan hal berikut ini:

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

Panggil jobs.get dan berikan parameter jobId dan projectId. (Opsional) Sediakan parameter location dan tetapkan nilainya ke lokasi tempat tugas dijalankan. Parameter ini bersifat opsional jika Anda menggunakan ID tugas yang sepenuhnya memenuhi syarat yang menyertakan lokasi, misalnya, my-project-1234:US.bquijob_123x456_123y123z123c.

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Jika Anda memerlukan informasi selengkapnya untuk memecahkan masalah tugas, lihat tampilan INFORMATION_SCHEMA.JOBS* dan Log.

Mencantumkan tugas dalam sebuah project

BigQuery menyimpan histori tugas enam bulan untuk semua tugas dalam suatu project.

Anda dapat melihat histori tugas dengan cara berikut:

  • Menggunakan konsol Google Cloud.
  • Menggunakan perintah bq ls.
  • Memanggil metode API jobs.list.
  • Menggunakan library klien.

Histori tugas menyertakan tugas yang memiliki status RUNNING dan tugas yang memiliki status DONE (ditunjukkan dengan melaporkan status sebagai SUCCESS atau FAILURE).

Izin yang diperlukan

Untuk mencantumkan semua tugas yang dibuat dalam sebuah project, Anda memerlukan izin IAM bigquery.jobs.create. Untuk mencantumkan semua tugas yang dibuat oleh semua pengguna dalam sebuah project, Anda memerlukan izin IAM bigquery.jobs.list. Anda hanya dapat melihat detail lengkap tugas yang Anda buat. Detail tugas yang dibuat oleh pengguna lain disamarkan.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk mencantumkan tugas:

  • roles/bigquery.admin (memungkinkan Anda membuat daftar semua tugas dalam project)
  • roles/bigquery.user (memungkinkan Anda membuat daftar semua tugas dalam project)
  • roles/bigquery.jobUser (memungkinkan Anda mencantumkan tugas)

Untuk mencantumkan semua tugas dalam sebuah project, termasuk detailnya, Anda memerlukan izin IAM bigquery.jobs.listAll.

Setiap peran IAM yang telah ditetapkan berikut mencakup izin yang Anda perlukan untuk mencantumkan semua tugas, termasuk detailnya:

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

Untuk informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.

Membuat daftar tugas

BigQuery mencantumkan tugas untuk semua lokasi.

Untuk menampilkan daftar tugas dalam sebuah project, lakukan langkah berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Luaskan panel Histori tugas.

  3. Untuk menampilkan daftar semua tugas di sebuah project, klik Project history. Jika bukan pemilik project, Anda mungkin tidak memiliki izin untuk melihat semua tugas untuk suatu project. Tugas terbaru dicantumkan di urutan pertama.

  4. Untuk mencantumkan tugas Anda, klik Personal history.

bq

Jalankan perintah bq ls dengan salah satu flag berikut:

  • --jobs=true atau -j: mengidentifikasi tugas sebagai jenis resource yang akan dicantumkan.
  • --all=true atau -a: mencantumkan tugas dari semua pengguna. Untuk melihat detail lengkap (tidak tersunting) untuk semua tugas, Anda harus memiliki izin bigquery.jobs.listAll.
  • --min_creation_time: mencantumkan tugas setelah nilai stempel waktu yang diberikan. Nilai ini direpresentasikan sebagai stempel waktu epoch Unix dalam milidetik.
  • --max_creation_time: mencantumkan tugas sebelum nilai stempel waktu yang diberikan. Nilai ini direpresentasikan sebagai stempel waktu epoch Unix dalam milidetik.
  • --max_results atau -n membatasi hasil. Defaultnya adalah 50 hasil.
bq ls --jobs=true --all=true \
    --min_creation_time=MIN_TIME \
    --max_creation_time=MAX_TIME \
    --max_results=MAX_RESULTS \
    PROJECT_ID

Ganti kode berikut:

  • MIN_TIME: bilangan bulat yang mewakili stempel waktu epoch Unix dalam milidetik.
  • MAX_TIME: bilangan bulat yang mewakili stempel waktu epoch Unix dalam milidetik.
  • MAX_RESULTS: bilangan bulat yang menunjukkan jumlah tugas yang ditampilkan.
  • PROJECT_ID: ID project yang berisi tugas yang Anda cantumkan. Jika menetapkan project default, Anda tidak perlu memberikan parameter PROJECT_ID.

Contoh

Perintah berikut mencantumkan semua tugas untuk pengguna saat ini. Menjalankan perintah ini memerlukan izin bigquery.jobs.list.

bq ls --jobs=true myproject

Perintah berikut mencantumkan semua tugas untuk semua pengguna. Untuk menjalankan perintah ini, Anda memerlukan izin bigquery.jobs.listAll.

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

Perintah berikut mencantumkan 10 tugas terbaru di myproject:

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

Perintah berikut mencantumkan semua tugas yang dikirimkan sebelum 3 Maret 2032, pukul 04:04:00. Stempel waktu ini (dalam milidetik) setara dengan nilai bilangan bulat berikut: 1961899440000.

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

API

Panggil jobs.list dan berikan parameter projectId. Untuk menampilkan daftar tugas bagi semua pengguna, setel parameter allUsers ke true. Penetapan allUsers ke true memerlukan izin bigquery.jobs.listAll.

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.


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

Membatalkan tugas

Anda dapat membatalkan tugas RUNNING atau PENDING dengan cara berikut:

  • Menggunakan konsol Google Cloud.
  • Menggunakan perintah bq cancel.
  • Menggunakan prosedur sistem BQ.JOBS.CANCEL dalam kueri SQL.
  • Dengan memanggil metode API jobs.cancel.
  • Menggunakan library klien.

Meskipun tugas dapat dibatalkan, keberhasilan tidak dijamin. Tugas mungkin telah selesai pada saat permintaan pembatalan dikirimkan, atau tugas mungkin berada dalam tahap yang tidak dapat dibatalkan.

Izin yang diperlukan

Untuk membatalkan tugas, Anda memerlukan izin IAM bigquery.jobs.update. Anda otomatis diberi izin ini untuk tugas yang Anda buat.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk membatalkan tugas:

  • roles/bigquery.admin (memungkinkan Anda membatalkan tugas apa pun dalam project)
  • roles/bigquery.user (memungkinkan Anda membatalkan tugas)
  • roles/bigquery.jobUser (memungkinkan Anda membatalkan tugas)

Untuk informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.

Membatalkan tugas

Biasanya diperlukan waktu kurang dari satu menit untuk menyelesaikan pembatalan tugas.

Untuk membatalkan tugas, lakukan langkah berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Klik Compose new query lalu masukkan kueri.

  3. Untuk menjalankan kueri, klik Run.

  4. Untuk membatalkan tugas, klik Cancel.

SQL

Gunakan prosedur sistem BQ.JOBS.CANCEL:

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

Ganti JOB_ID dengan ID tugas yang Anda batalkan.

Jika Anda berada di project yang berbeda, tetapi berada di region yang sama dengan tugas yang ingin dibatalkan, Anda juga harus menyertakan project ID:

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

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi tugas yang Anda batalkan
  • JOB_ID: ID tugas yang Anda batalkan

Prosedurnya segera ditampilkan, dan BigQuery membatalkan tugas segera setelahnya. Jika tugas sudah berhasil atau gagal, prosedurnya tidak akan berpengaruh.

bq

Berikan perintah bq cancel dengan argumen JOB_ID. Anda dapat meminta pembatalan dan segera kembali menggunakan tanda --nosync=true. Secara default, permintaan pembatalan menunggu selesai.

Saat menyediakan argumen JOB_ID, Anda dapat menggunakan ID yang sepenuhnya memenuhi syarat atau format singkat. Misalnya, ID tugas yang tercantum di konsol Google Cloud sepenuhnya memenuhi syarat; yaitu, mereka menyertakan proyek dan lokasinya:

my-project-1234:US.bquijob_123x456_123y123z123c

ID tugas di alat command line bq dicantumkan menggunakan bentuk singkat. Project ID dan lokasi tidak disertakan:

bquijob_123x456_123y123z123c

Untuk menentukan lokasi tugas, berikan tanda --location dan tetapkan nilainya ke lokasi Anda. Tanda ini bersifat opsional jika Anda menggunakan ID tugas yang sepenuhnya memenuhi syarat. Jika Anda menyertakan tanda --location dan menggunakan ID tugas yang sepenuhnya memenuhi syarat, tanda --location akan diabaikan.

Perintah berikut meminta pembatalan tugas dan menunggu penyelesaian. Jika ID tugas yang sepenuhnya memenuhi syarat diberikan, tanda --location akan diabaikan:

bq --location=LOCATION cancel JOB_ID

Perintah berikut meminta pembatalan tugas dan segera kembali. Jika ID tugas yang sepenuhnya memenuhi syarat diberikan, tanda --location akan diabaikan:

bq --location=LOCATION --nosync cancel JOB_ID

Ganti kode berikut:

  • LOCATION (opsional): nama lokasi tempat tugas dijalankan. Misalnya, jika Anda menggunakan BigQuery di wilayah Tokyo, tetapkan nilai flag ke asia-northeast1. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.
  • JOB_ID: ID tugas yang Anda batalkan. Jika Anda menyalin ID tugas dari konsol Google Cloud, project ID dan lokasi akan disertakan dalam ID tugas. Contoh, my-project-1234:US.bquijob_123x456_123y123z123c.

Contoh

Perintah berikut membatalkan tugas my-project-1234:US.bquijob_123x456_123y123z123c yang berjalan di lokasi multi-region US dalam project my-project-1234, dan menunggu hingga selesai. Karena ID tugas yang sepenuhnya memenuhi syarat digunakan, flag lokasi tidak diberikan.

bq cancel my-project-1234:US.bquijob_123x456_123y123z123c

Perintah berikut membatalkan tugas bquijob_123x456_123y123z123c yang berjalan di lokasi multi-region US dalam project my-project-1234 dan menunggu hingga selesai. Karena bentuk singkat ID tugas digunakan, flag --location disediakan.

bq --location=US cancel bquijob_123x456_123y123z123c

Perintah berikut membatalkan tugas bquijob_123x456_123y123z123c yang berjalan di lokasi multi-region US dalam project my-project-1234, dan segera ditampilkan. Karena ID tugas yang sepenuhnya memenuhi syarat digunakan, flag --location tidak diberikan.

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

API

Panggil jobs.cancel dan berikan parameter jobId dan projectId. Sediakan parameter location dan tetapkan nilai ke lokasi tempat tugas dijalankan.

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Menghapus metadata tugas

Anda dapat menghapus metadata untuk tugas tertentu menggunakan alat command line bq dan library klien Python. BigQuery menyimpan histori tugas yang dijalankan dalam 6 bulan terakhir. Anda dapat menggunakan metode ini untuk menghapus informasi sensitif yang mungkin ada dalam pernyataan kueri. Metadata tugas hanya dapat dihapus setelah tugas selesai. Jika tugas telah membuat tugas turunan, tugas turunan juga akan dihapus. Penghapusan tugas turunan tidak diizinkan. Hanya tugas induk atau tingkat atas yang dapat dihapus.

Izin yang diperlukan

Untuk menghapus metadata tugas, Anda memerlukan izin IAM bigquery.jobs.delete.

Peran IAM roles/bigquery.admin yang telah ditentukan menyertakan izin yang Anda perlukan untuk menghapus metadata tugas.

Untuk informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.

Menghapus metadata tugas

bq

Berikan perintah bq rm dengan flag -j dan ID tugas.

Saat memberikan ID tugas, Anda dapat menggunakan ID yang sepenuhnya memenuhi syarat atau berdurasi singkat. Misalnya, ID tugas yang tercantum di konsol Google Cloud sepenuhnya memenuhi syarat, yaitu menyertakan project dan lokasi:

my-project-1234:US.bquijob_123x456_123y123z123c

ID tugas di alat command line bq dicantumkan menggunakan bentuk singkat. Project ID dan lokasi tidak disertakan:

bquijob_123x456_123y123z123c

Untuk menentukan lokasi tugas, berikan tanda --location dan tetapkan nilainya ke lokasi Anda. Tanda ini bersifat opsional jika Anda menggunakan ID tugas yang sepenuhnya memenuhi syarat. Jika Anda menyertakan tanda --location dan menggunakan ID tugas yang sepenuhnya memenuhi syarat, tanda --location akan diabaikan.

Perintah berikut akan menghapus tugas:

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

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

Mengulangi tugas

Pengulangan tugas tidak dapat dilakukan menggunakan ID tugas yang sama. Sebagai gantinya, Anda membuat tugas baru dengan konfigurasi yang sama. Saat Anda mengirimkan tugas baru di konsol Google Cloud atau alat command line bq, ID tugas baru akan ditetapkan. Saat mengirimkan tugas menggunakan API atau library klien, Anda harus membuat ID tugas baru.

Izin yang diperlukan

Untuk menjalankan tugas, Anda memerlukan izin IAM bigquery.jobs.create.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk menjalankan tugas:

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

Untuk informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Peran dan izin bawaan.

Mengulangi tugas

Untuk mengulangi tugas, lakukan langkah berikut:

Konsol

Untuk mengulangi tugas kueri, lakukan hal berikut:

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Luaskan panel Histori tugas.

  3. Untuk menampilkan daftar semua tugas, klik Histori pribadi. Untuk menampilkan daftar semua tugas dalam project, klik Project history.

  4. Klik tugas kueri untuk membuka detail tugas.

  5. Untuk mengulangi kueri, klik Open as new query.

  6. Klik Run.

Untuk mengulangi tugas pemuatan, lakukan langkah berikut:

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Luaskan panel Histori tugas.

  3. Untuk menampilkan daftar semua tugas, klik Histori pribadi. Untuk menampilkan daftar semua tugas dalam project, klik Project history.

  4. Klik tugas pemuatan untuk membuka detail tugas.

  5. Untuk mengulangi tugas, klik Repeat load job.

bq

Jalankan perintah Anda lagi dan BigQuery akan secara otomatis menghasilkan tugas dengan ID tugas baru.

API

Tidak ada metode panggilan tunggal untuk mengulangi tugas; jika Anda ingin mengulangi tugas tertentu:

  1. Panggil jobs.get untuk mengambil resource untuk tugas yang akan diulangi.

  2. Hapus kolom id, status, dan statistics. Ubah kolom jobId ke nilai baru yang dihasilkan oleh kode klien Anda. Ubah kolom lain jika diperlukan.

  3. Panggil jobs.insert dengan resource yang diubah dan ID tugas baru untuk memulai tugas baru.