Mengubah data memungkinkan Anda memperbarui, menghapus, dan menggabungkan data dalam tabel Apache Iceberg di katalog runtime Lakehouse.
Jika DML BigQuery diaktifkan di tabel, Anda dapat menjalankan pernyataan DML standar dari BigQuery bersama mesin open source seperti Spark dan Trino, sehingga mencapai interoperabilitas penulisan penuh pada satu salinan data yang disimpan di Cloud Storage.
Sebelum memulai
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
-
Mengaktifkan BigLake API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran. - Siapkan katalog runtime Lakehouse 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 pada project dan bucket penyimpanan Anda:
-
Menulis data tabel dalam mode penyediaan kredensial:
BigLake Editor (
roles/biglake.editor) - project -
Menulis data tabel dalam mode penjualan non-kredensial:
- Editor BigLake (
roles/biglake.editor) - project - Storage Object User (
roles/storage.objectUser) - bucket Cloud Storage
- Editor BigLake (
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 dalam katalog runtime Lakehouse, ada baiknya memahami berbagai jenis tabel dan kemampuan keikutsertaannya. Untuk mempelajari lebih lanjut cara menggunakan tabel Apache Iceberg secara khusus, lihat Ringkasan tabel Apache Iceberg.
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:
- Dari BigQuery: DML BigQuery dan pengelolaan tabel otomatis diaktifkan secara default.
- Dari mesin open source: Untuk memilih ikut serta, Anda harus mengonfigurasi properti tabel secara eksplisit. Lihat Mengonfigurasi opsi tabel untuk mengetahui informasi selengkapnya.
Memperbarui data
Memperbarui 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: Google Cloud Project ID Anda.CATALOG_ID: ID katalog runtime Lakehouse Anda.NAMESPACE: nama namespace Iceberg Anda.TABLE_NAME: nama tabel Iceberg Anda.
Menghapus data
Menghapus 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
- Pelajari cara menjalankan kueri pada tabel.
- Pelajari cara mengonfigurasi opsi tabel.