Creazione tabelle Delta Lake BigLake
Per richiedere feedback o assistenza per questa funzionalità, invia un'email a biglake-help@google.com.
BigLake consente di accedere alle tabelle Delta Lake con controllo dell'accesso più granulare. Delta Lake è un formato di archiviazione dati tabulare open source sviluppato da Databricks che supporta tabelle di dati con scalabilità nell'ordine di petabyte.
BigQuery supporta le seguenti funzionalità con le tabelle Delta Lake:
- Delega dell'accesso: esegui query su dati strutturati in datastore esterni con la delega dell'accesso. La delega dell'accesso disaccoppia l'accesso alla tabella Delta Lake dall'accesso al datastore sottostante.
- Controllo dell'accesso granulare: applica una sicurezza granulare a livello di tabella, inclusa la sicurezza a livello di riga e di colonna. Per le tabelle delta lake basate su Cloud Storage, puoi anche utilizzare il mascheramento dinamico dei dati.
- Evoluzione dello schema: le modifiche allo schema nelle tabelle Delta Lake vengono rilevate automaticamente. Le modifiche allo schema vengono applicate alla tabella BigQuery.
Le tabelle Delta Lake supportano anche tutte le funzionalità BigLake quando le configuri come tabelle BigLake.
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery Connection and BigQuery Reservation.
-
Nella console Google Cloud, attiva Cloud Shell.
Assicurati di avere un set di dati BigQuery.
Assicurati che la versione di Google Cloud SDK sia 366.0.0 o successiva:
gcloud version
Se necessario, aggiorna Google Cloud SDK.
Crea una connessione alle risorse Cloud basata sull'origine dati esterna e concedi a questa connessione l'accesso a Cloud Storage. Se non disponi delle autorizzazioni appropriate per creare una connessione, chiedi all'amministratore BigQuery di creare una connessione e di condividerla con te.
Ruoli obbligatori
Per creare una tabella Delta Lake sono necessarie le seguenti autorizzazioni:
bigquery.tables.create
bigquery.connections.delegate
Il ruolo predefinito Amministratore BigQuery (roles/bigquery.admin
)
Identity and Access Management include queste autorizzazioni.
Se non sei un'entità in questo ruolo, chiedi all'amministratore di concederti queste autorizzazioni o di creare la tabella Delta Lake per te.
Inoltre, per consentire agli utenti di BigQuery di eseguire query sulla tabella, l'account di servizio associato alla connessione deve avere le seguenti autorizzazioni e accesso:
- Ruolo Visualizzatore BigQuery (
roles/bigquery.viewer
) - Ruolo Utente connessione BigQuery (
roles/bigquery.connectionUser
) - Accesso al bucket Cloud Storage che contiene i dati
Per ulteriori informazioni sui ruoli e sulle autorizzazioni di Identity and Access Management in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
crea tabelle con Delta Lake
Per creare tabelle Delta Lake, segui questi passaggi.
SQL
Utilizza l'istruzione CREATE EXTERNAL TABLE
per creare la tabella Delta Lake:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.DELTALAKE_TABLE_NAME`
WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
OPTIONS (
format ="DELTA_LAKE",
uris=['DELTA_TABLE_GCS_BASE_PATH']);
Sostituisci i seguenti valori:
- PROJECT_ID: l'ID del progetto in cui vuoi creare la tabella Delta Lake
- DATASET: il set di dati BigQuery che conterrà la tabella Delta Lake
- DELTALAKE_TABLE_NAME: il nome della tabella del lago delta
- REGION: la regione contenente la connessione per creare la tabella Delta Lake, ad esempio
us
CONNECTION_ID: l'ID connessione, ad esempio
myconnection
Quando visualizzi i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore nell'ultima sezione dell'ID connessione completo visualizzato nell'ID connessione, ad esempio
projects/myproject/locations/connection_location/connections/myconnection
.DELTA_TABLE_GCS_BASE_PATH: il prefisso della tabella Delta Lake
bq
In un ambiente a riga di comando, utilizza il comando bq mk
per creare la tabella Delta Lake:
bq mk --table --external_table_definition=DEFINITION_FILE PROJECT_ID:DATASET.DELTALAKE_TABLE_NAME
Sostituisci i seguenti valori:
- DEFINITION_FILE: il percorso di un file di definizione della tabella
- PROJECT_ID: l'ID del progetto in cui vuoi creare la tabella Delta Lake
- DATASET: il set di dati BigQuery che conterrà la tabella Delta Lake
- DELTALAKE_TABLE_NAME: il nome della tabella del lago delta
REST
Usa l'API BigQuery per creare una tabella Delta Lake chiamando il metodo API tables.insert
:
REQUEST='{
"autodetect": true,
"externalDataConfiguration": {
"sourceFormat": "DELTA_LAKE",
"connectionId": "PROJECT_ID.REGION.CONNECTION_ID",
"sourceUris": [
"DELTA_TABLE_GCS_BASE_PATH"
],
},
"tableReference": {
"tableId": "DELTALAKE_TABLE_NAME"
}
}'
echo $REQUEST | curl -X POST -d @- -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET/tables?autodetect_schema=true
Sostituisci i seguenti valori:
- PROJECT_ID: l'ID del progetto in cui vuoi creare la tabella Delta Lake
- REGION: la regione contenente la connessione per creare la tabella Delta Lake, ad esempio
us
CONNECTION_ID: l'ID connessione, ad esempio
myconnection
Quando visualizzi i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore nell'ultima sezione dell'ID connessione completo visualizzato nell'ID connessione, ad esempio
projects/myproject/locations/connection_location/connections/myconnection
.DELTA_TABLE_GCS_BASE_PATH: il prefisso della tabella Delta Lake
DELTALAKE_TABLE_NAME: il nome della tabella del lago delta
DATASET: il set di dati BigQuery che conterrà la tabella Delta Lake
Quando crei tabelle Delta Lake, il prefisso Delta Lake viene
utilizzato come URI della tabella. Ad esempio, per una tabella con log nel bucket gs://bucket/warehouse/basictable/_delta_log
, l'URI della tabella è gs://bucket/warehouse/basictable
. Quando esegui query sulla tabella del lake delta, BigQuery legge i dati sotto il prefisso per identificare la versione corrente della tabella, quindi calcola i metadati e i file per la tabella.
Aggiorna tabelle Delta Lake
Per aggiornare lo schema delle tabelle Delta Lake, segui questi passaggi.
bq
In un ambiente a riga di comando, utilizza il comando bq update
per aggiornare (aggiornare) lo schema della tabella Delta Lake:
bq update --autodetect_schema PROJECT_ID:DATASET.DELTALAKE_TABLE_NAME
Sostituisci i seguenti valori:
- PROJECT_ID: l'ID del progetto in cui vuoi creare la tabella Delta Lake
- DATASET: il set di dati BigQuery che conterrà la tabella Delta Lake
- DELTALAKE_TABLE_NAME: il nome della tabella del lago delta
REST
Usa l'API BigQuery per aggiornare una tabella Delta Lake chiamando il metodo API tables.patch
:
REQUEST='{
"externalDataConfiguration": {
"sourceFormat": "DELTA_LAKE",
"sourceUris": [
"DELTA_TABLE_GCS_BASE_PATH"
],
"connectionId": "PROJECT_ID.REGION.CONNECTION_ID",
"autodetect": true
},
"tableReference": {
"tableId": "DELTALAKE_TABLE_NAME"
}
}'
echo $REQUEST |curl -X POST -d @- -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET/tables
Sostituisci i seguenti valori:
- DELTA_TABLE_GCS_BASE_PATH: il prefisso della tabella Delta Lake
- PROJECT_ID: l'ID del progetto in cui vuoi creare la tabella Delta Lake
- REGION: la regione contenente la connessione per creare la tabella Delta Lake, ad esempio
us
CONNECTION_ID: l'ID connessione, ad esempio
myconnection
Quando visualizzi i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore nell'ultima sezione dell'ID connessione completo visualizzato nell'ID connessione, ad esempio
projects/myproject/locations/connection_location/connections/myconnection
.DELTALAKE_TABLE_NAME: il nome della tabella del lago delta
DATASET: il set di dati BigQuery che conterrà la tabella Delta Lake
Query su tabelle Delta Lake
Dopo aver creato una tabella BigLake Delta Lake, puoi eseguire una query utilizzando la sintassi GoogleSQL, proprio come faresti con una tabella BigQuery standard. Ad esempio:
SELECT field1, field2 FROM mydataset.my_cloud_storage_table;
Per maggiori informazioni, vedi Eseguire query sui dati di Cloud Storage nelle tabelle BigLake.
Una connessione esterna associata a un account di servizio viene utilizzata per connettersi al datastore. Poiché l'account di servizio recupera i dati dal datastore, gli utenti devono accedere solo alla tabella delta lake.
Mappatura dei dati
BigQuery converte i tipi di dati Delta Lake in tipi di dati BigQuery, come illustrato nella seguente tabella:
Tipo di lago delta | Tipo di BigQuery |
---|---|
boolean |
BOOL |
byte |
INT64 |
int |
INT64 |
long |
INT64 |
float |
FLOAT64 |
double |
FLOAT64 |
Decimal(P/S) |
NUMERIC o BIG_NUMERIC in base alla precisione |
date |
DATE |
time |
TIME |
timestamp (not partition column) |
TIMESTAMP |
timestamp (partition column) |
DATETIME |
string |
STRING |
binary |
BYTES |
array<Type> |
ARRAY<Type> |
struct |
STRUCT |
map<KeyType, ValueType> |
ARRAY<Struct<key KeyType, value ValueType>> |
Limitazioni
Le tabelle Delta Lake hanno limitazioni per le tabelle BigLake e anche le seguenti limitazioni:
- Supporta la versione 3 del lettore di Delta Lake con vettori di eliminazione e la mappatura delle colonne.
- Devi elencare la versione del lettore nell'ultimo file della voce di log. Ad esempio,
le nuove tabelle devono includere
00000..0.json
. - Le operazioni CDC (Change Data Capture) non sono supportate. Qualsiasi operazione CDC esistente viene ignorata.
- Lo schema viene rilevato automaticamente. La modifica dello schema tramite BigQuery non è supportata.
- I nomi delle colonne delle tabelle devono rispettare le restrizioni relative ai nomi delle colonne di BigQuery.
- Le viste materializzate non sono supportate.
- L'API Read non è supportata per Delta Lake.