Kelola lowongan

Dokumen ini menjelaskan cara mengelola tugas di BigQuery, termasuk cara melihat detail tugas, membuat daftar tugas, membatalkan tugas, mengulangi tugas, dan menghapus metadata tugas.

Tentang tugas BigQuery

Setiap kali Anda memuat, mengekspor, membuat kueri, atau menyalin data, BigQuery akan otomatis membuat, menjadwalkan, dan menjalankan tugas yang melacak progres tugas.

Karena tugas berpotensi memerlukan waktu lama untuk diselesaikan, tugas berjalan secara asinkron dan dapat di-polling untuk statusnya. Tindakan yang lebih singkat, seperti mencantumkan resource atau mendapatkan metadata, tidak dikelola sebagai 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 akan melaporkan status ini sebagai SUCCESS. Jika tugas selesai dengan error, BigQuery akan melaporkan status ini sebagai FAILURE.

Kuota

Untuk mengetahui informasi tentang kuota tugas, lihat dokumentasi untuk jenis tugas di halaman Kuota dan batas:

Harga

Setiap tugas dikaitkan dengan proyek tertentu yang Anda tentukan. Akun penagihan yang terkait dengan project akan ditagih untuk setiap penggunaan yang terjadi karena adanya tugas. Jika Anda berbagi akses ke project, setiap tugas yang dijalankan dalam project juga akan ditagihkan ke akun penagihan.

Misalnya, saat menjalankan tugas kueri, biaya akan dibebankan ke project yang menjalankan tugas tersebut. Jadi, saat Anda melihat ID tugas dari tugas kueri dengan format <project_id>:<region>.<job_id>, project_id adalah ID project yang ditagih untuk kueri tersebut.

Untuk mengetahui informasi selengkapnya, lihat Harga.

Sebelum memulai

Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menjalankan dan mengelola tugas, minta administrator untuk memberi Anda peran IAM berikut pada project:

  • Menjalankan atau mengulangi tugas, membuat daftar tugas, melihat detail tugas, dan membatalkan tugas: BigQuery Job User (roles/bigquery.jobUser) atau BigQuery User (roles/bigquery.user)
  • Mencantumkan semua tugas dalam project: Admin BigQuery (roles/bigquery.admin) atau Admin Resource BigQuery (roles/bigquery.resourceAdmin)
  • Melihat detail semua tugas dalam project, membatalkan tugas apa pun dalam project, dan menghapus metadata tugas: BigQuery Admin (roles/bigquery.admin)

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk menjalankan dan mengelola tugas. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menjalankan dan mengelola tugas:

  • Jalankan atau ulangi tugas, dan cantumkan tugas Anda: bigquery.jobs.create
  • Melihat detail tugas Anda: bigquery.jobs.get
  • Membatalkan tugas Anda: bigquery.jobs.update
  • Melihat detail semua tugas dalam project:
    • bigquery.jobs.get
    • bigquery.jobs.listAll
  • Mencantumkan semua tugas dalam project: bigquery.jobs.listAll
  • Membatalkan tugas apa pun dalam project:
    • bigquery.jobs.update
    • bigquery.jobs.listAll
  • Menghapus metadata tugas:
    • bigquery.jobs.delete
    • bigquery.jobs.listAll

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

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

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.

Untuk melihat detail tugas, ikuti 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.

Membuat daftar tugas

BigQuery menyimpan histori tugas enam bulan untuk semua tugas dalam suatu project, untuk semua lokasi. Histori tugas menyertakan tugas yang memiliki status RUNNING dan tugas yang memiliki status DONE (ditunjukkan dengan melaporkan status sebagai SUCCESS atau FAILURE).

Untuk menampilkan daftar tugas dalam sebuah project, ikuti langkah-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. Biasanya diperlukan waktu kurang dari satu menit untuk menyelesaikan pembatalan tugas.

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.

Untuk membatalkan tugas, ikuti langkah-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.

Untuk menghapus metadata tugas, ikuti langkah-langkah berikut:

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.

Untuk mengulangi tugas, ikuti langkah-langkah berikut:

Konsol

Untuk mengulangi tugas kueri, ikuti langkah-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 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.

Langkah berikutnya