Daten mit DML-Anweisungen ändern

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 neben Open-Source-Engines wie Spark und Trino auch Standard-DML-Anweisungen aus BigQuery ausführen. So erreichen Sie eine vollständige Schreibinteroperabilität für eine einzelne Datenkopie, die in Cloud Storage gespeichert ist.

Hinweis

  1. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  2. Aktivieren Sie die BigLake API.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    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 Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.

    API aktivieren

  3. 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 Speicher-Bucket zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ändern von Daten in einer Tabelle benötigen:

  • Tabellendaten im Modus für die Anmeldedatenbereitstellung: BigLake-Editor (roles/biglake.editor) – das Projekt
  • Tabellendaten im Modus ohne Anmeldedatenbereitstellung schreiben:
    • BigLake-Editor (roles/biglake.editor) – das Projekt
    • Storage Object User (roles/storage.objectUser) – der Cloud Storage-Bucket

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 -support

Wenn Sie Tabellen im Lakehouse-Laufzeitkatalog verwenden, ist es hilfreich, die verschiedenen Tabellentypen und ihre optionalen Funktionen zu verstehen . 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-Tabellen (GA) und V3-Tabellen (Vorschau) 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 (Vorschau)

Sie können bestimmte Tabelleneigenschaften konfigurieren, um BigQuery-verwaltete Funktionen wie BigQuery DML und die automatische Tabellenverwaltung zu verwenden. Diese Funktionen werden je nachdem, wo die Tabelle erstellt wird, auf unterschiedliche Weise aktiviert:

  • Aus BigQuery:BigQuery DML und die automatische Tabellenverwaltung sind standardmäßig aktiviert.
  • Aus Open-Source-Engines:Wenn Sie diese Funktionen verwenden möchten, müssen Sie die Tabelleneigenschaften explizit konfigurieren. Weitere Informationen finden Sie unter Tabellenoptionen konfigurieren.

Daten aktualisieren

So 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

So 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

So führen Sie Daten aus einer Quelltabelle in Ihre Ziel-Iceberg-Tabelle 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);

Nächste Schritte