BigLake-Tabellen für Apache Iceberg in BigQuery

BigLake-Tabellen für Apache Iceberg in BigQuery (im Folgenden BigLake Iceberg-Tabellen in BigQuery) bilden die Grundlage für die Erstellung von Lakehouses im offenen Format auf Google Cloud. BigLake-Iceberg-Tabellen in BigQuery bieten dieselbe vollständig verwaltete Umgebung wie Standard-BigQuery-Tabellen, speichern Daten jedoch in kundeneigenen Speicher-Buckets. BigLake-Iceberg-Tabellen in BigQuery unterstützen das offene Iceberg-Tabellenformat für eine bessere Interoperabilität mit Open-Source- und Drittanbieter-Compute-Engines für eine einzelne Kopie von Daten.

BigLake-Tabellen für Apache Iceberg in BigQuery unterscheiden sich von schreibgeschützten externen Apache Iceberg-Tabellen. BigLake-Tabellen für Apache Iceberg in BigQuery sind vollständig verwaltete Tabellen, die direkt in BigQuery geändert werden können. Schreibgeschützte externe Apache Iceberg-Tabellen werden vom Kunden verwaltet und bieten schreibgeschützten Zugriff über BigQuery.

BigLake Iceberg-Tabellen in BigQuery unterstützen die folgenden Funktionen:

  • Tabellenänderungen mit der Datenbearbeitungssprache (Data Manipulation Language, DML) von GoogleSQL.
  • Einheitliches Batch-Streaming und Streaming mit hoher Durchsatzleistung mit der Storage Write API über BigLake-Connectors wie Spark, Dataflow und andere Engines.
  • Iceberg V2-Snapshot-Export und automatisches Aktualisieren bei jeder Tabellenänderung für den direkten Abfragezugriff mit Open-Source- und Drittanbieter-Abfrage-Engines.
  • Schemaentwicklung: Sie können Spalten hinzufügen, entfernen und umbenennen, um sie an Ihre Anforderungen anzupassen. Mit dieser Funktion können Sie auch den Datentyp einer vorhandenen Spalte und den Spaltenmodus ändern. Weitere Informationen finden Sie unter Regeln für die Typkonvertierung.
  • Automatische Speicheroptimierung, einschließlich adaptiver Dateigrößenanpassung, automatischem Clustering, automatischer Speicherbereinigung und Metadatenoptimierung.
  • Zeitreisen für den Zugriff auf Verlaufsdaten in BigQuery.
  • Sicherheit auf Spaltenebene und Datenmaskierung.

Architektur

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

Das folgende Diagramm zeigt die Architektur verwalteter Tabellen im Überblick:

Architekturdiagramm für BigLake Iceberg-Tabellen in BigQuery.

Die Tabellenverwaltung hat folgende Auswirkungen auf Ihren Bucket:

  • BigQuery erstellt neue Datendateien im Bucket als Reaktion auf Schreibanfragen und Hintergrundoptimierungen des Speichers, z. B. DML-Anweisungen und Streaming.
  • Wenn Sie eine verwaltete Tabelle in BigQuery löschen, werden die zugehörigen Datendateien in Cloud Storage nach Ablauf des Zeitreisezeitraums von BigQuery gelöscht.

Das Erstellen einer BigLake Iceberg-Tabelle in BigQuery ähnelt dem Erstellen von BigQuery-Tabellen. Da Daten in offenen Formaten in Cloud Storage gespeichert werden, müssen Sie Folgendes tun:

  • Geben Sie die Cloud-Ressourcenverbindung mit WITH CONNECTION an, um die Anmeldedaten für die Verbindung von BigLake mit Cloud Storage zu konfigurieren.
  • Geben Sie das Dateiformat des Datenspeichers als PARQUET mit der Anweisung file_format = PARQUET an.
  • Geben Sie das Format der Open-Source-Metadatentabelle als ICEBERG mit der table_format = ICEBERG-Anweisung an.

Best Practices

Wenn Sie Dateien direkt im Bucket außerhalb von BigQuery ändern oder hinzufügen, kann dies zu Datenverlust oder nicht behebaren 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 verfolgte Dateien werden durch Hintergrundprozesse zur automatischen Speicherbereinigung gelöscht. Daten ausschließlich über BigQuery hinzufügen So kann BigQuery die Dateien verfolgen und verhindern, dass sie 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 BigLake Iceberg-Tabellen in BigQuery einzuschränken.
Erstellen Sie eine neue BigLake Iceberg-Tabelle in BigQuery in einem nicht leeren Präfix. Datenverlust:Vorhandene Daten werden nicht von BigQuery erfasst. Diese Dateien gelten daher als nicht erfasst und werden durch Hintergrundprozesse zur automatischen Speicherbereinigung gelöscht. Erstellen Sie neue BigLake Iceberg-Tabellen in BigQuery nur in leeren Präfixen.
BigLake-Iceberg-Tabelle in BigQuery-Datendateien ändern oder ersetzen Datenverlust:Bei externer Änderung oder Ersetzung besteht die Tabelle den Konsistenzcheck nicht und wird unlesbar. Abfragen für die Tabelle schlagen fehl.
Es gibt keine Selfservice-Möglichkeit, um die Situation zu beheben. Wenden Sie sich an den Support, um Unterstützung bei der Datenwiederherstellung zu erhalten.
Daten ausschließlich über BigQuery ändern So kann BigQuery die Dateien verfolgen und verhindern, dass sie 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 BigLake Iceberg-Tabellen in BigQuery einzuschränken.
Erstellen Sie zwei BigLake Iceberg-Tabellen in BigQuery mit denselben oder sich überschneidenden URIs. Datenverlust:BigQuery überbrückt keine identischen URI-Instanzen von BigLake-Iceberg-Tabellen in BigQuery. Bei der automatischen Speicherbereinigung im Hintergrund für jede Tabelle werden die Dateien der gegenüberliegenden Tabelle als nicht verfolgt betrachtet und gelöscht, was zu Datenverlust führt. Verwenden Sie eindeutige URIs für jede BigLake Iceberg-Tabelle in BigQuery.

Best Practices für die Konfiguration von Cloud Storage-Bucket

Die Konfiguration Ihres Cloud Storage-Bucket und seiner Verbindung mit BigLake hat direkten Einfluss auf die Leistung, Kosten, Datenintegrität, Sicherheit und Governance Ihrer BigLake Iceberg-Tabellen in BigQuery. Im Folgenden finden Sie Best Practices für diese Konfiguration:

  • Wählen Sie einen Namen aus, der deutlich darauf hinweist, dass der Bucket nur für BigLake Iceberg-Tabellen in BigQuery vorgesehen ist.

  • Wählen Sie Cloud Storage-Buckets mit einzelner Region aus, die sich in derselben Region wie Ihr BigQuery-Dataset befinden. Diese Koordination verbessert die Leistung und senkt die Kosten, da keine Gebühren für die Datenübertragung anfallen.

  • Standardmäßig werden Daten in Cloud Storage in der Speicherklasse „Standard“ gespeichert, die eine ausreichende Leistung bietet. Zur Optimierung der Datenspeicherkosten können Sie Autoclass aktivieren, um Umstellungen der Speicherklasse automatisch zu verwalten. Autoclass beginnt mit der Speicherklasse „Standard“ und verschiebt Objekte, auf die nicht zugegriffen wird, in immer niedrigere Klassen, um die Speicherkosten zu senken. Wenn das Objekt wieder gelesen wird, wird es zurück in die Standard-Klasse verschoben.

  • Aktivieren Sie den einheitlichen Zugriff auf Bucket-Ebene und die Verhinderung des öffentlichen Zugriffs.

  • Prüfen Sie, ob die erforderlichen Rollen den richtigen Nutzern und Dienstkonten zugewiesen sind.

  • Um ein versehentliches Löschen oder Beschädigen von Iceberg-Daten in Ihrem Cloud Storage-Bucket zu verhindern, sollten Sie die Schreib- und Löschberechtigungen für die meisten Nutzer in Ihrer Organisation einschränken. Dazu können Sie eine Bucket-Berechtigungsrichtlinie mit Bedingungen festlegen, die PUT- und DELETE-Anfragen für alle Nutzer außer den von Ihnen angegebenen ablehnen.

  • Wenden Sie von Google verwaltete oder vom Kunden verwaltete Verschlüsselungsschlüssel an, um sensible Daten zusätzlich zu schützen.

  • Aktivieren Sie das Audit-Logging für betriebliche Transparenz, Fehlerbehebung und Überwachung des Datenzugriffs.

  • Behalten Sie die Standard-Richtlinie für vorläufiges Löschen (7‑tägige Aufbewahrung) bei, um sich vor versehentlichem Löschen zu schützen. Wenn Sie jedoch feststellen, dass Iceberg-Daten gelöscht wurden, wenden Sie sich an den Support, anstatt Objekte manuell wiederherzustellen. Objekte, die außerhalb von BigQuery hinzugefügt oder geändert werden, werden nicht von BigQuery-Metadaten erfasst.

  • Die adaptive Dateigrößenanpassung, das automatische Clustering und die automatische Speicherbereinigung sind automatisch aktiviert und tragen zur Optimierung der Dateileistung und -kosten bei.

  • Vermeiden Sie die folgenden Cloud Storage-Funktionen, da sie für BigLake-Iceberg-Tabellen in BigQuery nicht unterstützt werden:

Sie können diese Best Practices umsetzen, indem Sie Ihren Bucket mit dem folgenden Befehl erstellen:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --enable-autoclass \
    --public-access-prevention \
    --uniform-bucket-level-access

Ersetzen Sie Folgendes:

  • BUCKET_NAME: der Name des neuen Buckets
  • PROJECT_ID: die Projekt-ID
  • LOCATION: der Speicherort für Ihren neuen Bucket

BigLake Iceberg-Tabellen in BigQuery-Workflows

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

Hinweise

Bevor Sie BigLake Iceberg-Tabellen in BigQuery erstellen und verwenden, müssen Sie eine Cloud-Ressourcenverbindung zu einem Speicher-Bucket einrichten. Ihre Verbindung benötigt Schreibberechtigungen für den Speicher-Bucket, wie im folgenden Abschnitt Erforderliche Rollen beschrieben. Weitere Informationen zu den erforderlichen Rollen und Berechtigungen für Verbindungen finden Sie unter Verbindungen verwalten.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie benötigen, damit BigQuery Tabellen in Ihrem Projekt verwalten kann:

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

Diese vordefinierten Rollen enthalten die Berechtigungen, die erforderlich sind, damit BigQuery Tabellen in Ihrem Projekt verwalten kann. 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 Ihren Bucket
  • storage.objects.create für Ihren Bucket
  • storage.objects.delete für Ihren Bucket
  • storage.objects.get für Ihren Bucket
  • storage.objects.list für Ihren Bucket

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

BigLake Iceberg-Tabellen in BigQuery erstellen

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

SQL

CREATE TABLE [PROJECT_ID.]DATASET_ID.TABLE_NAME (
COLUMN DATA_TYPE[, ...]
)
CLUSTER BY CLUSTER_COLUMN_LIST
WITH CONNECTION {CONNECTION_NAME | DEFAULT}
OPTIONS (
file_format = 'PARQUET',
table_format = 'ICEBERG',
storage_uri = 'STORAGE_URI');

Ersetzen Sie Folgendes:

  • PROJECT_ID: Das Projekt, das das Dataset enthält. Wenn nicht definiert, wird vom Befehl das Standardprojekt angenommen.
  • DATASET_ID: ein vorhandenes Dataset.
  • TABLE_NAME: Der Name der Tabelle, die Sie erstellen.
  • DATA_TYPE: der Datentyp der Informationen, die in der Spalte enthalten sind.
  • 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

    Wenn Sie eine Standardverbindung verwenden möchten, geben Sie DEFAULT anstelle des Verbindungsstrings mit PROJECT_ID.REGION.CONNECTION_ID an.

  • STORAGE_URI: ein vollständig qualifizierter Cloud Storage-URI. Beispiel: gs://mybucket/table

bq

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: Das Projekt, das das Dataset enthält. Wenn nicht definiert, wird vom Befehl das Standardprojekt angenommen.
  • 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 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.
  • DATASET_ID: Die ID eines vorhandenen Datasets.
  • MANAGED_TABLE_NAME: Der Name der Tabelle, die Sie erstellen.

API

Rufen Sie die Methode tables.insert mit einer definierten Tabellenressource auf, wie im folgenden Beispiel:

{
"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 Informationen in der Spalte.

Daten in BigLake Iceberg-Tabellen in BigQuery importieren

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

Standard-Ladevorgang für Daten aus Flatfiles

Für BigLake Iceberg-Tabellen in BigQuery werden BigQuery-Ladejobs verwendet, um externe Dateien in BigLake Iceberg-Tabellen in BigQuery zu laden. Wenn Sie bereits eine BigLake Iceberg-Tabelle in BigQuery 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 Anleitungen ohne eine vorhandene BigLake Iceberg-Tabelle in BigQuery verwendet werden, wird stattdessen eine BigQuery-Tabelle erstellt.

Hier 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 BigLake-Iceberg-Tabelle in BigQuery.
  • 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 unterstützten Formaten finden Sie in der format-Zeile 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 unterstützten Formaten finden Sie in der format-Zeile von load_option_list.
  • MANAGED_TABLE_NAME: Der Name einer vorhandenen BigLake-Iceberg-Tabelle in BigQuery.
  • 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 mit standardmäßigen BigQuery-Ladejobs in BigLake Iceberg-Tabellen in BigQuery laden. Weitere Informationen finden Sie unter Extern partitionierte Daten laden.

Streamingdaten aus Pub/Sub laden

Sie können Streamingdaten in BigLake-Iceberg-Tabellen in BigQuery laden, indem Sie ein Pub/Sub-BigQuery-Abo verwenden.

Daten aus BigLake Iceberg-Tabellen in BigQuery exportieren

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

Daten in flache Formate exportieren

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

BigLake Iceberg-Tabelle in BigQuery-Metadaten-Snapshots erstellen

So erstellen Sie eine BigLake Iceberg-Tabelle in einem BigQuery-Metadaten-Snapshot:

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

  2. Optional: Aktualisierung von Iceberg-Metadaten-Snapshots planen. Wenn Sie einen Iceberg-Metadatensnapshot in einem bestimmten Zeitintervall aktualisieren möchten, verwenden Sie eine geplante Abfrage.

  3. Optional: Aktivieren Sie die automatische Aktualisierung von Metadaten für Ihr Projekt, um den Metadaten-Snapshot Ihrer Iceberg-Tabelle bei jeder Tabellenänderung automatisch zu aktualisieren. Wenn Sie die automatische Aktualisierung von Metadaten aktivieren möchten, wenden Sie sich an bigquery-tables-for-apache-iceberg-help@google.com. Bei jedem Aktualisierungsvorgang fallen EXPORT METADATA-Kosten an.

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

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

BigLake Iceberg-Tabelle im BigQuery-Metadatensnapshot ansehen

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

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 Ihr tatsächliches Dataset und Ihre tatsächliche Tabelle.

BigLake Iceberg-Tabellen in BigQuery mit Apache Spark lesen

Im folgenden Beispiel wird Ihre Umgebung für die Verwendung von Spark SQL mit Apache Iceberg eingerichtet. Anschließend wird eine Abfrage ausgeführt, um Daten aus einer angegebenen BigLake Iceberg-Tabelle in BigQuery 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' \

# Query the table
SELECT * FROM CATALOG_NAME.FOLDER_NAME;

Ersetzen Sie Folgendes:

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

BigLake Iceberg-Tabellen in BigQuery ändern

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

Preise

Die Preise für BigLake Iceberg-Tabellen in BigQuery setzen sich aus Speicher, Speicheroptimierung sowie Abfragen und Jobs zusammen.

Speicher

In BigLake Iceberg-Tabellen in BigQuery werden alle Daten in Cloud Storage gespeichert. Ihnen werden alle gespeicherten Daten in Rechnung gestellt, einschließlich der Daten aus dem Tabellenverlauf. Möglicherweise fallen auch Gebühren für die Cloud Storage-Datenverarbeitung und Übertragungsgebühren an. Für Vorgänge, die über BigQuery oder die BigQuery Storage API verarbeitet werden, fallen möglicherweise keine Gebühren für bestimmte Cloud Storage-Vorgänge an. Es fallen keine BigQuery-spezifischen Speichergebühren an. Weitere Informationen finden Sie unter Cloud Storage – Preise.

Speicheroptimierung

Bei BigLake-Iceberg-Tabellen in BigQuery wird der Speicher automatisch optimiert. Dazu gehören die adaptive Dateigröße, das automatische Clustering, die Garbage Collection und die Metadatenoptimierung. Für diese Optimierungsvorgänge werden Pay-as-you-go-Slots der Enterprise-Version verwendet und keine vorhandenen BACKGROUND-Reservierungen.

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

Die Speicheroptimierung und die Nutzung von EXPORT TABLE METADATA sind in der Ansicht INFORMATION_SCHEMA.JOBS sichtbar.

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 Slotstunde), 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. Bei BigQuery-Tabellen werden diese Vorgänge nicht in Rechnung gestellt. Wenn PIPELINE-Reservierungen mit Enterprise- oder Enterprise Plus-Slots verfügbar sind, werden diese Reservierungsslots bevorzugt für Lade- und Exportvorgänge verwendet.

Beschränkungen

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

  • BigLake-Iceberg-Tabellen in BigQuery unterstützen keine Umbenennungsvorgänge oder ALTER TABLE RENAME TO-Anweisungen.
  • BigLake-Iceberg-Tabellen in BigQuery unterstützen keine Tabellenkopien oder CREATE TABLE COPY-Anweisungen.
  • BigLake Iceberg-Tabellen in BigQuery unterstützen keine Tabellenklone oder CREATE TABLE CLONE-Anweisungen.
  • BigLake Iceberg-Tabellen in BigQuery unterstützen keine Tabellen-Snapshots oder CREATE SNAPSHOT TABLE-Anweisungen.
  • Die folgenden Tabellenschemas werden für BigLake Iceberg-Tabellen in BigQuery nicht unterstützt:
  • Die folgenden Fälle der Schemaentwicklung werden für BigLake-Iceberg-Tabellen in BigQuery nicht unterstützt:
    • NUMERIC-zu-FLOAT-Typkoersionen
    • INT-zu-FLOAT-Typkoersionen
    • Neue verschachtelte Felder in vorhandene RECORD-Spalten einfügen
  • Für BigLake Iceberg-Tabellen in BigQuery wird eine Speichergröße von 0 Byte angezeigt, wenn sie über die Konsole oder APIs abgefragt werden.
  • Materialisierte Ansichten werden für BigLake-Iceberg-Tabellen in BigQuery nicht unterstützt.
  • Für BigLake Iceberg-Tabellen in BigQuery werden keine Transaktionen mit mehreren Anweisungen unterstützt.
  • BigLake Iceberg-Tabellen in BigQuery unterstützen keine Change Data Capture (CDC)-Aktualisierungen.
  • BigLake Iceberg-Tabellen in BigQuery unterstützen keine verwaltete Notfallwiederherstellung.
  • BigLake-Iceberg-Tabellen in BigQuery unterstützen keine Partitionierung. Erwägen Sie Clustering als Alternative.
  • BigLake Iceberg-Tabellen in BigQuery unterstützen keine Sicherheit auf Zeilenebene.
  • BigLake-Iceberg-Tabellen in BigQuery unterstützen keine Fail-Safe-Zeiträume.
  • Für BigLake Iceberg-Tabellen in BigQuery werden keine Extraktionsjobs unterstützt.
  • Die Ansicht INFORMATION_SCHEMA.TABLE_STORAGE enthält keine BigLake Iceberg-Tabellen in BigQuery.
  • BigLake Iceberg-Tabellen in BigQuery werden nicht als Ziele für Abfrageergebnisse unterstützt. Stattdessen können Sie die CREATE TABLE-Anweisung mit dem Argument AS query_statement verwenden, um eine Tabelle als Ziel für das Abfrageergebnis zu erstellen.
  • CREATE OR REPLACE unterstützt nicht das Ersetzen von Standardtabellen durch BigLake Iceberg-Tabellen in BigQuery oder von BigLake Iceberg-Tabellen in BigQuery durch Standardtabellen.
  • Beim Batch-Laden und mit LOAD DATA-Anweisungen können Daten nur an vorhandene BigLake Iceberg-Tabellen in BigQuery angehängt werden.
  • Batch-Ladevorgänge und LOAD DATA-Anweisungen unterstützen keine Schemaaktualisierungen.
  • TRUNCATE TABLE unterstützt keine BigLake-Iceberg-Tabellen in BigQuery. Dafür gibt allerdings es zwei Alternativen:
  • Die Tabellenwertfunktion APPENDS (Table-valued function, TVF) unterstützt keine BigLake Iceberg-Tabellen in BigQuery.
  • Iceberg-Exporte in Apache Spark enthalten keine kürzlich gestreamten Daten im schreiboptimierten Speicher.
  • Der seitenweise Zugriff auf Datensätze mit tabledata.list wird für BigLake-Iceberg-Tabellen in BigQuery nicht unterstützt.
  • Verknüpfte Datasets werden für BigLake Iceberg-Tabellen in BigQuery nicht unterstützt.
  • Für jede BigLake-Iceberg-Tabelle in BigQuery wird nur eine mutierende DML-Anweisung (UPDATE, DELETE und MERGE) gleichzeitig ausgeführt. Zusätzliche mutierende DML-Anweisungen werden in die Warteschlange gestellt.