Memperbarui label

Halaman ini menjelaskan cara memperbarui label pada resource BigQuery.

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.

Memperbarui label set data

Label set data dapat diperbarui dengan:

  • Menggunakan Konsol Google Cloud
  • Menggunakan pernyataan DDL SQL
  • Menggunakan perintah bq update alat command line bq
  • Memanggil metode API datasets.patch
  • Menggunakan library klien

Izin yang diperlukan

Untuk memperbarui label set data, Anda memerlukan izin IAM bigquery.datasets.update.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk memperbarui label set data:

  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat memperbarui label set data yang dibuat.

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

Memperbarui label set data

Untuk memperbarui label pada set data, pilih salah satu opsi berikut:

Konsol

  1. Di Konsol Google Cloud, pilih set data.

  2. Di halaman detail set data, klik ikon pensil di sebelah kanan Label.

    Pensil label

  3. Pada dialog Edit label:

    • Untuk menerapkan label tambahan, klik Tambahkan label. Setiap kunci hanya dapat digunakan sekali per set data, tetapi Anda dapat menggunakan kunci yang sama dalam set data berbeda dalam project yang sama.
    • Ubah kunci atau nilai yang ada untuk mengupdate label.
    • Klik Update untuk menyimpan perubahan.

SQL

Gunakan pernyataan DDL ALTER SCHEMA SET OPTIONS untuk menetapkan label pada set data yang ada. Menetapkan label akan menimpa label yang ada di set data. Contoh berikut menetapkan satu label pada set data mydataset:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER SCHEMA mydataset
    SET OPTIONS (labels = [('sensitivity', 'high')]);
    

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk menambahkan label lain atau memperbarui label set data, berikan perintah bq update dengan flag set_label. Ulangi flag tersebut untuk menambahkan atau memperbarui beberapa label.

Jika set data berada dalam project selain project default Anda, tambahkan project ID ke set data dalam format berikut: [PROJECT_ID]:[DATASET].

bq update \
--set_label key:value \
project_id:dataset

Dengan keterangan:

  • key:value berkaitan dengan pasangan nilai kunci untuk label yang ingin Anda tambahkan atau perbarui. Jika Anda menentukan kunci yang sama dengan label yang ada, nilai untuk label yang ada akan diperbarui. Kunci harus unik.
  • project_id adalah project ID Anda.
  • dataset adalah set data yang Anda perbarui.

Contoh:

Untuk memperbarui label department pada mydataset, masukkan perintah bq update dan tentukan department sebagai kunci label. Misalnya, untuk memperbarui label department:shipping menjadi department:logistics, masukkan perintah berikut. mydataset ada di myotherproject, bukan di project default Anda.

    bq update \
    --set_label department:logistics \
    myotherproject:mydataset

Outputnya akan terlihat seperti berikut.

Dataset 'myotherproject:mydataset' successfully updated.

API

Untuk menambahkan label lain atau memperbarui label untuk set data yang ada, panggil metode datasets.patch dan tambahkan ke atau perbarui properti labels untuk resource set data.

Karena metode datasets.update menggantikan seluruh resource set data, sebaiknya gunakan metode datasets.patch.

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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

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

// addDatasetLabel demonstrates adding label metadata to an existing dataset.
func addDatasetLabel(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}

	update := bigquery.DatasetMetadataToUpdate{}
	update.SetLabel("color", "green")
	if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

Contoh ini menggunakan Library Klien HTTP Google untuk Java untuk mengirim permintaan ke BigQuery API.

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 mengetahui 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.Dataset;
import java.util.HashMap;
import java.util.Map;

// Sample to updates a label on dataset
public class LabelDataset {

  public static void runLabelDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    labelDataset(datasetName);
  }

  public static void labelDataset(String datasetName) {
    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();

      // This example dataset starts with existing label { color: 'green' }
      Dataset dataset = bigquery.getDataset(datasetName);
      // Add label to dataset
      Map<String, String> labels = new HashMap<>();
      labels.put("color", "green");

      dataset.toBuilder().setLabels(labels).build().update();
      System.out.println("Label added successfully");
    } catch (BigQueryException e) {
      System.out.println("Label was not added. \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 mengetahui 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 labelDataset() {
  // Updates a label on a dataset.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";

  // Retrieve current dataset metadata.
  const dataset = bigquery.dataset(datasetId);
  const [metadata] = await dataset.getMetadata();

  // Add label to dataset metadata
  metadata.labels = {color: 'green'};
  const [apiResponse] = await dataset.setMetadata(metadata);

  console.log(`${datasetId} labels:`);
  console.log(apiResponse.labels);
}

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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.


from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = "your-project.your_dataset"

dataset = client.get_dataset(dataset_id)  # Make an API request.
dataset.labels = {"color": "green"}
dataset = client.update_dataset(dataset, ["labels"])  # Make an API request.

print("Labels added to {}".format(dataset_id))

Memperbarui label tabel dan tampilan

Label dapat diperbarui setelah tabel atau tampilan dibuat dengan:

  • Menggunakan Konsol Google Cloud
  • Menggunakan perintah bq update alat command line bq
  • Memanggil metode API tables.patch
    • Karena tampilan diperlakukan seperti resource tabel, Anda harus menggunakan metode tables.patch untuk mengubah tampilan dan tabel.
  • Menggunakan library klien

Izin yang diperlukan

Untuk memperbarui label tabel atau tampilan, Anda memerlukan izin IAM bigquery.tables.update.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang diperlukan untuk memperbarui label tabel atau tampilan:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat memperbarui label tabel dan tampilan di set data yang Anda buat.

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

Memperbarui label tabel atau tampilan

Untuk memperbarui label tabel atau tampilan:

Konsol

  1. Di Konsol Google Cloud, pilih tabel atau tampilan.

  2. Klik tab Detail, lalu klik ikon pensil di sebelah kanan Label.

  3. Pada dialog Edit label:

    • Untuk menerapkan label tambahan, klik Tambahkan label. Setiap kunci hanya dapat digunakan sekali per tabel atau tampilan, tetapi Anda dapat menggunakan kunci yang sama pada tabel atau tampilan di set data yang berbeda.
    • Ubah kunci atau nilai yang ada untuk mengupdate label.
    • Klik Update untuk menyimpan perubahan.

SQL

Gunakan Pernyataan DDL ALTER TABLE SET OPTIONS untuk menetapkan label di tabel yang sudah ada, atau Pernyataan DDL ALTER VIEW SET OPTIONS untuk menetapkan label pada tampilan yang sudah ada. Menetapkan label akan menimpa label yang ada di tabel atau tampilan. Contoh berikut menetapkan dua label pada tabel mytable:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER TABLE mydataset.mytable
    SET OPTIONS (
      labels = [('department', 'shipping'), ('cost_center', 'logistics')]);
    

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk menambahkan label lain atau memperbarui label tabel atau tampilan, berikan perintah bq update dengan flag set_label. Ulangi flag tersebut untuk menambahkan atau memperbarui beberapa label.

Jika tabel atau tampilan berada dalam project selain project default Anda, tambahkan project ID ke set data dalam format berikut: project_id:dataset.

bq update \
--set_label key:value \
project_id:dataset.table_or_view

Dengan keterangan:

  • key:value berkaitan dengan pasangan nilai kunci untuk label yang ingin Anda tambahkan atau perbarui. Jika Anda menentukan kunci yang sama dengan label yang ada, nilai untuk label yang ada akan diperbarui. Kunci harus unik.
  • project_id adalah project ID Anda.
  • dataset adalah set data yang berisi tabel atau tampilan yang Anda perbarui.
  • table_or_view adalah nama tabel atau tampilan yang Anda perbarui.

Contoh:

Untuk memperbarui label department untuk mytable, masukkan perintah bq update dan tentukan department sebagai kunci label. Misalnya, untuk memperbarui label department:shipping menjadi department:logistics untuk mytable, masukkan perintah berikut. mytable ada di myotherproject, bukan di project default Anda.

    bq update \
    --set_label department:logistics \
    myotherproject:mydataset.mytable

Outputnya akan terlihat seperti berikut:

Table 'myotherproject:mydataset.mytable' successfully updated.

API

Untuk menambahkan label atau memperbarui label untuk tabel atau tampilan yang sudah ada, panggil metode tables.patch dan tambahkan ke atau perbarui properti labels untuk resource tabel.

Karena tampilan diperlakukan seperti resource tabel, Anda harus menggunakan metode tables.patch untuk mengubah tampilan dan tabel.

Karena metode tables.update menggantikan seluruh resource set data, sebaiknya gunakan metode tables.patch.

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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

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

// addTableLabel demonstrates adding Label metadata to a BigQuery table.
func addTableLabel(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tbl := client.Dataset(datasetID).Table(tableID)
	meta, err := tbl.Metadata(ctx)
	if err != nil {
		return err
	}

	update := bigquery.TableMetadataToUpdate{}
	update.SetLabel("color", "green")
	if _, err := tbl.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

Contoh ini menggunakan Library Klien HTTP Google untuk Java untuk mengirim permintaan ke BigQuery API.

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 mengetahui 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.Table;
import com.google.cloud.bigquery.TableId;
import java.util.HashMap;
import java.util.Map;

// Sample to adds a label to an existing table
public class LabelTable {

  public static void runLabelTable() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    labelTable(datasetName, tableName);
  }

  public static void labelTable(String datasetName, String tableName) {
    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();

      // This example table starts with existing label { color: 'green' }
      Table table = bigquery.getTable(TableId.of(datasetName, tableName));
      // Add label to table
      Map<String, String> labels = new HashMap<>();
      labels.put("color", "green");

      table.toBuilder().setLabels(labels).build().update();
      System.out.println("Label added successfully");
    } catch (BigQueryException e) {
      System.out.println("Label was not added. \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 mengetahui 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 labelTable() {
  // Adds a label to an existing table.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset';
  // const tableId = 'my_table';

  const dataset = bigquery.dataset(datasetId);
  const [table] = await dataset.table(tableId).get();

  // Retrieve current table metadata
  const [metadata] = await table.getMetadata();

  // Add label to table metadata
  metadata.labels = {color: 'green'};
  const [apiResponse] = await table.setMetadata(metadata);

  console.log(`${tableId} labels:`);
  console.log(apiResponse.labels);
}

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 mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

# from google.cloud import bigquery
# client = bigquery.Client()
# project = client.project
# dataset_ref = bigquery.DatasetReference(project, dataset_id)
# table_ref = dataset_ref.table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.labels == {}
labels = {"color": "green"}
table.labels = labels

table = client.update_table(table, ["labels"])  # API request

assert table.labels == labels

Memperbarui label tugas

Saat ini, memperbarui label tugas tidak didukung. Untuk memperbarui label pada tugas, kirim ulang tugas tersebut dengan label baru yang telah ditentukan.

Mengonversi label menjadi tag

Label yang memiliki kunci dengan nilai kosong digunakan sebagai tag. Anda dapat membuat label baru tanpa nilai, atau Anda dapat mengubah label yang ada menjadi tag di set data, tabel, atau tampilan. Anda tidak dapat mengonversi label tuga menjadi tag.

Tag dapat berguna dalam situasi saat Anda memberi label pada resource, tetapi Anda tidak memerlukan format key:value. Misalnya, jika memiliki tabel yang berisi data pengujian yang digunakan oleh beberapa grup (dukungan, pengembangan, dan sebagainya), Anda dapat menambahkan tag test_data ke tabel tersebut untuk mengidentifikasinya.

Izin yang diperlukan

Untuk mengonversi label menjadi tag, Anda memerlukan izin IAM berikut:

  • bigquery.datasets.update (memungkinkan Anda mengonversi label set data)
  • bigquery.tables.update (memungkinkan Anda mengonversi label tabel atau tampilan)

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk mengonversi label set data:

  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Setiap peran IAM yang telah ditetapkan berikut mencakup izin yang diperlukan untuk mengonversi label tabel atau tampilan:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat memperbarui label set data yang Anda buat serta tabel dan tampilan di set data tersebut.

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

Mengonversi label menjadi tag

Untuk mengonversi label menjadi tag:

Konsol

  1. Di Konsol Google Cloud, pilih set data, tabel, atau tampilan.

  2. Untuk set data, halaman detail set data akan terbuka otomatis. Untuk tabel dan tampilan, klik Detail untuk membuka halaman detail.

    Detail tabel

  3. Pada halaman detail, klik ikon pensil di sebelah kanan Label.

    Pensil label

  4. Pada dialog Edit label:

    • Hapus nilai untuk label yang ada.
    • Klik Perbarui.

bq

Untuk mengonversi label menjadi tag, gunakan perintah bq update dengan flag set_label. Tentukan kunci, diikuti dengan titik dua, tetapi biarkan nilainya tidak ditentukan. Tindakan ini akan memperbarui label yang ada menjadi sebuah tag.

bq update \
--set_label key: \
resource_id

Dengan keterangan:

  • key: adalah kunci label yang ingin Anda perbarui menjadi tag.
  • resource_id adalah nama set data, tabel, atau tampilan yang valid. Jika resource berada dalam project selain project default Anda, tambahkan project ID dalam format berikut: project_id:dataset.

Contoh:

Masukkan perintah berikut untuk mengubah label test_data:development yang ada di mydataset menjadi tag. mydataset ada di myotherproject, bukan di project default Anda.

bq update --set_label test_data: myotherproject:mydataset

Outputnya akan terlihat seperti berikut:

Dataset 'myotherproject:mydataset' successfully updated.

API

Untuk mengubah label yang ada menjadi tag, panggil metode datasets.patch atau metode tables.patch dan ganti nilai label dengan string kosong ("") di resource set data atau resource tabel.

Karena tampilan diperlakukan seperti resource tabel, Anda harus menggunakan metode tables.patch untuk mengubah tampilan dan tabel. Selain itu, karena metode tables.update menggantikan seluruh resource set data, sebaiknya gunakan metode tables.patch.

Langkah selanjutnya