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:
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:
-
So erstellen Sie Iceberg-Tabellen:
-
BigQuery-Dateninhaber (
roles/bigquery.dataOwner
) für Ihr Projekt -
BigQuery-Verbindungsadministrator (
roles/bigquery.connectionAdmin
) für Ihr Projekt
-
BigQuery-Dateninhaber (
-
So fragen Sie Iceberg-Tabellen ab:
-
BigQuery-Datenbetrachter (
roles/bigquery.dataViewer
) für Ihr Projekt -
BigQuery-Nutzer (
roles/bigquery.user
) für Ihr Projekt
-
BigQuery-Datenbetrachter (
-
Damit das Verbindungsdienstkonto Daten in Cloud Storage lesen und schreiben kann:
- Storage-Objekt-Administrator (
roles/storage.objectAdmin
) für den Bucket -
Leser alter Storage-Buckets (
roles/storage.legacyBucketReader
) für den Bucket
- Storage-Objekt-Administrator (
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 load
Leitfaden 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
vonload_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
vonload_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:
Exportieren Sie die Metadaten mit der SQL-Anweisung
EXPORT TABLE METADATA
in das Iceberg-Format.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:
- Leeres Schema
- Schema mit den Datentypen
INTERVAL
,JSON
,RANGE
oderGEOGRAPHY
- Schema mit Feldsortierungen
- Schema mit Standardwertausdrücken
EXPORT METADATA
unterstützt keine Tabellen, dieBIGNUMERIC
- oderNUMERIC
-Datentypen mit einer Genauigkeit von mehr als 38 Stellen enthalten.- Für Iceberg-Tabellen werden die folgenden Schemaevolutionsfälle nicht unterstützt:
NUMERIC
bisFLOAT
TypumwandlungenINT
bisFLOAT
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
tableWHERE
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.- Für Iceberg-Tabellen werden keine verknüpften Datasets unterstützt.