Creazione tabelle Delta Lake BigLake

Per richiedere assistenza o feedback per questa funzione, invia un'email a biglake-help@google.com.

BigLake ti consente di accedere alle tabelle Delta Lake con un controllo dell'accesso più granulare. Delta Lake è un formato di archiviazione dati tabulare open source sviluppato da Databricks che supporta e tabelle di dati su scala petabyte.

BigQuery supporta le seguenti funzionalità con le tabelle Delta Lake:

  • Delega accesso: query strutturata in datastore esterni con delega di accesso. Delega di accesso disaccoppia l'accesso alla tabella Delta Lake dall'accesso datastore sottostante.
  • Controllo dell'accesso granulare: applica una sicurezza granulare in a livello di tabella, tra cui a livello di riga e a livello di colonna. Per nelle tabelle Delta Lake basate su Cloud Storage, puoi anche mascheramento dinamico dei dati.
  • Evoluzione dello schema: modifiche allo schema nelle tabelle Delta Lake. Modifiche alle vengono riportati nella tabella BigQuery.

Le tabelle Delta Lake supportano anche tutte le caratteristiche BigLake quando le configuri come tabelle BigLake.

Prima di iniziare

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  3. Abilita le API BigQuery Connection and BigQuery Reservation.

    Abilita le API

  4. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  5. Assicurati di avere un set di dati BigQuery.

  6. Assicurati che la versione di Google Cloud SDK sia 366.0.0 o successiva:

    gcloud version
    

    Se necessario, aggiornare Google Cloud SDK.

  7. Crea un Connessione alle risorse cloud in base all'origine dati esterna e concedi la connessione per accedere a Cloud Storage. Se non hai le autorizzazioni appropriate per creare una connessione, chiedi l'amministratore BigQuery per creare una connessione e la condividiamo con te.

Ruoli obbligatori

Per creare una tabella Delta Lake sono necessarie le seguenti autorizzazioni:

  • bigquery.tables.create
  • bigquery.connections.delegate

L'amministratore BigQuery (roles/bigquery.admin) predefinito Il ruolo Identity and Access Management include queste autorizzazioni.

Se non sei un'entità con questo ruolo, chiedi all'amministratore per concederti queste autorizzazioni o per creare la tabella Delta Lake.

Inoltre, per consentire agli utenti di BigQuery di eseguire query sulla tabella, l'account di servizio associato alla connessione deve avere quanto segue autorizzazione 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 su ruoli e autorizzazioni di Identity and Access Management in per BigQuery, consulta Ruoli e autorizzazioni predefiniti.

crea tabelle con Delta Lake

Per creare tabelle Delta Lake, segui questi passaggi.

SQL

Utilizza la Dichiarazione 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 visualizza i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore riportato nell'ultima sezione dell'ID connessione completo visualizzato nell'ID connessione, per 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 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

Utilizza l'API BigQuery per crea 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 visualizza i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore riportato nell'ultima sezione dell'ID connessione completo visualizzato nell'ID connessione, per 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 è 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 Tabella Delta Lake, BigQuery legge i dati sotto il prefisso identificare la versione corrente della tabella, quindi calcola i metadati e i file della 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 Comando bq update per 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

Utilizza l'API BigQuery per aggiorna 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 visualizza i dettagli della connessione nella console Google Cloud, l'ID connessione è il valore riportato nell'ultima sezione dell'ID connessione completo visualizzato nell'ID connessione, per 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 Delta Lake BigLake, puoi eseguire query con la sintassi GoogleSQL, come in una tabella BigQuery standard. Ad esempio:

SELECT field1, field2 FROM mydataset.my_cloud_storage_table;

Per ulteriori informazioni, vedi Eseguire query sui dati di Cloud Storage nelle tabelle BigLake.

Una connessione esterna associata a si utilizza un account di servizio per la connessione al datastore. Poiché il servizio recupera i dati dal datastore, gli utenti devono solo accedere Tabella Delta Lake.

Mappatura dei dati

BigQuery converte i tipi di dati di Delta Lake in Tipi di dati di BigQuery come mostrato nella tabella seguente:

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 Delta Lake versione del lettore 3 con vettori di eliminazione e 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. Modificando lo schema utilizzando BigQuery non è supportato.
  • I nomi delle colonne delle tabelle devono essere conformi a BigQuery restrizioni relative ai nomi delle colonne.
  • Le viste materializzate non sono supportate.
  • L'API Read non è supportata per Delta Lake.