Mengubah data dengan pernyataan DML

Dengan mengubah data, Anda dapat memperbarui, menghapus, menggabungkan, dan memangkas data dalam tabel Apache Iceberg di katalog runtime Lakehouse.

Jika BigQuery DML diaktifkan di tabel Anda, Anda dapat menjalankan pernyataan DML standar dari BigQuery bersama dengan mesin open source seperti Spark dan Trino, sehingga mencapai interoperabilitas tulis penuh pada satu salinan data yang disimpan di Cloud Storage.

Sebelum memulai

  1. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  2. Aktifkan BigLake API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Mengaktifkan API

  3. Siapkan katalog runtime Lakehouse katalog dengan endpoint katalog REST Apache Iceberg.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengubah data dalam tabel, minta administrator untuk memberi Anda peran IAM berikut di project dan bucket penyimpanan Anda:

  • Menulis data tabel dalam mode penjualan kredensial: BigLake Editor (roles/biglake.editor) - project
  • Menulis data tabel dalam mode penjualan non-kredensial:
    • BigLake Editor (roles/biglake.editor) - project
    • Storage Object User (roles/storage.objectUser) - bucket Cloud Storage

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

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Kemampuan dan dukungan tabel

Saat menggunakan tabel di katalog runtime Lakehouse, sebaiknya pahami berbagai jenis tabel dan kemampuan keikutsertaannya. Untuk mempelajari lebih lanjut cara menggunakan tabel Apache Iceberg secara khusus, lihat Ringkasan tabel Apache Iceberg tables.

Tabel Iceberg yang didukung

Hanya tabel Apache Iceberg V2 (GA) dan V3 (Pratinjau) yang didukung. Tabel Iceberg V1 tidak didukung. Untuk mengupgrade tabel V1 yang ada, lihat Mengupgrade tabel Iceberg V1 ke V2.

Menggunakan opsi tabel (Pratinjau)

Anda dapat memilih untuk menggunakan kemampuan terkelola BigQuery, seperti Bahasa Pengolahan Data (DML) BigQuery dan pengelolaan tabel otomatis, dengan mengonfigurasi properti tabel tertentu. Fitur ini diaktifkan dengan cara yang berbeda, bergantung pada tempat tabel dibuat:

Memperbarui data

Perbarui baris yang ada dalam tabel:

Spark

ALTER TABLE TABLE_NAME SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);

UPDATE TABLE_NAME SET data = 'updated row' WHERE id = 1;

Trino

ALTER TABLE TABLE_NAME SET PROPERTIES "gcp.biglake.bigquery-dml.enabled" = 'true';

UPDATE TABLE_NAME SET data = 'updated row' WHERE id = 1;

BigQuery

UPDATE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET data = "updated row"
WHERE id = 1;

Ganti kode berikut:

  • PROJECT_ID: project ID Anda. Google Cloud
  • CATALOG_ID: ID katalog runtime Lakehouse Anda.
  • NAMESPACE: nama namespace Iceberg Anda.
  • TABLE_NAME: nama tabel Iceberg Anda.

Menghapus data

Hapus baris tertentu dari tabel:

Spark

ALTER TABLE TABLE_NAME SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);

DELETE FROM TABLE_NAME WHERE id = 1;

Trino

ALTER TABLE TABLE_NAME SET PROPERTIES "gcp.biglake.bigquery-dml.enabled" = 'true';

DELETE FROM TABLE_NAME WHERE id = 1;

BigQuery

DELETE FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
WHERE id = 1;

Menggabungkan data

Gabungkan data dari tabel sumber ke tabel Iceberg target Anda:

Spark

ALTER TABLE TARGET_TABLE SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);

MERGE INTO TARGET_TABLE t
USING SOURCE_TABLE s
ON t.id = s.id
WHEN MATCHED THEN
  UPDATE SET t.data = s.data
WHEN NOT MATCHED THEN
  INSERT (id, data) VALUES (s.id, s.data);

Trino

ALTER TABLE TARGET_TABLE SET PROPERTIES "gcp.biglake.bigquery-dml.enabled" = 'true';

MERGE INTO TARGET_TABLE t
USING SOURCE_TABLE s
ON t.id = s.id
WHEN MATCHED THEN
  UPDATE SET t.data = s.data
WHEN NOT MATCHED THEN
  INSERT (id, data) VALUES (s.id, s.data);

BigQuery

MERGE `PROJECT_ID.CATALOG_ID.NAMESPACE.TARGET_TABLE` t
USING `PROJECT_ID.CATALOG_ID.NAMESPACE.SOURCE_TABLE` s
ON t.id = s.id
WHEN MATCHED THEN
  UPDATE SET data = s.data
WHEN NOT MATCHED THEN
  INSERT (id, data) VALUES (id, data);

Langkah berikutnya