Creazione tabelle BigLake di archiviazione BLOB

Questo documento descrive come creare una tabella BigLake di archiviazione BLOB di Azure. Una tabella BigLake consente di utilizzare la delega di accesso per eseguire query sui dati in Archiviazione BLOB. La delega di accesso disaccoppia l'accesso alla tabella BigLake dall'accesso al datastore sottostante.

Per informazioni sul flusso di dati tra BigQuery e Archiviazione BLOB, consulta Flusso di dati durante l'esecuzione di query sui dati.

Prima di iniziare

Assicurati di disporre di una connessione per accedere ai dati nell'archiviazione BLOB.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare una tabella esterna, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin) per il tuo set di dati. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare una tabella esterna. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per creare una tabella esterna sono necessarie le seguenti autorizzazioni:

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

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

crea un set di dati

Prima di creare una tabella esterna, devi creare un set di dati nella regione supportata. Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, seleziona il progetto in cui vuoi creare il set di dati.
  3. Espandi l'opzione Visualizza azioni e fai clic su Crea set di dati.
  4. Nella pagina Crea set di dati, specifica i seguenti dettagli:
    1. In ID set di dati inserisci un nome del set di dati univoco.
    2. In Località dei dati, scegli una regione supportata.
    3. (Facoltativo) Per eliminare automaticamente le tabelle, seleziona la casella di controllo Abilita scadenza della tabella e imposta l'età massima predefinita della tabella in giorni. I dati in Azure non vengono eliminati alla scadenza della tabella.
    4. Se vuoi utilizzare le confrontazioni predefinite, espandi la sezione Opzioni avanzate e seleziona l'opzione Abilita regole di confronto predefinite.
    5. Fai clic su Crea set di dati.

SQL

Utilizza l'istruzione DDL CREATE SCHEMA. L'esempio seguente crea un set di dati nella regione azure-eastus2:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE SCHEMA mydataset
    OPTIONS (
      location = 'azure-eastus2');
    

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

bq

In un ambiente a riga di comando, crea un set di dati utilizzando il comando bq mk:

bq --location=LOCATION mk \
    --dataset \
PROJECT_ID:DATASET_NAME

Il parametro --project_id sostituisce il progetto predefinito.

Sostituisci quanto segue:

  • LOCATION: la posizione del set di dati

    Per informazioni sulle regioni supportate, consulta Località. Dopo aver creato un set di dati, non puoi modificarne la località. Puoi impostare un valore predefinito per la località utilizzando il file .bigqueryrc.

  • PROJECT_ID: il tuo ID progetto

  • DATASET_NAME: il nome del set di dati che vuoi creare

    Per creare un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET_NAME.

Creazione di tabelle BigLake su dati non partizionati

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto, quindi seleziona un set di dati.

  3. Nella sezione Informazioni sul set di dati, fai clic su Crea tabella.

  4. Nella pagina Crea tabella, nella sezione Origine, segui questi passaggi:

    1. In Crea tabella da, seleziona Archiviazione BLOB di Azure.
    2. In Seleziona percorso Archiviazione BLOB di Azure, inserisci un percorso di archiviazione BLOB utilizzando il seguente formato: azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH

      Sostituisci quanto segue:

      • AZURE_STORAGE_ACCOUNT_NAME: il nome dell'account Archiviazione BLOB. La regione dell'account deve essere la stessa del set di dati.
      • CONTAINER_NAME: il nome del container Blob Storage.
      • FILE_PATH: il percorso dati che rimanda ai dati di Archiviazione BLOB. Ad esempio, per un singolo file CSV, FILE_PATH può essere myfile.csv.
    3. In Formato file, seleziona il formato dei dati in Azure. I formati supportati sono AVRO, PARQUET, ORC, CSV e JSONL (JSON delimitato da nuova riga).

  5. Nella sezione Destinazione, procedi nel seguente modo:

    1. In Set di dati, scegli il set di dati appropriato.
    2. Nel campo Tabella, inserisci il nome della tabella.
    3. Verifica che Tipo di tabella sia impostato su Tabella esterna.
    4. In ID connessione, scegli l'ID connessione appropriato dal menu a discesa. Per informazioni sulle connessioni, consulta Connessione all'archiviazione BLOB.
  6. Nella sezione Schema, puoi abilitare il rilevamento automatico dello schema o specificare manualmente uno schema se disponi di un file di origine. Se non hai un file di origine, devi specificare manualmente uno schema.

    • Per attivare il rilevamento automatico dello schema, seleziona l'opzione Rilevamento automatico.

    • Per specificare manualmente uno schema, lascia deselezionata l'opzione Rilevamento automatico. Abilita Modifica come testo e inserisci lo schema della tabella come array JSON.

  7. Fai clic su Crea tabella.

SQL

Per creare una tabella BigLake, utilizza l'istruzione CREATE EXTERNAL TABLE con la clausola WITH CONNECTION:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE EXTERNAL TABLE DATASET_NAME.TABLE_NAME
    WITH CONNECTION `AZURE_LOCATION.CONNECTION_NAME`
      OPTIONS (
        format = 'DATA_FORMAT',
        uris = ['azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH']);
    

    Sostituisci quanto segue:

    • DATASET_NAME: il nome del set di dati che hai creato
    • TABLE_NAME: il nome che vuoi assegnare a questa tabella
    • AZURE_LOCATION: una località Azure in Google Cloud, ad esempio azure-eastus2
    • CONNECTION_NAME: il nome della connessione creata
    • DATA_FORMAT: uno dei formati federati di BigQuery supportati, ad esempio AVRO, CSV o DELTA_LAKE (anteprima)
    • AZURE_STORAGE_ACCOUNT_NAME: il nome dell'account Blob Storage
    • CONTAINER_NAME: il nome del container Archiviazione BLOB
    • FILE_PATH: il percorso dati che rimanda ai dati di Archiviazione BLOB

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

Esempio:

CREATE EXTERNAL TABLE absdataset.abstable
WITH CONNECTION `azure-eastus2.abs-read-conn`
  OPTIONS (
    format = 'CSV', uris = ['azure://account_name.blob.core.windows.net/container/path/file.csv']);

bq

Crea un file di definizione della tabella:

bq mkdef  \
    --source_format=DATA_FORMAT \
    --connection_id=AZURE_LOCATION.CONNECTION_NAME \
    "azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH" > table_def

Sostituisci quanto segue:

  • DATA_FORMAT: uno qualsiasi dei formati federati BigQuery supportati, ad esempio AVRO, CSV o PARQUET, in lettere maiuscole
  • AZURE_LOCATION: una località Azure in Google Cloud, ad esempio azure-eastus2
  • CONNECTION_NAME: il nome della connessione creata
  • AZURE_STORAGE_ACCOUNT_NAME: il nome dell'account Blob Storage
  • CONTAINER_NAME: il nome del container Archiviazione BLOB
  • FILE_PATH: il percorso dati che rimanda ai dati di Archiviazione BLOB

Quindi, crea la tabella BigLake:

bq mk --external_table_definition=table_def DATASET_NAME.TABLE_NAME

Sostituisci quanto segue:

  • DATASET_NAME: il nome del set di dati che hai creato
  • TABLE_NAME: il nome da assegnare a questa tabella

Ad esempio, i comandi seguenti creano una nuova tabella BigLake, my_dataset.my_table, che può eseguire query sui dati di archiviazione BLOB archiviati nel percorso azure://account_name.blob.core.windows.net/container/path e che ha una connessione di lettura nella località azure-eastus2:

bq mkdef \
    --source_format=AVRO \
    --connection_id=azure-eastus2.read-conn \
    "azure://account_name.blob.core.windows.net/container/path" > table_def

bq mk \
    --external_table_definition=table_def my_dataset.my_table

API

Chiama il metodo API del metodo tables.insert e crea un ExternalDataConfiguration nella risorsa Table che passi.

Specifica la proprietà schema o imposta la proprietà autodetect su true per attivare il rilevamento automatico degli schemi per le origini dati supportate.

Specifica la proprietà connectionId per identificare la connessione da utilizzare per la connessione a Blob Storage.

Creazione di tabelle BigLake su dati partizionati

Puoi creare una tabella BigLake per i dati partizionati Hive in Archiviazione BLOB. Dopo aver creato una tabella partizionata esternamente, non puoi modificare la chiave di partizione. Devi ricreare la tabella per modificare la chiave di partizione.

Per creare una tabella BigLake basata su dati partizionati Hive, seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.

  3. Fai clic su Visualizza azioni e poi su Crea tabella. Viene visualizzato il riquadro Crea tabella.

  4. Nella sezione Origine, specifica i seguenti dettagli:

    1. Per Crea tabella da, seleziona una delle seguenti opzioni:

      • Amazon S3
      • Archiviazione BLOB di Azure
    2. Specifica il percorso della cartella utilizzando caratteri jolly. Ad esempio:

      • Per Amazon S3: s3://mybucket/*
      • Per l'archiviazione BLOB: azure://mystorageaccount.blob.core.windows.net/mycontainer/*

      La cartella deve trovarsi nella stessa posizione del set di dati contenente la tabella che vuoi creare, aggiungere o sovrascrivere.

    3. Nell'elenco Formato file, seleziona il tipo di file.

    4. Seleziona la casella di controllo Partizionamento dei dati di origine e specifica i seguenti dettagli:

      1. In Seleziona prefisso URI di origine, inserisci il prefisso URI. Ad esempio, s3://mybucket/my_files.
      2. (Facoltativo) Per richiedere un filtro di partizionamento su tutte le query per questa tabella, seleziona la casella di controllo Richiedi filtro di partizionamento. La richiesta di un filtro di partizionamento può ridurre i costi e migliorare le prestazioni. Per maggiori informazioni, consulta Richiedere filtri dei predicati sulle chiavi di partizione nelle query.
      3. Nella sezione Modalità di inferenza partizione, seleziona una delle seguenti opzioni:

        • Deduci automaticamente i tipi: imposta la modalità di rilevamento dello schema di partizione su AUTO.
        • Tutte le colonne sono stringhe: imposta la modalità di rilevamento dello schema di partizione su STRINGS.
        • Fornisci un'opzione personalizzata: imposta la modalità di rilevamento dello schema di partizione su CUSTOM e inserisci manualmente le informazioni sullo schema per le chiavi di partizione. Per maggiori informazioni, consulta Fornire uno schema di chiavi di partizione personalizzato.
  5. Nella sezione Destinazione, specifica i seguenti dettagli:

    1. In Progetto, seleziona il progetto in cui vuoi creare la tabella.
    2. In Set di dati, seleziona il set di dati in cui vuoi creare la tabella.
    3. In Tabella, inserisci il nome della tabella che vuoi creare.
    4. Per Tipo di tabella, verifica che sia selezionata l'opzione Tabella esterna.
    5. Per ID connessione, seleziona la connessione creata in precedenza.
  6. Nella sezione Schema, puoi abilitare il rilevamento automatico dello schema o specificare manualmente uno schema se disponi di un file di origine. Se non hai un file di origine, devi specificare manualmente uno schema.

    • Per attivare il rilevamento automatico dello schema, seleziona l'opzione Rilevamento automatico.

    • Per specificare manualmente uno schema, lascia deselezionata l'opzione Rilevamento automatico. Abilita Modifica come testo e inserisci lo schema della tabella come array JSON.

  7. Per ignorare le righe con valori di colonna aggiuntivi che non corrispondono allo schema, espandi la sezione Opzioni avanzate e seleziona Valori sconosciuti.

  8. Fai clic su Crea tabella.

SQL

Utilizza l'istruzione DDL CREATE EXTERNAL TABLE:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
    WITH PARTITION COLUMNS
    (
      PARTITION_COLUMN PARTITION_COLUMN_TYPE,
    )
    WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS (
      hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX",
      uris=['FILE_PATH'],
      format ="TABLE_FORMAT"
    );
    

    Sostituisci quanto segue:

    • PROJECT_ID: il nome del progetto in cui vuoi creare la tabella, ad esempio myproject
    • DATASET: il nome del set di dati BigQuery in cui vuoi creare la tabella, ad esempio mydataset
    • EXTERNAL_TABLE_NAME: il nome della tabella che vuoi creare, ad esempio mytable
    • PARTITION_COLUMN: il nome della colonna di partizionamento
    • PARTITION_COLUMN_TYPE: il tipo di colonna di partizionamento
    • REGION: la regione che contiene la connessione, ad esempio us
    • CONNECTION_ID: il nome della connessione, ad esempio myconnection
    • HIVE_PARTITION_URI_PREFIX: prefisso hive per il partizionamento dell'URI, ad esempio:

      • s3://mybucket/
      • azure://mystorageaccount.blob.core.windows.net/mycontainer/
    • FILE_PATH: percorso dell'origine dati per la tabella esterna che vuoi creare, ad esempio:

      • s3://mybucket/*.parquet
      • azure://mystorageaccount.blob.core.windows.net/mycontainer/*.parquet
    • TABLE_FORMAT: il formato della tabella che vuoi creare, ad esempio PARQUET

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

Esempi

L'esempio seguente crea una tabella BigLake in più dati partizionati in Amazon S3. Lo schema viene rilevato automaticamente.

CREATE EXTERNAL TABLE `my_dataset.my_table`
WITH PARTITION COLUMNS
(
  sku STRING,
)
WITH CONNECTION `us.my-connection`
OPTIONS(
  hive_partition_uri_prefix = "s3://mybucket/products",
  uris = ['s3://mybucket/products/*']
);

L'esempio seguente crea una tabella BigLake con dati partizionati in eccesso in Archiviazione BLOB. Lo schema è specificato.

CREATE EXTERNAL TABLE `my_dataset.my_table`
(
  ProductId INTEGER,
  ProductName, STRING,
  ProductType, STRING
)
WITH PARTITION COLUMNS
(
  sku STRING,
)
WITH CONNECTION `us.my-connection`
OPTIONS(
  hive_partition_uri_prefix = "azure://mystorageaccount.blob.core.windows.net/mycontainer/products",
  uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/*']
);

bq

Innanzitutto, utilizza il comando bq mkdef per creare un file di definizione di tabella:

bq mkdef \
--source_format=SOURCE_FORMAT \
--connection_id=REGION.CONNECTION_ID \
--hive_partitioning_mode=PARTITIONING_MODE \
--hive_partitioning_source_uri_prefix=URI_SHARED_PREFIX \
--require_hive_partition_filter=BOOLEAN \
 URIS > DEFINITION_FILE

Sostituisci quanto segue:

  • SOURCE_FORMAT: il formato dell'origine dati esterna. Ad esempio, CSV.
  • REGION: la regione che contiene la connessione, ad esempio us.
  • CONNECTION_ID: il nome della connessione, ad esempio myconnection.
  • PARTITIONING_MODE: la modalità di partizionamento Hive. Utilizza uno dei seguenti valori:
    • AUTO: rileva automaticamente i nomi e i tipi di chiavi.
    • STRINGS: converte automaticamente i nomi delle chiavi in stringhe.
    • CUSTOM: codifica lo schema della chiave nel prefisso dell'URI di origine.
  • URI_SHARED_PREFIX: il prefisso dell'URI di origine.
  • BOOLEAN: specifica se richiedere un filtro predicato al momento della query. Questo flag è facoltativo. Il valore predefinito è false.
  • URIS: il percorso della cartella Amazon S3 o dell'archiviazione BLOB, utilizzando il formato con caratteri jolly.
  • DEFINITION_FILE: il percorso del file di definizione della tabella sulla macchina locale.

Se PARTITIONING_MODE è CUSTOM, includi lo schema della chiave di partizione nel prefisso dell'URI di origine utilizzando il seguente formato:

--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...

Dopo aver creato il file di definizione della tabella, utilizza il comando bq mk per creare la tabella BigLake:

bq mk --external_table_definition=DEFINITION_FILE \
DATASET_NAME.TABLE_NAME \
SCHEMA

Sostituisci quanto segue:

  • DEFINITION_FILE: il percorso del file di definizione della tabella.
  • DATASET_NAME: il nome del set di dati che contiene la tabella.
  • TABLE_NAME: il nome della tabella che stai creando.
  • SCHEMA: specifica il percorso di un file di schema JSON oppure specifica lo schema nel modulo field:data_type,field:data_type,.... Per utilizzare il rilevamento automatico dello schema, ometti questo argomento.

Esempi

L'esempio seguente utilizza la modalità di partizionamento Hive AUTO per i dati di Amazon S3:

bq mkdef --source_format=CSV \
  --connection_id=us.my-connection \
  --hive_partitioning_mode=AUTO \
  --hive_partitioning_source_uri_prefix=s3://mybucket/myTable \
  --metadata_cache_mode=AUTOMATIC \
  s3://mybucket/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

L'esempio seguente utilizza la modalità di partizionamento Hive STRING per i dati di Amazon S3:

bq mkdef --source_format=CSV \
  --connection_id=us.my-connection \
  --hive_partitioning_mode=STRING \
  --hive_partitioning_source_uri_prefix=s3://mybucket/myTable \
  s3://mybucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

L'esempio seguente utilizza la modalità di partizionamento Hive CUSTOM per i dati di archiviazione BLOB:

bq mkdef --source_format=CSV \
  --connection_id=us.my-connection \
  --hive_partitioning_mode=CUSTOM \
  --hive_partitioning_source_uri_prefix=azure://mystorageaccount.blob.core.windows.net/mycontainer/{dt:DATE}/{val:STRING} \
  azure://mystorageaccount.blob.core.windows.net/mycontainer/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

API

Per impostare il partizionamento Hive utilizzando l'API BigQuery, includi l'oggetto hivePartitioningOptions nell'oggetto ExternalDataConfiguration quando crei il file di definizione della tabella. Per creare una tabella BigLake, devi anche specificare un valore per il campo connectionId.

Se imposti il campo hivePartitioningOptions.mode su CUSTOM, devi codificare lo schema della chiave di partizione nel campo hivePartitioningOptions.sourceUriPrefix come segue: s3://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...

Per forzare l'utilizzo di un filtro predicato al momento della query, imposta il campo hivePartitioningOptions.requirePartitionFilter su true.

Tabelle Delta Lake

Per registrarti a questa anteprima, compila il seguente modulo.

Per richiedere feedback o assistenza per questa funzionalità, invia un'email all'indirizzo bq-federated-formats@google.com.

Delta Lake è un formato di tabelle open source che supporta tabelle di dati su scala petabyte. Puoi eseguire query sulle tabelle Delta Lake come tabelle sia temporanee che permanenti ed è supportata come tabella BigLake.

Sincronizzazione schemi

Delta Lake mantiene uno schema canonico come parte dei propri metadati. Non puoi aggiornare uno schema utilizzando un file di metadati JSON. Per aggiornare lo schema:

  1. Utilizza il comando bq update con il flag --autodetect_schema:

    bq update --autodetect_schema
    PROJECT_ID:DATASET.TABLE
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto contenente la tabella da aggiornare

    • DATASET: il set di dati contenente la tabella da aggiornare

    • TABLE: la tabella da aggiornare

Conversione del tipo

BigQuery converte i tipi di dati del Delta Lake nei seguenti tipi di dati BigQuery:

Tipo di lago delta Tipo BigQuery
boolean BOOL
byte INT64
int INT64
long INT64
float FLOAT64
double FLOAT64
Decimal(P/S) NUMERIC o BIG_NUMERIC a seconda della 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

Alle tabelle del Delta Lake si applicano le seguenti limitazioni:

  • Alle tabelle Delta Lake si applicano limitazioni delle tabelle esterne.

  • Le tabelle Delta Lake sono supportate solo su BigQuery Omni e hanno le limitazioni associate.

  • Non puoi aggiornare una tabella con un nuovo file di metadati JSON. Devi utilizzare un'operazione di aggiornamento della tabella dello schema di rilevamento automatico. Per ulteriori informazioni, consulta Sincronizzazione schema.

  • Le funzionalità di sicurezza di BigLake proteggono le tabelle Delta Lake solo se vi si accede tramite i servizi BigQuery.

Crea una tabella del Delta Lake

L'esempio seguente crea una tabella esterna utilizzando l'istruzione CREATE EXTERNAL TABLE con il formato delta lake:

CREATE [OR REPLACE] EXTERNAL TABLE table_name
WITH CONNECTION connection_name
OPTIONS (
         format = 'DELTA_LAKE',
         uris = ["parent_directory"]
       );

Sostituisci quanto segue:

  • table_name: il nome della tabella.

  • connection_name: il nome della connessione. La connessione deve identificare un'origine Amazon S3 o Blob Storage.

  • parent_directory: l'URI della directory padre.

Trasferimento tra cloud con Delta Lake

L'esempio seguente utilizza l'istruzione LOAD DATA per caricare i dati nella tabella appropriata:

LOAD DATA [INTO | OVERWRITE] table_name
FROM FILES (
        format = 'DELTA_LAKE',
        uris = ["parent_directory"]
)
WITH CONNECTION connection_name;

Per altri esempi di trasferimenti di dati tra cloud, consulta Caricare dati con operazioni tra cloud.

Esegui query sulle tabelle BigLake

Per maggiori informazioni, consulta Query sui dati di archiviazione BLOB.

Visualizza i metadati delle risorse con INFORMATION_SCHEMA

Puoi visualizzare i metadati delle risorse con le viste INFORMATION_SCHEMA. Quando esegui una query sulle viste JOBS_BY_*, JOBS_TIMELINE_BY_* e RESERVATION*, devi specificare la località di elaborazione della query che si trova nella regione della tabella. Per informazioni sulle località di BigQuery Omni, consulta Località. Per tutte le altre tabelle di sistema, specificare la località del job della query è facoltativo.

Per informazioni sulle tabelle di sistema supportate da BigQuery Omni, consulta Limitazioni.

Per eseguire query sulle tabelle di sistema JOBS_* e RESERVATION*, seleziona uno dei seguenti metodi per specificare la località di elaborazione:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Se la scheda Editor non è visibile, fai clic su Crea nuova query.

  3. Fai clic su Altro > Impostazioni query. Viene visualizzata la finestra di dialogo Impostazioni query.

  4. Nella finestra di dialogo Impostazioni query, in Impostazioni aggiuntive > Località dei dati, seleziona la regione di BigQuery che si trova nella regione di BigQuery Omni. Ad esempio, se la tua regione BigQuery Omni è aws-us-east-1, specifica us-east4.

  5. Seleziona i campi rimanenti e fai clic su Salva.

bq

Utilizza il flag --location per impostare la località di elaborazione del job sulla regione BigQuery associata alla regione BigQuery Omni. Ad esempio, se la tua regione BigQuery Omni è aws-us-east-1, specifica us-east4.

Esempio

bq query --use_legacy_sql=false --location=us-east4 \
"SELECT * FROM region-azure-eastus2.INFORMATION_SCHEMA.JOBS limit 10;"

API

Se esegui job in modo programmatico, imposta l'argomento località sulla regione BigQuery collocata con la regione BigQuery Omni. Ad esempio, se la tua regione BigQuery Omni è aws-us-east-1, specifica us-east4.

Controlli di servizio VPC

Puoi utilizzare i perimetri Controlli di servizio VPC per limitare l'accesso da BigQuery Omni a un servizio cloud esterno come ulteriore livello di difesa. Ad esempio, i perimetri Controlli di servizio VPC possono limitare le esportazioni dalle tabelle BigQuery Omni a uno specifico bucket Amazon S3 o a un container Archiviazione BLOB.

Per saperne di più sui Controlli di servizio VPC, consulta la Panoramica dei Controlli di servizio VPC.

Autorizzazione obbligatoria

Assicurati di disporre delle autorizzazioni necessarie per configurare i perimetri di servizio. Per visualizzare un elenco dei ruoli IAM necessari per configurare i Controlli di servizio VPC, consulta Controllo dell'accesso con IAM nella documentazione dei Controlli di servizio VPC.

Configurare i Controlli di servizio VPC utilizzando la console Google Cloud

  1. Nel menu di navigazione della console Google Cloud, fai clic su Sicurezza, quindi su Controlli di servizio VPC.

    Vai a Controlli di servizio VPC

  2. Per configurare i Controlli di servizio VPC per BigQuery Omni, segui i passaggi nella guida Creare un perimetro di servizio e, quando ti trovi nel riquadro Regole in uscita, segui questi passaggi:

    1. Nel riquadro Regole in uscita, fai clic su Aggiungi regola.

    2. Nella sezione Da attributi del client API, seleziona un'opzione dall'elenco Identità.

    3. Seleziona Agli attributi delle risorse esterne.

    4. Per aggiungere una risorsa esterna, fai clic su Aggiungi risorse esterne.

    5. Nella finestra di dialogo Aggiungi risorsa esterna, per Nome risorsa esterna, inserisci un nome valido. Ad esempio:

      • Per Amazon Simple Storage Service (Amazon S3): s3://BUCKET_NAME

        Sostituisci BUCKET_NAME con il nome del tuo bucket Amazon S3.

      • Per Archiviazione BLOB di Azure: azure://myaccount.blob.core.windows.net/CONTAINER_NAME

        Sostituisci CONTAINER NAME con il nome del tuo container Blob Storage.

      Per un elenco degli attributi delle regole in uscita, consulta Riferimento alle regole in uscita.

    6. Seleziona i metodi da consentire per le risorse esterne:

      1. Se vuoi consentire tutti i metodi, seleziona Tutti i metodi nell'elenco Metodi.
      2. Se vuoi consentire metodi specifici, seleziona Metodo selezionato, fai clic su Seleziona metodi e poi seleziona quelli che vuoi consentire per le risorse esterne.
    7. Fai clic su Crea perimetro.

Configura i Controlli di servizio VPC utilizzando gcloud CLI

Per configurare i Controlli di servizio VPC utilizzando gcloud CLI, segui questi passaggi:

  1. Imposta il criterio di accesso predefinito.
  2. Crea il file di input del criterio in uscita.
  3. Aggiungi il criterio in uscita.

Impostare il criterio di accesso predefinito

Un criterio di accesso è un container a livello dell'organizzazione per livelli di accesso e perimetri di servizio. Per informazioni su come impostare un criterio di accesso predefinito o su come ottenere un nome di criterio di accesso, vedi Gestire un criterio di accesso.

Crea il file di input del criterio in uscita

Un blocco di regole in uscita definisce l'accesso consentito dall'interno di un perimetro alle risorse all'esterno di quel perimetro. Per le risorse esterne, la proprietà externalResources definisce i percorsi delle risorse esterne a cui è consentito l'accesso dall'interno del perimetro dei Controlli di servizio VPC.

Le regole in uscita possono essere configurate tramite un file JSON o un file YAML. Il seguente esempio utilizza il formato .yaml:

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
      *OR*
      - permission: "externalResource.read"
    externalResources:
      - EXTERNAL_RESOURCE_PATH
  egressFrom:
    identityType: IDENTITY_TYPE
    *OR*
    identities:
    - serviceAccount:SERVICE_ACCOUNT
  • egressTo: elenca le operazioni di servizio consentite sulle risorse Google Cloud in progetti specificati all'esterno del perimetro.

  • operations: elenca i servizi e le azioni o i metodi accessibili a cui un cliente che soddisfa le condizioni di blocco from è autorizzato ad accedere.

  • serviceName: imposta bigquery.googleapis.com per BigQuery Omni.

  • methodSelectors: elenca i metodi a cui può accedere un client che soddisfa le condizioni from. Per i metodi e le autorizzazioni soggetti a limitazioni per i servizi, vedi Limitazioni dei metodi di servizio supportati.

  • method : un metodo di servizio valido oppure \"*\" per consentire tutti i metodi serviceName.

  • permission: un'autorizzazione di servizio valida, come \"*\", externalResource.read o externalResource.write. L'accesso alle risorse all'esterno del perimetro è consentito per le operazioni che richiedono questa autorizzazione.

  • externalResources: elenca le risorse esterne a cui possono accedere i client all'interno di un perimetro. Sostituisci EXTERNAL_RESOURCE_PATH con un bucket Amazon S3 valido, come s3://bucket_name, oppure con un percorso del container Blob Storage, come azure://myaccount.blob.core.windows.net/container_name.

  • egressFrom: elenca le operazioni di servizio consentite sulle risorse Google Cloud in progetti specificati all'interno del perimetro.

  • identityType o identities: definisce i tipi di identità che possono accedere alle risorse specificate al di fuori del perimetro. Sostituisci IDENTITY_TYPE con uno dei seguenti valori validi:

    • ANY_IDENTITY: per consentire tutte le identità.
    • ANY_USER_ACCOUNT: per autorizzare tutti gli utenti.
    • ANY_SERVICE_ACCOUNT: per consentire tutti gli account di servizio
  • identities: elenca gli account di servizio che possono accedere alle risorse specificate all'esterno del perimetro.

  • serviceAccount (facoltativo): sostituisci SERVICE_ACCOUNT con l'account di servizio che può accedere alle risorse specificate al di fuori del perimetro.

Esempi

L'esempio seguente è un criterio che consente le operazioni in uscita dall'interno del perimetro verso la località s3://mybucket Amazon S3 in AWS.

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - s3://mybucket
      - s3://mybucket2
  egressFrom:
    identityType: ANY_IDENTITY

L'esempio seguente consente le operazioni in uscita verso un container di archiviazione BLOB:

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - azure://myaccount.blob.core.windows.net/mycontainer
  egressFrom:
    identityType: ANY_IDENTITY

Per ulteriori informazioni sui criteri in uscita, consulta Riferimento alle regole in uscita.

Aggiungi il criterio in uscita

Per aggiungere il criterio in uscita quando crei un nuovo perimetro di servizio, utilizza il comando gcloud access-context-manager perimeters create. Ad esempio, il comando seguente crea un nuovo perimetro denominato omniPerimeter che include il progetto con il numero di progetto 12345, limita l'API BigQuery e aggiunge un criterio in uscita definito nel file egress.yaml:

gcloud access-context-manager perimeters create omniPerimeter \
    --title="Omni Perimeter" \
    --resources=projects/12345 \
    --restricted-services=bigquery.googleapis.com \
    --egress-policies=egress.yaml

Per aggiungere il criterio in uscita a un perimetro di servizio esistente, utilizza il comando gcloud access-context-manager perimeters update. Ad esempio, il seguente comando aggiunge un criterio in uscita definito nel file egress.yaml a un perimetro di servizio esistente denominato omniPerimeter:

gcloud access-context-manager perimeters update omniPerimeter
    --set-egress-policies=egress.yaml

Verifica il tuo perimetro

Per verificare il perimetro, utilizza il comando gcloud access-context-manager perimeters describe:

gcloud access-context-manager perimeters describe PERIMETER_NAME

Sostituisci PERIMETER_NAME con il nome del perimetro.

Ad esempio, il comando seguente descrive il perimetro omniPerimeter:

gcloud access-context-manager perimeters describe omniPerimeter

Per maggiori informazioni, consulta Gestione dei perimetri di servizio.

Limitazioni

Per un elenco completo delle limitazioni che si applicano alle tabelle BigLake basate su Amazon S3 e Archiviazione BLOB, consulta Limitazioni.

Passaggi successivi