BigQuery-Tabellen für Apache Iceberg

Wenn Sie Unterstützung während der Vorschau benötigen, senden Sie eine E-Mail an bigquery-tables-for-apache-iceberg-help@google.com.

BigQuery-Tabellen für Apache Iceberg (im Folgenden Iceberg-Tabellen) bilden die Grundlage für die Erstellung von Lakehouses im offenen Format in Google Cloud. Iceberg-Tabellen bieten dieselben vollständig verwalteten Funktionen wie BigQuery-Tabellen, speichern Daten jedoch in kundeneigenen Speicher-Buckets mit Parquet, um mit Iceberg-offenen Tabellenformaten interoperabel zu sein.

BigQuery-Tabellen für Apache Iceberg unterscheiden sich von externen BigLake-Tabellen für Apache Iceberg, da nur BigQuery-Tabellen für Apache Iceberg direkt in BigQuery geändert werden können. Externe BigLake-Tabellen für Apache Iceberg sind schreibgeschützte Tabellen, die von einer anderen Abfrage-Engine wie Apache Spark generiert werden und nur mit BigQuery abgefragt werden können.

Iceberg-Tabellen unterstützen die folgenden Funktionen:

  • Tabellenmutationen mit der GoogleSQL-Datenmanipulationssprache (DML)
  • Einheitliches Batch-Streaming und Streaming mit hoher Durchsatzleistung mit der Storage Write API über BigLake-Connectors wie Spark, Dataflow und andere Engines.
  • Schemaentwicklung, mit der Sie Spalten nach Bedarf hinzufügen, löschen und umbenennen können. Mit dieser Funktion können Sie auch den Datentyp einer vorhandenen Spalte und den Spaltenmodus ändern. Weitere Informationen finden Sie unter Typkonvertierungsregeln.
  • Automatische Speicheroptimierung, einschließlich adaptiver Dateigröße, automatischem Clustering, Garbage Collection und Metadatenoptimierung.
  • Sicherheit auf Spaltenebene und Datenmaskierung

Architektur

Mit Iceberg-Tabellen können Sie die Ressourcenverwaltung von BigQuery auch für Tabellen in Ihren eigenen Cloud-Buckets nutzen. Mit Iceberg-Tabellen können Sie BigQuery für diese Tabellen verwenden, ohne die Daten aus den von Ihnen verwalteten Bucket zu verschieben.

Das folgende Diagramm zeigt die Architektur verwalteter Tabellen im Überblick: Architekturdiagramm für BigQuery for Iceberg-Tabellen

Diese Tabellenverwaltung hat folgende Auswirkungen auf Ihren Bucket:

  • BigQuery erstellt neue Datendateien im Bucket als Reaktion auf Schreibanfragen und Speicheroptimierungen im Hintergrund, z. B. DML-Anweisungen und Streaming.
  • Wenn Sie eine verwaltete Tabelle in BigQuery löschen, werden die zugehörigen Datendateien nicht gelöscht. Sie müssen die Löschung bestätigen, indem Sie die Dateien und alle exportierten Tabellenmetadaten manuell aus dem Bucket löschen.
  • Für Iceberg-Tabellen fallen keine BigQuery-Speicherkosten an. Weitere Informationen finden Sie in den Hilfeartikeln zur Abrechnung.

Das Erstellen einer Iceberg-Tabelle ähnelt dem Erstellen von BigQuery-Tabellen. Da Daten in offenen Formaten in Cloud Storage gespeichert werden, gibt es mehr Möglichkeiten für Folgendes:

  • Cloud-Ressourcenverbindung mit WITH CONNECTION angeben, um die Anmeldedaten für die Verbindung von BigLake mit Cloud Storage zu konfigurieren.
  • Dateiformat des Datenspeichers mit file_format angeben. PARQUET wird in der Vorabversion unterstützt.
  • Das Format der Open-Source-Metadatentabelle mit table_format angeben. ICEBERG wird in der Vorabversion unterstützt.

Best Practices

Wenn Sie Dateien direkt außerhalb von BigQuery ändern oder dem Bucket hinzufügen, kann dies zu Datenverlusten oder nicht wiederherstellbaren Fehlern führen. In der folgenden Tabelle werden mögliche Szenarien beschrieben:

Vorgang Auswirkungen vermeiden
Fügen Sie dem Bucket außerhalb von BigQuery neue Dateien hinzu. Datenverlust: Neue Dateien oder Objekte, die außerhalb von BigQuery hinzugefügt werden, werden von BigQuery nicht erfasst. Nicht erfasste Dateien werden durch Hintergrundprozesse zur automatischen Speicherbereinigung gelöscht. Daten ausschließlich über BigQuery hinzufügen. So kann BigQuery die Dateien im Blick behalten und verhindern, dass sie vom Garbage Collector gelöscht werden.
Um versehentliche Ergänzungen und Datenverluste zu vermeiden, empfehlen wir außerdem, die Schreibberechtigungen für externe Tools für Buckets mit Iceberg-Tabellen einzuschränken.
Erstellen Sie eine neue Iceberg-Tabelle in einem nicht leeren Präfix. Datenverlust:Vorhandene Daten werden von BigQuery nicht erfasst. Daher werden diese Dateien als nicht erfasst betrachtet und durch Hintergrund-Garbage-Collection-Prozesse gelöscht. Erstellen Sie neue Iceberg-Tabellen nur in leeren Präfixen.
Datendateien für Iceberg-Tabellen ändern oder ersetzen. Datenverlust: Bei externer Änderung oder Ersetzung besteht die Tabelle keinen Konsistenzcheck und ist nicht mehr lesbar. Abfragen gegen die Tabelle schlagen fehl.
Es gibt keine Möglichkeit, die Daten selbst wiederherzustellen. Wenden Sie sich an den Support, um Hilfe bei der Datenwiederherstellung zu erhalten.
Daten ausschließlich über BigQuery ändern. So kann BigQuery die Dateien im Blick behalten und verhindern, dass sie vom Garbage Collector gelöscht werden.
Um versehentliche Ergänzungen und Datenverluste zu vermeiden, empfehlen wir außerdem, die Schreibberechtigungen für externe Tools für Buckets mit Iceberg-Tabellen einzuschränken.
Sie erstellen zwei BigQuery-Tabellen für Apache Iceberg mit denselben oder sich überschneidenden URIs. Datenverlust:In BigQuery werden keine identischen URI-Instanzen von Iceberg-Tabellen überbrückt. Bei der Hintergrundbereinigung für jede Tabelle werden die Dateien der gegenüberliegenden Tabelle als nicht erfasst betrachtet und gelöscht, was zu Datenverlusten führt. Verwenden Sie für jede Iceberg-Tabelle eindeutige URIs.

Standortberücksichtigung

Sie können die Leistung verbessern, indem Sie Buckets für eine einzelne Region oder eine Dual-Region von Cloud Storage anstelle von multiregionalen Buckets verwenden.

Abrechnung

Für die folgenden Funktionen gelten die bestehenden Preise:

  • Cloud Storage-Preise für alle in Cloud Storage-Buckets gespeicherten Daten, die von Cloud Storage durchgeführte Datenverarbeitung und die Netzwerknutzung für die Menge der Daten, die aus Ihrem Bucket gelesen werden.
  • BigQuery-Computing-Preise für Abfragen, DML und Hintergrundspeicheroptimierung (einschließlich Clustering, Zusammenführung und Garbage Collection).
    • Die Gebühren für Reservierungen (Slots) richten sich nach den bestehenden Slotpreisen.
    • Die Abrechnung mit den On-Demand-SKUs (Stock Keeping Units) erfolgt gemäß den bestehenden On-Demand-Preisen. Weitere Informationen finden Sie unter BigLake-Kosten.
  • Die Rechenzeit für Batch-Ladevorgänge und Extrakte wird entweder mit On-Demand-SKUs oder Reservierungen (Slots) abgerechnet.
  • Storage Read API-Preise für das Lesen aus Spark über die Read API.
  • Storage Write API-Preise für Streaming

Workflows für Iceberg-Tabellen

In den folgenden Abschnitten wird beschrieben, wie Sie verwaltete Tabellen erstellen, laden, verwalten und abfragen.

Hinweise

Bevor Sie Iceberg-Tabellen erstellen und verwenden können, müssen Sie eine Cloud-Ressourcenverbindung zu einem Speicher-Bucket einrichten. Für Ihre Verbindung sind Schreibberechtigungen für den Speicher-Bucket erforderlich, wie im Abschnitt Erforderliche Rollen angegeben.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Tabellen in Ihrem Projekt durch BigQuery benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Verwalten von Tabellen in Ihrem Projekt durch BigQuery erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, damit BigQuery Tabellen in Ihrem Projekt verwalten kann:

  • bigquery.connections.delegate für Ihr Projekt
  • bigquery.jobs.create für Ihr Projekt
  • bigquery.readsessions.create für Ihr Projekt
  • bigquery.tables.create für Ihr Projekt
  • bigquery.tables.get für Ihr Projekt
  • bigquery.tables.getData für Ihr Projekt
  • storage.buckets.get für Ihr Projekt
  • storage.objects.create für Ihr Projekt
  • storage.objects.delete für Ihr Projekt
  • storage.objects.get für Ihr Projekt
  • storage.objects.list für Ihr Projekt

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Iceberg-Tabellen erstellen

Wählen Sie eine der folgenden Methoden aus, um eine Iceberg-Tabelle zu erstellen:

SQL

CREATE TABLE [PROJECT_NAME.]DATASET_NAME.TABLE_NAME (
COLUMN DATA_TYPE[, ...]
)
CLUSTER BY CLUSTER_COLUMN_LIST
WITH CONNECTION CONNECTION_NAME
OPTIONS (
file_format = 'PARQUET',
table_format = 'ICEBERG',
storage_uri = 'STORAGE_URI');

Ersetzen Sie Folgendes:

  • PROJECT_NAME: das Projekt, das das Dataset enthält. Wenn nicht definiert, wird das Standardprojekt verwendet.
  • DATASET_NAME: ein vorhandenes Dataset.
  • TABLE_NAME: Der Name der Tabelle, die Sie erstellen.
  • DATA_TYPE: Der Datentyp der Informationen in der Spalte.
  • CLUSTER_COLUMN_LIST: eine durch Kommas getrennte Liste mit bis zu vier Spalten. Sie müssen Spalten der obersten Ebene sein, die nicht wiederholt werden.
  • CONNECTION_NAME: der Name der Verbindung. Beispiel: myproject.us.myconnection
  • STORAGE_URI: ein vollständig qualifizierter Cloud Storage-URI. Beispiel: gs://mybucket/table

bq

bq --project_id=PROJECT_NAME mk \
    --file_format=PARQUET \
    --table_format=ICEBERG \
    --connection_id=CONNECTION_NAME \
    --storage_uri=STORAGE_URI \
    --schema=COLUMN_NAME:DATA_TYPE[, ...] \
    --clustering_fields=CLUSTER_COLUMN_LIST \
    MANAGED_TABLE_NAME

Ersetzen Sie Folgendes:

  • PROJECT_NAME: das Projekt, das das Dataset enthält. Wenn nicht definiert, wird das Standardprojekt verwendet.
  • CONNECTION_NAME: der Name der Verbindung. Beispiel: myproject.us.myconnection
  • STORAGE_URI: ein vollständig qualifizierter Cloud Storage-URI. Beispiel: gs://mybucket/table
  • COLUMN_NAME: Der Name der Spalte.
  • DATA_TYPE: Der Datentyp der in der Spalte enthaltenen Informationen.
  • CLUSTER_COLUMN_LIST: eine durch Kommas getrennte Liste mit bis zu vier Spalten. Sie müssen Spalten der obersten Ebene sein, die nicht wiederholt werden.
  • MANAGED_TABLE_NAME: Der Name der Tabelle, die Sie erstellen.

API

Rufen Sie die Methode tables.insert mit einer definierten Tabellenressource auf, z. B. so:

{
"tableReference": {
  "tableId": "TABLE_NAME"
},
"biglakeConfiguration": {
  "connectionId": "CONNECTION_NAME",
  "fileFormat": "PARQUET",
  "tableFormat": "ICEBERG",
  "storageUri": "STORAGE_URI"
},
"schema": {
  "fields": [
    {
      "name": "COLUMN_NAME",
      "type": "DATA_TYPE"
    }
    [, ...]
  ]
}
}

Ersetzen Sie Folgendes:

  • TABLE_NAME: Der Name der Tabelle, die Sie erstellen.
  • CONNECTION_NAME: der Name der Verbindung. Beispiel: myproject.us.myconnection
  • STORAGE_URI: ein vollständig qualifizierter Cloud Storage-URI. Platzhalter werden ebenfalls unterstützt. Beispiel: gs://mybucket/table.
  • COLUMN_NAME: Der Name der Spalte.
  • DATA_TYPE: Der Datentyp der in der Spalte enthaltenen Informationen.

Daten in Iceberg-Tabelle importieren

In den folgenden Abschnitten wird beschrieben, wie Sie Daten aus verschiedenen Tabellenformaten in Iceberg-Tabellen importieren.

Schnelles Laden aus Parquet-Dateien

Mit der Option copy_files_only können Sie Daten schneller laden, indem Sie Ihre vorhandenen Parquet-Dateien kopieren, anstatt den Inhalt zu lesen und als neue Dateien neu zu schreiben. Beim schnellen Laden wird im Vergleich zum normalen Dateiladen weniger Rechenleistung benötigt. Parquet-Dateien müssen mit der Apache Iceberg-Spezifikation kompatibel sein und vollständige Spaltenstatistiken enthalten. Beim schnellen Laden werden keine ungültigen Werte (z. B. Zeitstempel außerhalb des zulässigen Bereichs) in Dateien erkannt, da die Dateien nicht gelesen und neu verarbeitet werden. Weitere Informationen zum Laden von Parquet-Dateien finden Sie unter Parquet-Daten in eine neue Tabelle laden.

Wenn Sie flache Parquet-Dateien schnell in eine vorhandene Iceberg-Tabelle laden möchten, verwenden Sie den Befehl bq load:

bq load \
    --copy_files_only \
    --source_format=PARQUET \
    DATASET_NAME.TABLE_NAME \
    PATH_TO_SOURCE

Ersetzen Sie Folgendes:

  • DATASET_NAME: das Dataset, das Ihre Eisbergtabelle enthält.
  • TABLE_NAME: Der Name der Iceberg-Tabelle, in die Sie Daten laden.
  • PATH_TO_SOURCE: ein vollständig qualifizierter Cloud Storage-URI oder eine durch Kommas getrennte Liste von URIs. Platzhalter werden ebenfalls unterstützt. Beispiel: gs://mybucket/mydata*.parquet.

Standard-Ladevorgang für Daten aus Flatfiles

Bei Iceberg-Tabellen werden BigQuery-Ladevorgänge verwendet, um externe Dateien in Iceberg-Tabellen zu laden. Wenn Sie bereits eine Iceberg-Tabelle haben, folgen Sie dem bq loadLeitfaden für die Befehlszeile oder dem LOAD SQL-Leitfaden, um externe Daten zu laden. Nach dem Laden der Daten werden neue Parquet-Dateien in den Ordner STORAGE_URI/data geschrieben.

Wenn die vorherigen Anweisungen ohne vorhandene Iceberg-Tabelle verwendet werden, wird stattdessen eine BigQuery-Tabelle erstellt.

Im Folgenden finden Sie toolspezifische Beispiele für Batch-Ladevorgänge in verwaltete Tabellen:

SQL

LOAD DATA INTO MANAGED_TABLE_NAME
FROM FILES (
uris=['STORAGE_URI'],
format='FILE_FORMAT');

Ersetzen Sie Folgendes:

  • MANAGED_TABLE_NAME: der Name einer vorhandenen Iceberg-Tabelle.
  • STORAGE_URI: ein vollständig qualifizierter Cloud Storage-URI oder eine durch Kommas getrennte Liste von URIs. Platzhalter werden ebenfalls unterstützt. Beispiel: gs://mybucket/table.
  • FILE_FORMAT: das Format der Quelltabelle. Informationen zu den unterstützten Formaten finden Sie in der Zeile format von load_option_list.

bq

bq load \
  --source_format=FILE_FORMAT \
  MANAGED_TABLE \
  STORAGE_URI

Ersetzen Sie Folgendes:

  • FILE_FORMAT: das Format der Quelltabelle. Informationen zu den unterstützten Formaten finden Sie in der Zeile format von load_option_list.
  • MANAGED_TABLE_NAME: der Name einer vorhandenen Iceberg-Tabelle.
  • STORAGE_URI: ein vollständig qualifizierter Cloud Storage-URI oder eine durch Kommas getrennte Liste von URIs. Platzhalter werden ebenfalls unterstützt. Beispiel: gs://mybucket/table.

Standard-Ladevorgang aus Hive-partitionierten Dateien

Sie können Hive-partitionierte Dateien mithilfe von standardmäßigen BigQuery-Ladejobs in Iceberg-Tabellen laden. Weitere Informationen finden Sie unter Extern partitionierte Daten laden.

Streamingdaten aus Pub/Sub laden

Sie können Streamingdaten mithilfe eines Pub/Sub-BigQuery-Abos in Iceberg-Tabellen laden.

Daten aus Iceberg-Tabellen exportieren

In den folgenden Abschnitten wird beschrieben, wie Sie Daten aus Iceberg-Tabellen in verschiedene Tabellenformate exportieren.

Daten in flache Formate exportieren

Wenn Sie eine Iceberg-Tabelle in ein flaches Format exportieren möchten, verwenden Sie die EXPORT DATA-Anweisung und wählen Sie ein Zielformat aus. Weitere Informationen finden Sie unter Daten exportieren.

Metadaten-Snapshots für Iceberg-Tabellen erstellen

So erstellen Sie einen Metadaten-Snapshot für eine Iceberg-Tabelle:

  1. Exportieren Sie die Metadaten mit der SQL-Anweisung EXPORT TABLE METADATA in das Iceberg-Format.

  2. Optional: Aktualisierung des Iceberg-Metadaten-Snapshots planen. Wenn Sie einen Iceberg-Metadaten-Snapshot basierend auf einem festgelegten Zeitintervall aktualisieren möchten, verwenden Sie eine geplante Abfrage.

Im folgenden Beispiel wird mithilfe der DDL-Anweisung EXPORT TABLE METADATA FROM mydataset.test eine geplante Abfrage namens My Scheduled Snapshot Refresh Query erstellt. Das Ziel-Dataset ist mydataset. Die DDL-Anweisung wird alle 24 Stunden ausgeführt.

        bq query \
            --use_legacy_sql=false \
            --destination_dataset=mydataset
            --display_name='My Scheduled Snapshot Refresh Query' \
            --schedule='every 24 hours' \
            'EXPORT TABLE METADATA FROM mydataset.test'

Metadaten-Snapshot einer Iceberg-Tabelle aufrufen

Nachdem Sie den Metadaten-Snapshot der Iceberg-Tabelle aktualisiert haben, finden Sie ihn im Cloud Storage-URI, in dem die Iceberg-Tabelle ursprünglich erstellt wurde. Der Ordner /data enthält die Datenfragmente der Parquet-Datei und der Ordner /metadata den Snapshot der Iceberg-Tabellenmetadaten.

  SELECT
    table_name,
    REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri
  FROM
    `mydataset`.INFORMATION_SCHEMA.TABLES;

mydataset und table_name sind Platzhalter für den tatsächlichen Datensatz und die tatsächliche Tabelle.

Iceberg-Tabellen mit Apache Spark lesen

Tabellendaten in Apache Spark mit HadoopCatalog einrichten und lesen

Im folgenden Beispiel wird die Umgebung für die Verwendung von Spark SQL mit Apache Iceberg eingerichtet und dann eine Abfrage ausgeführt, um Daten aus einer bestimmten Iceberg-Tabelle abzurufen.

   spark-sql 
--packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER
--conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog
--conf spark.sql.catalog.CATALOG_NAME.type=hadoop
--conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \

# Queries the table spark-sql> SELECT * FROM CATALOG_NAME.FOLDER_NAME;

Ersetzen Sie Folgendes:

  • ICEBERG_VERSION_NUMBER: die aktuelle Version der Apache Spark Iceberg-Laufzeit. Laden Sie die neueste Version unter Spark-Releases herunter.
  • CATALOG_NAME: Der Katalog, der auf Ihre Iceberg-Tabelle verweist.
  • BUCKET_PATH: der Pfad zum Bucket, der die Tabellendateien enthält. Beispiel: gs://mybucket/.
  • FOLDER_NAME: der Ordner mit den Tabellendateien. Beispiel: myfolder.

Iceberg-Tabellen ändern

Wenn Sie eine Iceberg-Tabelle ändern möchten, folgen Sie der Anleitung unter Tabellenschemas ändern.

Preise

Die Preise für Iceberg-Tabellen setzen sich aus drei separaten Komponenten zusammen:

Speicher

In Iceberg-Tabellen werden alle Daten in Cloud Storage gespeichert. Ihnen werden alle gespeicherten Daten in Rechnung gestellt, einschließlich Verlaufsdaten von Tabellen. Gegebenenfalls fallen auch Gebühren für die Cloud Storage-Datenverarbeitung und Übertragungskosten an. Es fallen keine BigQuery-spezifischen Speichergebühren an. Weitere Informationen finden Sie unter Cloud Storage – Preise.

Speicheroptimierung

Für Iceberg-Tabellen sind Speicheroptimierungsvorgänge wie das Zusammenführen von Dateien und das erneute Clustern erforderlich. Für diese Optimierungsvorgänge werden Pay-as-you-go-Slots der Enterprise-Version verwendet. Vorhandene BACKGROUND-Reservierungen werden nicht genutzt.

Datenexportvorgänge, die während des Streamings über die BigQuery Storage Write API stattfinden, sind in den Preisen der Storage Write API enthalten und werden nicht als Hintergrundwartung in Rechnung gestellt. Weitere Informationen finden Sie unter Datenaufnahme – Preise.

Die Nutzung der Speicheroptimierung ist in der Ansicht INFORMATION_SCHEMA.JOBS zu sehen.

Abfragen und Jobs

Ähnlich wie bei BigQuery-Tabellen werden Ihnen Abfragen und gelesene Byte (pro TiB) in Rechnung gestellt, wenn Sie die On-Demand-Preise von BigQuery verwenden, oder der Slot-Verbrauch (pro Slot-Stunde), wenn Sie die Preise für BigQuery-Kapazitäts-Computing verwenden.

Die BigQuery-Preise gelten auch für die BigQuery Storage Read API und die BigQuery Storage Write API.

Für Lade- und Exportvorgänge (z. B. EXPORT METADATA) werden Pay-as-you-go-Slots der Enterprise-Version verwendet. Das unterscheidet sich von BigQuery-Tabellen, für die diese Vorgänge nicht in Rechnung gestellt werden. Wenn PIPELINE-Reservierungen mit Enterprise- oder Enterprise Plus-Slots verfügbar sind, werden für Lade- und Exportvorgänge bevorzugt diese Reservierungsslots verwendet.

Beschränkungen

Für Iceberg-Tabellen gelten die folgenden Einschränkungen:

  • Für Iceberg-Tabellen werden keine Umbenennungsvorgänge oder ALTER TABLE RENAME TO-Anweisungen unterstützt.
  • Für Iceberg-Tabellen werden keine Tabellenkopien oder CREATE TABLE COPY-Anweisungen unterstützt.
  • Für Iceberg-Tabellen werden keine Tabellenklone oder CREATE TABLE CLONE-Anweisungen unterstützt.
  • Iceberg-Tabellen unterstützen keine Tabellen-Snapshots oder CREATE SNAPSHOT TABLE-Anweisungen.
  • Iceberg-Tabellen unterstützen das folgende Tabellenschema nicht:
  • EXPORT METADATA unterstützt keine Tabellen, die BIGNUMERIC- oder NUMERIC-Datentypen mit einer Genauigkeit von mehr als 38 Stellen enthalten.
  • Für Iceberg-Tabellen werden die folgenden Schemaevolutionsfälle nicht unterstützt:
    • NUMERIC bis FLOAT Typumwandlungen
    • INT bis FLOAT Typumwandlungen
    • Vorhandenen RECORD-Spalten mithilfe von SQL-DDL-Anweisungen neue verschachtelte Felder hinzufügen
  • Für Iceberg-Tabellen wird eine Speichergröße von 0 Byte angezeigt, wenn sie über die Konsole oder APIs abgefragt werden.
  • Für Iceberg-Tabellen werden keine materialisierten Ansichten unterstützt.
  • Für Iceberg-Tabellen werden keine Transaktionen mit mehreren Anweisungen unterstützt.
  • Für Iceberg-Tabellen werden keine CDC-Aktualisierungen (Change Data Capture) unterstützt.
  • Wenn Sie Daten mit der BigQuery Storage Write API in Iceberg-Tabellen streamen, müssen Sie zuerst den Abfragecache deaktivieren.
  • Für Iceberg-Tabellen wird keine verwaltete Notfallwiederherstellung unterstützt.
  • Iceberg-Tabellen unterstützen keine Partitionierung. Eine Alternative ist das Clustering.
  • Für Iceberg-Tabellen wird keine Sicherheit auf Zeilenebene unterstützt.
  • Für Iceberg-Tabellen wird nicht die Funktion „Zurückliegende Zeiträume“ unterstützt.
  • Für Iceberg-Tabellen werden keine Fail-Safe-Fenster unterstützt.
  • Für Iceberg-Tabellen werden keine Extrahierungsjobs unterstützt.
  • Die Ansicht INFORMATION_SCHEMA.TABLE_STORAGE enthält keine Iceberg-Tabellen.
  • Iceberg-Tabellen werden nicht als Ziele für Abfrageergebnisse unterstützt.
  • CREATE OR REPLACE unterstützt nicht das Ersetzen von Standardtabellen durch Iceberg-Tabellen oder Iceberg-Tabellen durch Standardtabellen.
  • Beim Batch-Laden und in LOAD DATA-Anweisungen können Daten nur an vorhandene Iceberg-Tabellen angehängt werden.
  • Schemaaktualisierungen werden beim Batch-Laden und in LOAD DATA-Anweisungen nicht unterstützt.
  • TRUNCATE TABLE unterstützt keine Iceberg-Tabellen. Dafür gibt allerdings es zwei Alternativen:
    • CREATE OR REPLACE TABLE, wobei dieselben Optionen zum Erstellen von Tabellen verwendet werden.
    • DELETE FROM table WHERE true
  • Die Tabellenwertfunktion APPENDS unterstützt keine Iceberg-Tabellen.
  • Iceberg-Exporte in Apache Spark enthalten keine kürzlich gestreamten Daten im schreiboptimierten Speicher.
  • Das schnelle Laden unterstützt keine Dateien mit flexiblen Spaltennamen.
  • Iceberg-Tabellen werden nicht für den datensatzbasierten paginaten Zugriff mit tabledata.list unterstützt.