Tabelle gestite Apache Iceberg
Le tabelle gestite Apache Iceberg (in precedenza tabelle BigLake per Apache Iceberg in BigQuery) forniscono le basi per la creazione di lakehouse in formato aperto su Cloud de Confiance by S3NS. Le tabelle gestite Iceberg offrono la stessa esperienza completamente gestita delle tabelle BigQuery standard, ma archiviano i dati in bucket di archiviazione di proprietà del cliente. Le tabelle gestite Iceberg supportano il formato delle tabelle Iceberg open source per una migliore interoperabilità con motori di calcolo open source e di terze parti su una singola copia dei dati.
Le tabelle gestite Iceberg supportano le seguenti funzionalità:
- Mutazioni delle tabelle utilizzando il Data Manipulation Language (DML) di GoogleSQL.
- Elaborazione batch unificata e streaming a throughput elevato utilizzando l'API BigQuery Storage Write tramite connettori come Spark, Dataflow e altri motori.
- Esportazione dello snapshot Iceberg V2 e aggiornamento automatico a ogni mutazione della tabella per l'accesso diretto alle query con motori di query open source e di terze parti, come Spark.
- Evoluzione dello schema, che consente di aggiungere, eliminare e rinominare le colonne in base alle tue esigenze. Questa funzionalità consente anche di modificare il tipo di dati e la modalità di una colonna esistente. Per saperne di più, consulta Regole di conversione.
- Ottimizzazione automatica dell'archiviazione, tra cui dimensionamento adattivo dei file, clustering automatico, garbage collection e ottimizzazione dei metadati.
- Time travel per l'accesso ai dati storici in BigQuery.
- Sicurezza a livello di colonna e mascheramento dei dati.
- Transazioni con più istruzioni (in anteprima).
- Partizionamento delle tabelle (in anteprima).
- Creazione di tabelle nei workflow Dataform.
Architettura
Le tabelle gestite Iceberg offrono la comodità della gestione delle risorse BigQuery alle tabelle che si trovano nei tuoi bucket cloud. Puoi utilizzare BigQuery e motori di calcolo open source su queste tabelle senza spostare i dati dai bucket che controlli. Devi configurare un bucket Cloud Storage prima di iniziare a utilizzare le tabelle gestite Iceberg.
L'utilizzo di tabelle gestite Iceberg ha le seguenti implicazioni per il tuo bucket:
- BigQuery crea nuovi file di dati nel bucket in risposta a richieste di scrittura e ottimizzazioni dell'archiviazione in background, ad esempio istruzioni DML e streaming.
- La compattazione e il clustering automatici vengono eseguiti sui file di dati nel bucket. Dopo la scadenza del periodo di tempo, i file di dati vengono raccolti come spazzatura. Tuttavia, se la tabella viene eliminata, i file di dati associati non vengono sottoposti a garbage collection. Per saperne di più, vedi Ottimizzazione dello spazio di archiviazione.
La creazione di una tabella gestita Iceberg è simile alla creazione di tabelle BigQuery. Poiché archivia i dati in formati aperti su Cloud Storage, devi:
- Specifica la connessione alla risorsa Cloud
con
WITH CONNECTIONper configurare le credenziali di connessione per BigQuery per accedere a Cloud Storage. - Specifica il formato file dell'archiviazione dei dati come
PARQUETcon l'istruzionefile_format = PARQUET. - Specifica il formato della tabella dei metadati open source come
ICEBERGcon l'istruzionetable_format = ICEBERG.
Best practice
La modifica o l'aggiunta diretta di file al bucket al di fuori di BigQuery può comportare la perdita di dati o errori non recuperabili. La tabella seguente descrive i possibili scenari:
| Operazione | Conseguenze | Prevenzione |
|---|---|---|
| Aggiungi nuovi file al bucket al di fuori di BigQuery. | Perdita di dati:i nuovi file o oggetti aggiunti al di fuori di BigQuery non vengono monitorati da BigQuery. I file non monitorati vengono eliminati dai processi di garbage collection in background. | Aggiungi dati esclusivamente tramite BigQuery. In questo modo BigQuery può tenere traccia dei file ed evitare che vengano sottoposti a garbage collection. Per evitare aggiunte accidentali e perdita di dati, ti consigliamo anche di limitare le autorizzazioni di scrittura degli strumenti esterni sui bucket contenenti tabelle gestite Iceberg. |
| Crea una nuova tabella gestita Iceberg in un prefisso non vuoto. | Perdita di dati:i dati esistenti non vengono monitorati da BigQuery, quindi questi file vengono considerati non monitorati ed eliminati dai processi di Garbage Collection in background. | Crea solo nuove tabelle gestite Iceberg in prefissi vuoti. |
| Modifica o sostituisci i file di dati della tabella gestita da Iceberg. | Perdita di dati:in caso di modifica o sostituzione esterna,
la tabella non supera un controllo di coerenza e diventa illeggibile. Le query
sulla tabella non riescono. Non esiste un modo self-service per eseguire il recupero da questo punto. Contatta l'assistenza per ricevere aiuto con il recupero dei dati. |
Modifica i dati esclusivamente tramite BigQuery. In questo modo BigQuery può tenere traccia dei file ed evitare che vengano sottoposti a garbage collection. Per evitare aggiunte accidentali e perdita di dati, ti consigliamo anche di limitare le autorizzazioni di scrittura degli strumenti esterni sui bucket contenenti tabelle gestite Iceberg. |
| Crea due tabelle gestite Iceberg sugli stessi URI o su URI sovrapposti. | Perdita di dati:BigQuery non collega istanze URI identiche di tabelle gestite Iceberg. I processi di garbage collection in background per ogni tabella considereranno i file della tabella opposta come non monitorati ed elimineranno, causando la perdita di dati. | Utilizza URI univoci per ogni tabella gestita Iceberg. |
Best practice per la configurazione dei bucket Cloud Storage
La configurazione del bucket Cloud Storage e la sua connessione a BigQuery influiscono direttamente su prestazioni, costi, integrità, sicurezza e governance delle tabelle gestite Iceberg. Di seguito sono riportate le best practice per facilitare questa configurazione:
Seleziona un nome che indichi chiaramente che il bucket è destinato solo alle tabelle gestite Iceberg.
Scegli bucket Cloud Storage monoregionali che si trovano nella stessa regione del tuo dataset BigQuery. Questo coordinamento migliora le prestazioni e riduce i costi evitando le tariffe per il trasferimento di dati.
Per impostazione predefinita, Cloud Storage archivia i dati nella classe di archiviazione Standard, che offre prestazioni sufficienti. Per ottimizzare i costi di archiviazione dei dati, puoi abilitare Autoclass per gestire automaticamente le transizioni delle classi di archiviazione. Autoclass inizia con la classe di archiviazione Standard Storage e sposta gli oggetti a cui non si accede in classi progressivamente meno frequenti per ridurre i costi di archiviazione. Quando l'oggetto viene letto di nuovo, viene spostato di nuovo nella classe Standard.
Attiva l'accesso uniforme a livello di bucket e la prevenzione dell'accesso pubblico.
Verifica che i ruoli richiesti siano assegnati agli utenti e ai service account corretti.
Per evitare l'eliminazione o il danneggiamento accidentale dei dati nel bucket Cloud Storage, limita le autorizzazioni di scrittura ed eliminazione per la maggior parte degli utenti della tua organizzazione. Puoi farlo impostando un criterio di autorizzazione bucket con condizioni che negano le richieste
PUTeDELETEper tutti gli utenti, tranne quelli che specifichi.Applica chiavi di crittografia gestite da Google o gestite dal cliente per una maggiore protezione dei dati sensibili.
Abilita l'audit logging per la trasparenza operativa, la risoluzione dei problemi e il monitoraggio dell'accesso ai dati.
Mantieni il criterio di eliminazione temporanea predefinito (conservazione di 7 giorni) per proteggerti da eliminazioni accidentali. Tuttavia, se noti che i dati sono stati eliminati, contatta l'assistenza anziché ripristinare gli oggetti manualmente, poiché gli oggetti aggiunti o modificati al di fuori di BigQuery non vengono monitorati dai metadati di BigQuery.
Il dimensionamento adattivo dei file, il clustering automatico e la garbage collection sono abilitati automaticamente e contribuiscono a ottimizzare le prestazioni e i costi dei file.
Evita le seguenti funzionalità di Cloud Storage, in quanto non sono supportate per le tabelle gestite Iceberg:
- Spazi dei nomi gerarchici
- Elenchi di controllo dell'accesso (ACL) agli oggetti
- Chiavi di crittografia fornite dal cliente
- Controllo delle versioni degli oggetti
- Blocco oggetto
- Blocco di bucket
- Ripristino di oggetti eliminati temporaneamente con l'API BigQuery o la CLI bq
Puoi implementare queste best practice creando il bucket con il seguente comando:
gcloud storage buckets create gs://BUCKET_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --enable-autoclass \ --public-access-prevention \ --uniform-bucket-level-access
Sostituisci quanto segue:
BUCKET_NAME: il nome del nuovo bucketPROJECT_ID: l'ID del progettoLOCATION: la posizione del nuovo bucket
Workflow delle tabelle gestite Iceberg
Le sezioni seguenti descrivono come creare, caricare, gestire ed eseguire query sulle tabelle gestite Iceberg.
Prima di iniziare
Prima di creare e utilizzare le tabelle gestite Iceberg, assicurati di aver configurato una connessione alle risorse Cloud a un bucket di archiviazione. La connessione deve disporre delle autorizzazioni di scrittura sul bucket di archiviazione, come specificato nella seguente sezione Ruoli richiesti. Per ulteriori informazioni sui ruoli e sulle autorizzazioni richiesti per le connessioni, consulta Gestisci le connessioni.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per consentire a BigQuery di gestire le tabelle nel tuo progetto, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare tabelle gestite Iceberg:
- BigQuery Data Owner (
roles/bigquery.dataOwner) sul tuo progetto - BigQuery Connection Admin (
roles/bigquery.connectionAdmin) sul tuo progetto
- BigQuery Data Owner (
-
Per eseguire query sulle tabelle gestite da Iceberg:
- Visualizzatore dati BigQuery (
roles/bigquery.dataViewer) sul tuo progetto - Utente BigQuery (
roles/bigquery.user) sul tuo progetto
- Visualizzatore dati BigQuery (
-
Concedi al account di servizio di connessione i seguenti ruoli in modo che possa leggere e scrivere dati in Cloud Storage:
- Storage Object User (
roles/storage.objectUser) sul bucket - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) sul bucket
- Storage Object User (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per consentire a BigQuery di gestire le tabelle nel tuo progetto. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per consentire a BigQuery di gestire le tabelle nel tuo progetto, sono necessarie le seguenti autorizzazioni:
-
Tutte:
-
bigquery.connections.delegatesul tuo progetto -
bigquery.jobs.createsul tuo progetto -
bigquery.readsessions.createsul tuo progetto -
bigquery.tables.createsul tuo progetto -
bigquery.tables.getsul tuo progetto -
bigquery.tables.getDatasul tuo progetto -
storage.buckets.getsul tuo bucket -
storage.objects.createsul tuo bucket -
storage.objects.deletesul tuo bucket -
storage.objects.getsul tuo bucket -
storage.objects.listsul tuo bucket
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Crea tabelle gestite Iceberg
Per creare una tabella gestita Iceberg, seleziona uno dei seguenti metodi:
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');
Sostituisci quanto segue:
- PROJECT_ID: il progetto contenente il set di dati. Se non è definito, il comando presuppone il progetto predefinito.
- DATASET_ID: un set di dati esistente.
- TABLE_NAME: il nome della tabella che stai creando.
- DATA_TYPE: il tipo di dati delle informazioni contenute nella colonna.
- CLUSTER_COLUMN_LIST (facoltativo): un elenco separato da virgole contenente fino a quattro colonne. Devono essere colonne di primo livello non ripetute.
- CONNECTION_NAME: il nome della connessione. Ad esempio,
myproject.us.myconnection.
Per utilizzare una connessione predefinita, specifica
DEFAULT anziché la stringa di connessione contenente
PROJECT_ID.REGION.CONNECTION_ID.
- STORAGE_URI: un URI di Cloud Storage completo. Ad esempio
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
Sostituisci quanto segue:
- PROJECT_ID: il progetto contenente il set di dati. Se non è definito, il comando presuppone il progetto predefinito.
- CONNECTION_NAME: il nome della connessione. Ad esempio,
myproject.us.myconnection. - STORAGE_URI: un URI di Cloud Storage completo. Ad esempio
gs://mybucket/table. - COLUMN_NAME: il nome della colonna.
- DATA_TYPE: il tipo di dati delle informazioni contenute nella colonna.
- CLUSTER_COLUMN_LIST (facoltativo): un elenco separato da virgole contenente fino a quattro colonne. Devono essere colonne di primo livello non ripetute.
- DATASET_ID: l'ID di un set di dati esistente.
- MANAGED_TABLE_NAME: il nome della tabella che stai creando.
API
Chiama il metodo tables.insert con una risorsa tabella definita, simile alla seguente:
{ "tableReference": { "tableId": "TABLE_NAME" }, "biglakeConfiguration": { "connectionId": "CONNECTION_NAME", "fileFormat": "PARQUET", "tableFormat": "ICEBERG", "storageUri": "STORAGE_URI" }, "schema": { "fields": [ { "name": "COLUMN_NAME", "type": "DATA_TYPE" } [, ...] ] } }
Sostituisci quanto segue:
- TABLE_NAME: il nome della tabella che stai creando.
- CONNECTION_NAME: il nome della connessione. Ad esempio,
myproject.us.myconnection. - STORAGE_URI: un URI di Cloud Storage completo.
Sono supportati anche i caratteri jolly. Ad esempio:
gs://mybucket/table. - COLUMN_NAME: il nome della colonna.
- DATA_TYPE: il tipo di dati delle informazioni contenute nella colonna.
Importare dati nelle tabelle gestite Iceberg
Le sezioni seguenti descrivono come importare dati da vari formati di tabella nelle tabelle gestite Iceberg.
Carica i dati standard dai flat file
Le tabelle gestite Iceberg utilizzano i job di caricamento BigQuery per caricare
file esterni nelle tabelle gestite Iceberg. Se hai una tabella gestita Iceberg esistente, segui la guida alla CLI bq load o la guida a SQL LOAD per caricare i dati esterni. Dopo il caricamento dei dati, vengono scritti nuovi file Parquet
nella cartella STORAGE_URI/data.
Se le istruzioni precedenti vengono utilizzate senza una tabella gestita Iceberg esistente, viene creata una tabella BigQuery.
Per esempi specifici dello strumento di caricamenti batch nelle tabelle gestite Iceberg, consulta quanto segue:
SQL
LOAD DATA INTO MANAGED_TABLE_NAME FROM FILES ( uris=['STORAGE_URI'], format='FILE_FORMAT');
Sostituisci quanto segue:
- MANAGED_TABLE_NAME: il nome di una tabella gestita Iceberg esistente.
- STORAGE_URI: un URI Cloud Storage completo o un elenco separato da virgole di URI.
Sono supportati anche i caratteri jolly. Ad esempio:
gs://mybucket/table. - FILE_FORMAT: il formato della tabella di origine. Per i formati supportati,
vedi la riga
formatdiload_option_list.
bq
bq load \ --source_format=FILE_FORMAT \ MANAGED_TABLE \ STORAGE_URI
Sostituisci quanto segue:
- FILE_FORMAT: il formato della tabella di origine. Per i formati supportati,
vedi la riga
formatdiload_option_list. - MANAGED_TABLE_NAME: il nome di una tabella gestita Iceberg esistente.
- STORAGE_URI: un URI Cloud Storage completo o un elenco separato da virgole di URI.
Sono supportati anche i caratteri jolly. Ad esempio:
gs://mybucket/table.
Caricamento standard da file partizionati Apache Hive
Puoi caricare file partizionati in Hive nelle tabelle gestite Iceberg utilizzando i job di caricamento BigQuery standard. Per saperne di più, consulta Caricamento di dati partizionati esternamente.
Carica i dati di streaming da Pub/Sub
Puoi caricare i dati di streaming nelle tabelle gestite Iceberg utilizzando una sottoscrizione Pub/Sub BigQuery.
Esportare dati dalle tabelle gestite Iceberg
Le sezioni seguenti descrivono come esportare i dati dalle tabelle gestite Iceberg in vari formati di tabella.
Esportare i dati in formati piatti
Per esportare una tabella gestita Iceberg in un formato piatto, utilizza l'istruzione
EXPORT DATA
e seleziona un formato di destinazione. Per saperne di più, consulta Esportazione di dati.
Crea snapshot dei metadati delle tabelle gestite Iceberg
Per creare uno snapshot dei metadati della tabella gestita Iceberg, segui questi passaggi:
Esporta i metadati nel formato Iceberg V2 con l'istruzione SQL
EXPORT TABLE METADATA.(Facoltativo) Pianifica l'aggiornamento dello snapshot dei metadati Iceberg. Per aggiornare uno snapshot dei metadati Iceberg in base a un intervallo di tempo impostato, utilizza una query pianificata.
(Facoltativo) Attiva l'aggiornamento automatico dei metadati per il tuo progetto per aggiornare automaticamente lo snapshot dei metadati della tabella Iceberg a ogni modifica della tabella. Per attivare l'aggiornamento automatico dei metadati, contatta bigquery-tables-for-apache-iceberg-help@google.com. I costi di
EXPORT METADATAvengono applicati a ogni operazione di aggiornamento.
L'esempio seguente crea una query pianificata denominata My Scheduled Snapshot
Refresh Query utilizzando l'istruzione DDL EXPORT TABLE METADATA FROM
mydataset.test. L'istruzione DDL viene eseguita ogni 24 ore.
bq query \ --use_legacy_sql=false \ --display_name='My Scheduled Snapshot Refresh Query' \ --schedule='every 24 hours' \ 'EXPORT TABLE METADATA FROM mydataset.test'
Visualizzare lo snapshot dei metadati della tabella gestita da Iceberg
Dopo aver aggiornato lo snapshot dei metadati della tabella gestita Iceberg, puoi trovarlo nell'URI Cloud Storage in cui è stata creata originariamente la tabella gestita Iceberg. La cartella /data
contiene gli shard di dati dei file Parquet, mentre la cartella /metadata contiene
lo snapshot dei metadati della tabella gestita da Iceberg.
SELECT table_name, REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri FROM `mydataset`.INFORMATION_SCHEMA.TABLES;
Tieni presente che mydataset e table_name sono segnaposto per il set di dati
e la tabella effettivi.
Leggi le tabelle gestite Iceberg con Spark
Il seguente esempio configura l'ambiente per utilizzare Spark SQL con Spark, quindi esegue una query per recuperare i dati da una tabella gestita Iceberg specificata.
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;
Sostituisci quanto segue:
- ICEBERG_VERSION_NUMBER: la versione attuale del runtime. Scarica l'ultima versione dalle release di Iceberg.
- CATALOG_NAME: il catalogo a cui fare riferimento per la tabella gestita Iceberg.
- BUCKET_PATH: il percorso del bucket contenente i file della tabella.
Ad esempio,
gs://mybucket/. - FOLDER_NAME: la cartella contenente i file della tabella. Ad esempio,
myfolder.
Modificare le tabelle gestite Iceberg
Per modificare una tabella gestita Iceberg, segui i passaggi descritti in Modifica degli schemi delle tabelle.
Utilizzare le transazioni con più istruzioni
Per accedere alle transazioni con più istruzioni per le tabelle gestite Iceberg, compila il modulo di registrazione.
Utilizzare il partizionamento
Per accedere al partizionamento per le tabelle gestite Iceberg, compila il modulo di registrazione.
Per partizionare una tabella, specifica una colonna di partizione, che viene utilizzata per segmentare la tabella. Sono supportati i seguenti tipi di colonne per le tabelle gestite Iceberg:
DATEDATETIMETIMESTAMP
Il partizionamento di una tabella in base a una colonna DATE, DATETIME o TIMESTAMP è noto come
partizionamento in base a una colonna
unità di tempo.
Scegli se le partizioni devono avere una granularità oraria, giornaliera, mensile o annuale.
Le tabelle gestite Iceberg supportano anche il clustering e la combinazione di tabelle in cluster e partizionate.
Limitazioni del partizionamento
- Si applicano tutte le limitazioni tabella partizionata BigQuery.
- I tipi di colonne di partizionamento diversi da
DATE,DATETIMEoTIMESTAMPnon sono supportati. - La scadenza della partizione non è supportata.
- L'evoluzione delle partizioni non è supportata.
Crea una tabella gestita Iceberg partizionata
Per creare una tabella gestita Iceberg partizionata, segui le istruzioni per creare una tabella gestita Iceberg standard e includi uno dei seguenti elementi, a seconda del tuo ambiente:
- La clausola
PARTITION BY - I flag
--time_partitioning_fielde--time_partitioning_type - La proprietà
timePartitioning
Modificare ed eseguire query sulle tabelle gestite Iceberg partizionate
Le istruzioni e le query del Data Manipulation Language (DML) di BigQuery per le tabelle gestite Iceberg partizionate sono le stesse delle tabelle gestite Iceberg standard. BigQuery limita automaticamente l'ambito del job alle partizioni corrette, in modo simile al partizionamento nascosto di Iceberg. Inoltre, tutti i nuovi dati che aggiungi alla tabella vengono partizionati automaticamente.
Puoi anche eseguire query sulle tabelle gestite Iceberg partizionate con altri motori nello stesso modo delle tabelle gestite Iceberg standard. Per un'esperienza ottimale, ti consigliamo di attivare gli snapshot dei metadati.
Per una maggiore sicurezza, le informazioni di partizionamento per le tabelle gestite Iceberg sono separate dal percorso dei dati e vengono gestite interamente dal livello dei metadati.
Prezzi
I prezzi delle tabelle gestite Iceberg sono costituiti da archiviazione, ottimizzazione dell'archiviazione, query e job.
Archiviazione
Le tabelle gestite Iceberg archiviano tutti i dati in Cloud Storage. Ti vengono addebitati tutti i dati archiviati, inclusi i dati storici delle tabelle. Potrebbero essere applicati anche costi di elaborazione e trasferimento dei dati di Cloud Storage. Alcune tariffe per le operazioni di Cloud Storage potrebbero essere esentate per le operazioni elaborate tramite BigQuery o l'API BigQuery Storage. Non sono previste tariffe di archiviazione specifiche per BigQuery. Per maggiori informazioni, consulta la pagina Prezzi di Cloud Storage.
Ottimizzazione archiviazione
Le tabelle gestite Iceberg eseguono la gestione automatica delle tabelle, tra cui compattazione, clustering, garbage collection e generazione/aggiornamento dei metadati BigQuery per ottimizzare le prestazioni delle query e ridurre i costi di archiviazione. L'utilizzo delle risorse di calcolo per la gestione delle tabelle viene fatturato in unità di calcolo dei dati (DCU) nel tempo, con incrementi al secondo. Per maggiori dettagli, consulta Prezzi delle tabelle gestite Iceberg.
Le operazioni di esportazione dei dati eseguite durante lo streaming tramite l'API Storage Write sono incluse nei prezzi dell'API Storage Write e non vengono addebitate come manutenzione in background. Per saperne di più, consulta Prezzi dell'importazione dati.
Per visualizzare i log e l'utilizzo di Compute per queste operazioni in background, esegui una query sulla vista
INFORMATION_SCHEMA.JOBS. Per
query di esempio, vedi quanto segue:
Query e job
Analogamente alle tabelle BigQuery, ti vengono addebitati i costi per le query e i byte letti (per TiB) se utilizzi i prezzi on demand di BigQuery o il consumo di slot (per ora di slot) se utilizzi i prezzi di computing con capacità BigQuery.
I prezzi di BigQuery si applicano anche all'API BigQuery Storage Read e all'API Storage Write.
Le operazioni di caricamento ed esportazione (ad esempio EXPORT METADATA) utilizzano slot pay as you go
di Enterprise edition. Questo
è diverso dalle tabelle BigQuery, per le quali queste operazioni non
comportano costi. Se sono disponibili prenotazioni PIPELINE con slot Enterprise o Enterprise Plus, le operazioni di caricamento ed esportazione utilizzano preferibilmente questi slot di prenotazione.
Limitazioni
Le tabelle gestite Iceberg presentano le seguenti limitazioni:
- Le tabelle gestite Iceberg non supportano
operazioni di ridenominazione o
istruzioni
ALTER TABLE RENAME TO. - Le tabelle gestite Iceberg non supportano
le copie delle tabelle o
le istruzioni
CREATE TABLE COPY. - Le tabelle gestite Iceberg non supportano
cloni di tabelle o
istruzioni
CREATE TABLE CLONE. - Le tabelle gestite da Iceberg non supportano
gli snapshot delle tabelle o
le istruzioni
CREATE SNAPSHOT TABLE. - Le tabelle gestite Iceberg non supportano il seguente schema di tabella:
- Schema vuoto
- Schema con tipi di dati
BIGNUMERIC,INTERVAL,JSON,RANGEoGEOGRAPHY. - Schema con collation dei campi.
- Schema con espressioni di valori predefiniti.
- Le tabelle gestite Iceberg non supportano i seguenti casi di evoluzione dello schema:
NUMERICaFLOATforzature del tipoINTaFLOATforzature del tipo- Aggiunta di nuovi campi nidificati a colonne
RECORDesistenti utilizzando istruzioni DDL SQL
- Le tabelle gestite Iceberg mostrano una dimensione di archiviazione di 0 byte quando vengono interrogate dalla console o dalle API.
- Le tabelle gestite Iceberg non supportano le viste materializzate.
- Le tabelle gestite Iceberg non supportano le viste autorizzate, ma è supportato il controllo dell'accesso a livello di colonna.
- Le tabelle gestite Iceberg non supportano gli aggiornamenti di Change Data Capture (CDC).
- Le tabelle gestite Iceberg non supportano il disaster recovery gestito
- Le tabelle gestite Iceberg non supportano la sicurezza a livello di riga.
- Le tabelle gestite Iceberg non supportano le finestre di sicurezza.
- Le tabelle gestite Iceberg non supportano i job di estrazione.
- La visualizzazione
INFORMATION_SCHEMA.TABLE_STORAGEnon include le tabelle gestite Iceberg. - Le tabelle gestite Iceberg non sono supportate come destinazioni dei risultati delle query. Puoi invece utilizzare l'istruzione
CREATE TABLEcon l'argomentoAS query_statementper creare una tabella come destinazione dei risultati della query. CREATE OR REPLACEnon supporta la sostituzione di tabelle standard con tabelle gestite Iceberg o di tabelle gestite Iceberg con tabelle standard.- Le istruzioni Batch loading e
LOAD DATAstatements supportano solo l'aggiunta di dati alle tabelle gestite Iceberg esistenti. - Il caricamento batch e le istruzioni
LOAD DATAnon supportano gli aggiornamenti dello schema. TRUNCATE TABLEnon supporta le tabelle gestite Iceberg. Sono disponibili due alternative:CREATE OR REPLACE TABLE, utilizzando le stesse opzioni di creazione delle tabelle.DELETE FROMtableWHEREtrue
- La funzione con valori di tabella (TVF)
APPENDSnon supporta le tabelle gestite Iceberg. - I metadati Iceberg potrebbero non contenere dati trasmessi in streaming a BigQuery dall'API Storage Write negli ultimi 90 minuti.
- L'accesso paginato basato sui record tramite
tabledata.listnon supporta le tabelle gestite Iceberg. - Per ogni tabella gestita da Iceberg viene eseguita una sola istruzione DML mutante simultanea (
UPDATE,DELETEeMERGE). Sono in coda altre istruzioni DML di mutazione.