Mengupdate metadata model

Ringkasan

Halaman ini menunjukkan cara mengupdate metadata model BigQuery ML. Anda dapat mengupdate metadata model dengan:

  • Menggunakan konsol Google Cloud.
  • Menggunakan perintah bq update di alat command line bq.
  • Memanggil metode API models.patch secara langsung atau menggunakan library klien.

Metadata model berikut dapat diupdate:

  • Deskripsi: Dapat diupdate menggunakan konsol Google Cloud, alat command line bq, API, atau library klien.
  • Label: Dapat diupdate menggunakan konsol Google Cloud, alat command line bq, API, atau library klien.
  • Waktu habis masa berlaku: Dapat diupdate menggunakan alat bq, API, atau library klien.

Izin yang diperlukan

Untuk mengupdate metadata model, Anda harus diberi peran WRITER pada set data, atau Anda harus diberi peran Identity and Access Management (IAM) level project yang mencakup izin bigquery.models.updateMetadata. Jika Anda diberi izin bigquery.models.updateMetadata di level project, Anda dapat mengupdate metadata untuk model di set data mana pun dalam project. Peran IAM level project yang telah ditetapkan berikut mencakup izin bigquery.models.updateMetadata:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery ML, lihat Kontrol akses.

Mengupdate deskripsi model

Deskripsi model adalah string teks yang digunakan untuk mengidentifikasi model dengan mudah.

Untuk mengupdate deskripsi model:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel navigasi, di bagian Resource, luaskan nama project dan nama set data Anda.

  3. Klik nama model Anda. Model ditunjukkan oleh ikon model: ikon model.

  4. Klik tab Detail.

  5. Untuk mengupdate deskripsi model, klik ikon edit (pensil) di sebelah kanan Deskripsi.

  6. Dalam dialog Edit deskripsi, masukkan teks Anda, lalu klik Update.

bq

Untuk mengupdate deskripsi model, berikan perintah bq update dengan flag --model atau -m dan flag --description.

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

bq update --model --description "[STRING]" [PROJECT_ID]:[DATASET].[MODEL]

Dengan keterangan:

  • [STRING] adalah string teks yang mendeskripsikan model Anda dalam tanda petik.
  • [PROJECT_ID] adalah project ID Anda.
  • [DATASET] adalah nama set data.
  • [MODEL] adalah nama model.

Output perintah terlihat seperti berikut:

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Anda dapat mengonfirmasi perubahan dengan menjalankan perintah bq show. Untuk mengetahui informasi selengkapnya, baca Dapatkan metadata model.

Contoh:

Masukkan perintah berikut untuk mengupdate deskripsi mymodel di mydataset dalam project default Anda.

bq update --model --description "My updated description" \
mydataset.mymodel

Masukkan perintah berikut untuk mengupdate deskripsi mymodel di mydataset di myotherproject.

bq update --model --description "My updated description" \
myotherproject:mydataset.mymodel

API

Untuk mengupdate deskripsi model menggunakan API, panggil metode models.patch dan sediakan projectId, datasetId, dan modelId. Untuk mengubah deskripsi, tambahkan atau update properti "description" untuk resource model.

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

// updateModelDescription demonstrates fetching BigQuery ML model metadata and updating the
// Description metadata.
func updateModelDescription(projectID, datasetID, modelID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// modelID := "mymodel"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %w", err)
	}
	defer client.Close()

	model := client.Dataset(datasetID).Model(modelID)
	oldMeta, err := model.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("couldn't retrieve model metadata: %w", err)
	}
	update := bigquery.ModelMetadataToUpdate{
		Description: "This model was modified from a Go program",
	}
	if _, err = model.Update(ctx, update, oldMeta.ETag); err != nil {
		return fmt.Errorf("couldn't update model: %w", err)
	}
	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 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.Model;
import com.google.cloud.bigquery.ModelId;

// Sample to update description on a model
public class UpdateModelDescription {

  public static void runUpdateModelDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_NAME";
    String newDescription = "A really great model.";
    updateModelDescription(datasetName, modelName, newDescription);
  }

  public static void updateModelDescription(
      String datasetName, String modelName, String newDescription) {
    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();

      Model model = bigquery.getModel(ModelId.of(datasetName, modelName));
      bigquery.update(model.toBuilder().setDescription(newDescription).build());
      System.out.println("Model description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Model description was not updated \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 updateModel() {
  // Updates a model's metadata.

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

  const metadata = {
    description: 'A really great model.',
  };

  const dataset = bigquery.dataset(datasetId);
  const [apiResponse] = await dataset.model(modelId).setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${modelId} description: ${newDescription}`);
}

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 model_id to the ID of the model to fetch.
# model_id = 'your-project.your_dataset.your_model'

model = client.get_model(model_id)  # Make an API request.
model.description = "This model was modified from a Python program."
model = client.update_model(model, ["description"])  # Make an API request.

full_model_id = "{}.{}.{}".format(model.project, model.dataset_id, model.model_id)
print(
    "Updated model '{}' with description '{}'.".format(
        full_model_id, model.description
    )
)

Mengupdate label model

Label merupakan key-value pair yang dapat Anda kaitkan dengan resource. Saat Anda membuat resource BigQuery ML, label bersifat opsional. Untuk mengetahui informasi selengkapnya, lihat Menambahkan dan menggunakan label.

Untuk mengupdate label model:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel navigasi, di bagian Resource, luaskan nama project dan nama set data Anda.

  3. Klik nama model Anda. Model ditunjukkan dengan ikon model: ikon model.

  4. Klik tab Detail.

  5. Untuk mengupdate label model, klik ikon edit (pensil) di sebelah kanan Label.

  6. 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.

bq

Untuk mengupdate label model, berikan perintah bq update dengan flag --model atau -m dan flag --set_label. Ulangi flag --set_label untuk menambahkan atau mengupdate beberapa label.

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

bq update --model --set_label [KEY:VALUE] \
[PROJECT_ID]:[DATASET].[MODEL]

Dengan keterangan:

  • [KEY:VALUE] berkaitan dengan key:value pair untuk label yang ingin Anda tambahkan atau update. Jika Anda menentukan kunci yang sama dengan label yang ada, nilai untuk label yang ada akan diupdate. Kunci harus unik.
  • [PROJECT_ID] adalah project ID Anda.
  • [DATASET] adalah nama set data.
  • [MODEL] adalah nama model.

Output perintah terlihat seperti berikut.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Anda dapat mengonfirmasi perubahan dengan menjalankan perintah bq show. Untuk mengetahui informasi selengkapnya, baca Dapatkan metadata model.

Contoh:

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

bq update --model --set_label department:logistics \
myotherproject:mydataset.mymodel

API

Untuk mengupdate label model dengan menggunakan API, panggil metode models.patch dan berikan projectId, datasetId, dan modelId. Untuk mengubah label, tambahkan atau perbarui properti "label" untuk resource model.

Mengupdate waktu habis masa berlaku model

Waktu habis masa berlaku model adalah nilai stempel waktu yang menentukan kapan model dihapus. Anda dapat menyetel waktu habis masa berlaku model saat model dibuat menggunakan CLI, API, atau library klien. Anda juga dapat menetapkan atau mengupdate waktu habis masa berlaku pada model setelah model tersebut dibuat. Waktu habis masa berlaku model sering disebut sebagai "time to live" atau TTL.

Jika masa berlaku model tidak disetel, model tersebut tidak akan pernah berakhir masa berlakunya, dan Anda harus menghapus model tersebut secara manual.

Nilai untuk waktu habis masa berlaku dinyatakan secara berbeda, bergantung pada tempat nilai ditetapkan. Gunakan metode yang memberikan level perincian yang sesuai:

  • Di alat command line, akhir masa berlaku dinyatakan dalam detik dari waktu UTC saat ini. Saat Anda menentukan akhir masa berlaku di command line, nilai bilangan bulat dalam detik akan ditambahkan ke stempel waktu UTC saat ini.
  • Di API, akhir masa berlaku dinyatakan dalam milidetik sejak epoch. Jika Anda menentukan nilai akhir masa berlaku yang kurang dari stempel waktu saat ini, model akan segera berakhir.

Untuk mengupdate waktu habis masa berlaku untuk model:

Konsol

Menyetel atau mengupdate waktu habis masa berlaku pada model saat ini tidak didukung oleh konsol Google Cloud.

bq

Untuk mengupdate waktu habis masa berlaku model, berikan perintah bq update dengan flag --model atau -m dan flag --expiration.

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

bq update --model --expiration [INTEGER] \
[PROJECT_ID]:[DATASET].[MODEL]

Dengan keterangan:

  • [INTEGER] adalah masa aktif (dalam detik) model. Nilai minimumnya adalah 3.600 detik (satu jam). Waktu habis masa berlaku mengevaluasi waktu UTC saat ini ditambah nilai bilangan bulat.
  • [PROJECT_ID] adalah project ID Anda.
  • [DATASET] adalah nama set data.
  • [MODEL] adalah nama model.

Output perintah terlihat seperti berikut.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Anda dapat mengonfirmasi perubahan dengan menjalankan perintah bq show. Untuk mengetahui informasi selengkapnya, baca Dapatkan metadata model.

Contoh:

Masukkan perintah berikut untuk mengupdate waktu habis masa berlaku mymodel di mydataset menjadi 5 hari (432000 detik). mydataset ada dalam project default Anda.

bq update --model --expiration 432000 mydataset.mymodel

Masukkan perintah berikut untuk mengupdate waktu habis masa berlaku mymodel di mydataset menjadi 5 hari (432000 detik). mydataset ada di myotherproject, bukan project default Anda.

bq update --model --expiration 432000 myotherproject:mydataset.mymodel

API

Untuk mengupdate akhir masa berlaku model dengan menggunakan API, panggil metode models.patch dan berikan projectId, datasetId, dan modelId. Untuk mengubah akhir masa berlaku, tambahkan atau update properti "expirationTime" untuk resource model. "expirationTime" dinyatakan dalam milidetik sejak epoch.

Langkah selanjutnya