Durch das Ändern von Daten können Sie Datensätze in Ihren Apache Iceberg-Tabellen im Lakehouse-Laufzeitkatalog aktualisieren, löschen und zusammenführen.
Wenn BigQuery-DML für Ihre Tabelle aktiviert ist, können Sie Standard-DML-Anweisungen von BigQuery zusammen mit Open-Source-Engines wie Spark und Trino ausführen. So erreichen Sie eine vollständige Schreibinteroperabilität für eine einzelne Kopie der in Cloud Storage gespeicherten Daten.
Hinweis
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud -Projekt aktiviert ist.
-
Aktivieren Sie die BigLake API, falls sie noch nicht aktiviert ist.
Erforderliche Rollen zum Aktivieren von APIs
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen - Richten Sie den Lakehouse-Laufzeitkatalog mit dem Apache Iceberg REST-Katalogendpunkt ein.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt und Ihren Storage-Bucket zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ändern von Daten in einer Tabelle benötigen:
-
Tabellendaten im Modus für die Bereitstellung von Anmeldedaten schreiben: BigLake-Bearbeiter (
roles/biglake.editor) – das Projekt -
Tabellendaten im Modus ohne Bereitstellung von Anmeldedaten schreiben:
- BigLake Editor (
roles/biglake.editor) – das Projekt - Storage Object User (
roles/storage.objectUser) – der Cloud Storage-Bucket
- BigLake Editor (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Tabellenfunktionen und -unterstützung
Wenn Sie Tabellen im Lakehouse-Laufzeitkatalog verwenden, ist es hilfreich, die verschiedenen Tabellentypen und ihre Opt-in-Funktionen zu kennen. Weitere Informationen zur Verwendung von Apache Iceberg-Tabellen finden Sie unter Übersicht über Apache Iceberg-Tabellen.
Unterstützte Iceberg-Tabellen
Es werden nur Apache Iceberg V2- (GA) und V3-Tabellen (Vorabversion) unterstützt. Iceberg V1-Tabellen werden nicht unterstützt. Informationen zum Upgrade vorhandener V1-Tabellen finden Sie unter Iceberg-V1-Tabellen auf V2 aktualisieren.
Tabellenoptionen verwenden (Vorabversion)
Sie können die verwalteten BigQuery-Funktionen wie die BigQuery-Datenbearbeitungssprache (DML) und die automatische Tabellenverwaltung aktivieren, indem Sie bestimmte Tabellenattribute konfigurieren. Diese Funktionen werden je nach Erstellungsort der Tabelle auf unterschiedliche Weise aktiviert:
- Aus BigQuery: BigQuery-DML und die automatische Tabellenverwaltung sind standardmäßig aktiviert.
- Aus Open-Source-Engines: Wenn Sie die Funktion aktivieren möchten, müssen Sie die Tabellenattribute explizit konfigurieren. Weitere Informationen finden Sie unter Tabellenoptionen konfigurieren.
Daten aktualisieren
Aktualisieren Sie vorhandene Zeilen in der Tabelle:
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;
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Google Cloud-Projekt-ID.CATALOG_ID: Ihre Lakehouse-Laufzeitkatalog-ID.NAMESPACE: der Name Ihres Iceberg-Namespace.TABLE_NAME: der Name Ihrer Iceberg-Tabelle.
Daten löschen
Löschen Sie bestimmte Zeilen aus der Tabelle:
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;
Daten zusammenführen
Führen Sie Daten aus einer Quelltabelle in Ihrer Iceberg-Zieltabelle zusammen:
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);