crea tabelle esterne di Cloud Storage
BigQuery supporta l'esecuzione di query sui dati di Cloud Storage in seguenti formati:
- Valori separati da virgola (CSV)
- JSON (delimitato da nuova riga)
- Avro
- ORC
- Parquet
- Esportazioni di Datastore
- Esportazioni Firestore
BigQuery supporta l'esecuzione di query sui dati di Cloud Storage da questi classi di archiviazione:
- Standard
- Nearline
- Coldline
- Archivia
Per eseguire query su una tabella esterna di Cloud Storage, devi disporre delle autorizzazioni sia sulla tabella esterna che sui file Cloud Storage. I nostri suggerimenti viene utilizzata una tabella BigLake se possibile. Le tabelle BigLake forniscono una delega di accesso, in modo che hai bisogno delle autorizzazioni solo per la tabella BigLake per eseguire query per accedere ai dati di Cloud Storage.
Assicurati di considerare la posizione. del set di dati e del bucket Cloud Storage quando esegui query sui dati di archiviazione ideale in Cloud Storage.
Prima di iniziare
Concedi ruoli IAM (Identity and Access Management) che concedono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento. Le eventuali autorizzazioni necessarie per eseguire un'attività sono elencate nella sezione "Autorizzazioni obbligatorie" dell'attività.
Ruoli obbligatori
Per creare una tabella esterna, è necessario bigquery.tables.create
Autorizzazione Identity and Access Management (IAM) BigQuery.
Ciascuno dei seguenti ruoli predefiniti di Identity and Access Management include questa autorizzazione:
- Editor dati BigQuery (
roles/bigquery.dataEditor
) - Proprietario dati BigQuery (
roles/bigquery.dataOwner
) - Amministratore BigQuery (
roles/bigquery.admin
)
Devi disporre anche delle autorizzazioni seguenti per accedere all'app Cloud Storage che contiene i tuoi dati:
storage.buckets.get
storage.objects.get
storage.objects.list
(obbligatorio se utilizzi un carattere jolly per l'URI)
Amministratore Cloud Storage (roles/storage.admin
)
predefinito di Identity and Access Management include queste autorizzazioni.
Se non sei un'entità in uno di questi ruoli, chiedi all'amministratore per concederti l'accesso o per creare la tabella esterna per te.
Per ulteriori informazioni su ruoli e autorizzazioni di Identity and Access Management in BigQuery, vedi Ruoli e ruoli predefiniti autorizzazioni.
Ambiti di accesso per le istanze Compute Engine
Se, da un'istanza Compute Engine, devi eseguire una query su una tabella esterna
collegato a un'origine Cloud Storage, l'istanza deve avere almeno
Ambito di accesso di sola lettura a Cloud Storage
(https://www.googleapis.com/auth/devstorage.read_only
).
Gli ambiti controllano l'accesso dell'istanza Compute Engine a Google Cloud tra cui Cloud Storage. Le applicazioni in esecuzione sull'istanza utilizzano l'account di servizio collegato all'istanza per chiamare le API Google Cloud.
Se configuri un'istanza Compute Engine per l'esecuzione come
account di servizio Compute Engine predefinito,
all'istanza viene concesso per impostazione predefinita una serie di ambiti predefiniti,
incluso l'ambito https://www.googleapis.com/auth/devstorage.read_only
.
Se invece configuri l'istanza con un account di servizio personalizzato, assicurati di
concedi esplicitamente l'autorizzazione https://www.googleapis.com/auth/devstorage.read_only
l'ambito di controllo all'istanza.
Per informazioni sull'applicazione di ambiti a un'istanza Compute Engine, consulta Modifica dell'account di servizio e degli ambiti di accesso per un'istanza. Per ulteriori informazioni sugli account di servizio Compute Engine, consulta Account di servizio.
Creare tabelle esterne su dati non partizionati
Per creare una tabella permanente collegata all'origine dati esterna:
- Utilizzo della console Google Cloud
- Utilizzare il comando
bq mk
- Creazione di una
ExternalDataConfiguration
quando utilizzitables.insert
Metodo API - L'esecuzione
CREATE EXTERNAL TABLE
l'istruzione DDL (Data Definition Language). - Utilizzo delle librerie client
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
Espandi
Azioni e fai clic su Crea tabella.Nella sezione Origine, specifica i seguenti dettagli:
Per Crea tabella da, seleziona Google Cloud Storage
In Seleziona un file dal bucket GCS o usa un pattern URI, vai a seleziona il bucket e il file da utilizzare oppure digita il percorso nel formato
gs://bucket_name/[folder_name/]file_name
.Non puoi specificare più URI nella console Google Cloud, ma puoi selezionare più file specificando un asterisco (
*
) carattere jolly. Ad esempio,gs://mybucket/file_name*
. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.Bucket Cloud Storage deve trovarsi nella stessa posizione del set di dati che contiene la tabella che stai creando.
In Formato file, seleziona il formato corrispondente al tuo file.
Nella sezione Destinazione, specifica i seguenti dettagli:
In Progetto, scegli il progetto in cui creare la tabella.
In Set di dati, scegli il set di dati in cui creare la tabella.
In Tabella, inserisci il nome della tabella che stai creando.
Per Tipo di tabella, seleziona Tabella esterna.
Nella sezione Schema, puoi abilitare il rilevamento automatico dello schema o specificare manualmente se hai 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 l'opzione Rilevamento automatico deselezionata. Attiva Modifica come testo e inserisci lo schema della tabella come Array JSON.
Per ignorare le righe con valori di colonna aggiuntivi che non corrispondono allo schema, espandi la sezione Opzioni avanzate e seleziona Valori sconosciuti.
Fai clic su Crea tabella.
Dopo aver creato la tabella permanente, puoi eseguire una query sulla tabella come se si trattasse di una tabella BigQuery nativa. Dopo la query puoi esportare i risultati file CSV o JSON, salva i risultati come tabella o salva i risultati in Fogli Google.
SQL
Puoi creare una tabella esterna permanente eseguendo il comando
CREATE EXTERNAL TABLE
Istruzione DDL.
Puoi specificare lo schema in modo esplicito o utilizzare
rilevamento automatico dello schema per dedurre lo schema
dai dati esterni.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` OPTIONS ( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'[,...]] );
Sostituisci quanto segue:
PROJECT_ID
: il nome del tuo progetto in cui vuoi creare la tabella, ad esempiomyproject
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 esempiomytable
TABLE_FORMAT
: il formato della tabella che che vuoi creare, ad esempioPARQUET
BUCKET_PATH
: il percorso bucket Cloud Storage che contiene i dati per una tabella esterna, nel formato['gs://bucket_name/[folder_name/]file_name']
.Puoi selezionare più file dal bucket specificando un asterisco (
*
) carattere jolly nel percorso. Ad esempio,['gs://mybucket/file_name*']
. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.Puoi specificare più bucket per l'opzione
uris
fornendo più percorsi di addestramento.I seguenti esempi mostrano valori
uris
validi:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Se specifichi i valori
uris
che hanno come target più file, questi i file devono condividere uno schema compatibile.Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.
Esempi
L'esempio seguente utilizza il rilevamento automatico dello schema per creare una tabella esterna
denominato sales
collegato a un file CSV archiviato in Cloud Storage:
CREATE OR REPLACE EXTERNAL TABLE mydataset.sales OPTIONS ( format = 'CSV', uris = ['gs://mybucket/sales.csv']);
L'esempio successivo specifica uno schema in modo esplicito e salta la prima riga in il file CSV:
CREATE OR REPLACE EXTERNAL TABLE mydataset.sales ( Region STRING, Quarter STRING, Total_Sales INT64 ) OPTIONS ( format = 'CSV', uris = ['gs://mybucket/sales.csv'], skip_leading_rows = 1);
bq
Per creare una tabella esterna, utilizza la classe
Comando bq mk
con
--external_table_definition
flag. Questo flag contiene un percorso a un
file di definizione della tabella o un file inline
definizione della tabella.
Opzione 1: file di definizione della tabella
Utilizza la bq mkdef
per creare un file di definizione della tabella, quindi passa il percorso del file
il comando bq mk
come segue:
bq mkdef --source_format=SOURCE_FORMAT \ BUCKET_PATH > DEFINITION_FILE bq mk --table \ --external_table_definition=DEFINITION_FILE \ DATASET_NAME.TABLE_NAME \ SCHEMA
Sostituisci quanto segue:
SOURCE_FORMAT
: il formato dell'origine dati esterna. Ad esempio,CSV
.BUCKET_PATH
: il percorso bucket Cloud Storage che contiene i dati per nel formatogs://bucket_name/[folder_name/]file_pattern
.Puoi selezionare più file dal bucket specificando un asterisco (
*
) carattere jolly nel campofile_pattern
. Ad esempio:gs://mybucket/file00*.parquet
. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.Puoi specificare più bucket per l'opzione
uris
fornendo più percorsi di addestramento.I seguenti esempi mostrano valori
uris
validi:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Se specifichi i valori
uris
che hanno come target più file, questi i file devono condividere uno schema compatibile.Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.
DEFINITION_FILE
: il percorso file di definizione della tabella sul tuo computer locale.DATASET_NAME
: il nome del set di dati che contiene .TABLE_NAME
: il nome della tabella che stai creando.SCHEMA
: specifica un percorso a un File di schema JSON, o specifica lo schema nella formafield:data_type,field:data_type,...
.
Esempio:
bq mkdef --source_format=CSV gs://mybucket/sales.csv > mytable_def
bq mk --table --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
Per utilizzare il rilevamento automatico dello schema, imposta il flag --autodetect=true
nella
mkdef
e ometti lo schema:
bq mkdef --source_format=CSV --autodetect=true \
gs://mybucket/sales.csv > mytable_def
bq mk --table --external_table_definition=mytable_def \
mydataset.mytable
Opzione 2: definizione di una tabella incorporata
Anziché creare un file di definizione della tabella, puoi passare il file
definizione direttamente nel comando bq mk
:
bq mk --table \ --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH \ DATASET_NAME.TABLE_NAME \ SCHEMA
Sostituisci quanto segue:
SOURCE_FORMAT
: il formato dell'origine dati esternaAd esempio,
CSV
.BUCKET_PATH
: il percorso bucket Cloud Storage che contiene i dati per nel formatogs://bucket_name/[folder_name/]file_pattern
.Puoi selezionare più file dal bucket specificando un asterisco (
*
) carattere jolly nel campofile_pattern
. Ad esempio:gs://mybucket/file00*.parquet
. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.Puoi specificare più bucket per l'opzione
uris
fornendo più percorsi di addestramento.I seguenti esempi mostrano valori
uris
validi:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Se specifichi i valori
uris
che hanno come target più file, questi i file devono condividere uno schema compatibile.Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.
DATASET_NAME
: il nome del set di dati che contiene la tabella.TABLE_NAME
: il nome della tabella che stai creando.SCHEMA
: specifica un percorso a un File di schema JSON, o specifica lo schema nella formafield:data_type,field:data_type,...
. Per utilizzare lo schema rilevamento automatico, ometti questo argomento.
Esempio:
bq mkdef --source_format=CSV gs://mybucket/sales.csv > mytable_def
bq mk --table --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
API
Chiama il metodo tables.insert
API e crea un'istanza
ExternalDataConfiguration
nella risorsa Table
che trasmetti.
Specifica la proprietà schema
o imposta la proprietà
Proprietà autodetect
in true
per attivare il rilevamento automatico dello schema per
e origini dati supportate.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Creare tabelle esterne su dati partizionati
Puoi creare una tabella esterna per i dati partizionati Hive che risiedono in di archiviazione ideale in Cloud Storage. Dopo aver creato una tabella partizionata esternamente, non possono cambiare la chiave di partizione. Devi ricreare la tabella per modificare di partizione.
Per creare una tabella esterna per i dati partizionati di Hive, scegli una delle le seguenti opzioni:
Console
Nella console Google Cloud, vai a BigQuery.
- Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
- Fai clic su Visualizza azioni, e poi fai clic su Crea tabella. Viene visualizzato il riquadro Crea tabella.
- Nella sezione Origine, specifica i seguenti dettagli:
- Per Crea tabella da, seleziona Google Cloud Storage.
- In Seleziona file dal bucket Cloud Storage, inserisci il percorso
Cartella di Cloud Storage, utilizzando i caratteri jolly.
Ad esempio:
my_bucket/my_files*
. Il bucket Cloud Storage deve trovarsi stessa posizione del set di dati che contiene la tabella da creare, aggiungere o sovrascrivere. - Seleziona il tipo di file dall'elenco Formato file.
- Seleziona la casella di controllo Partizionamento dei dati di origine, quindi per Seleziona
Prefisso URI di origine, inserisci il prefisso URI Cloud Storage. Ad esempio:
gs://my_bucket/my_files
. - Nella sezione Modalità di inferenza della partizione, seleziona una delle seguenti opzioni
opzioni:
- .
- Induce automaticamente i tipi: imposta la modalità di rilevamento dello schema di partizione
a
AUTO
. - Tutte le colonne sono stringhe: imposta la modalità di rilevamento dello schema di partizione su
STRINGS
. - Fornisci personale: imposta la modalità di rilevamento dello schema di partizione su
CUSTOM
e inserisci manualmente lo schema le informazioni per le chiavi di partizione. Per ulteriori informazioni, vedi Fornisci di una chiave di partizione personalizzata.
- Induce automaticamente i tipi: imposta la modalità di rilevamento dello schema di partizione
a
- (Facoltativo) Per richiedere un filtro di partizione su tutte le query per questa tabella, Seleziona la casella di controllo Richiedi filtro di partizione. Richiesta di una partizione può ridurre i costi e migliorare il rendimento. Per ulteriori informazioni, vedi Richiesta filtri dei predicati sulle chiavi di partizione nelle query.
- Nella sezione Destinazione, specifica i seguenti dettagli:
- .
- In Progetto, seleziona il progetto in cui creare il .
- In Set di dati, seleziona il set di dati in cui creare il .
- In Tabella, inserisci il nome della tabella da creare.
- In Tipo di tabella, seleziona Tabella esterna.
- Nella sezione Schema, inserisci lo schema. definizione di Kubernetes.
- Per attivare il rilevamento automatico dello schema: Seleziona Rilevamento automatico.
- Per ignorare le righe con valori di colonna aggiuntivi che non corrispondono allo schema, espandi la sezione Opzioni avanzate e seleziona Valori sconosciuti.
- Fai clic su Crea tabella.
SQL
Utilizza la
CREATE EXTERNAL TABLE
Istruzione DDL.
L'esempio seguente utilizza il rilevamento automatico delle chiavi di partizione Hive:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH PARTITION COLUMNS OPTIONS ( format = 'SOURCE_FORMAT', uris = ['GCS_URIS'], hive_partition_uri_prefix = 'GCS_URI_SHARED_PREFIX', require_hive_partition_filter = BOOLEAN);
Sostituisci quanto segue:
SOURCE_FORMAT
: il formato dei dati esterni origine dati, ad esempioPARQUET
GCS_URIS
: il percorso di Cloud Storage utilizzando il formato carattere jollyGCS_URI_SHARED_PREFIX
: il prefisso dell'URI di origine senza il carattere jollyBOOLEAN
: se richiedere un filtro dei predicati in l'ora della query. Questo flag è facoltativo. Il valore predefinito èfalse
.
L'esempio seguente utilizza chiavi e tipi di partizione Hive personalizzati elencando
nella clausola WITH PARTITION COLUMNS
:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH PARTITION COLUMNS (PARTITION_COLUMN_LIST) OPTIONS ( format = 'SOURCE_FORMAT', uris = ['GCS_URIS'], hive_partition_uri_prefix = 'GCS_URI_SHARED_PREFIX', require_hive_partition_filter = BOOLEAN);
Sostituisci quanto segue:
PARTITION_COLUMN_LIST
: un elenco di colonne che seguono nello stesso ordine nel percorso della cartella Cloud Storage, nel formato di:
KEY1 TYPE1, KEY2 TYPE2
L'esempio seguente crea una tabella partizionata esternamente. Utilizza lo schema
rilevamento automatico per rilevare sia lo schema dei file sia il partizionamento hive
layout. Se il percorso esterno è
gs://bucket/path/field_1=first/field_2=1/data.parquet
, le colonne di partizione
vengono rilevati come field_1
(STRING
) e field_2
(INT64
).
CREATE EXTERNAL TABLE dataset.AutoHivePartitionedTable WITH PARTITION COLUMNS OPTIONS ( uris = ['gs://bucket/path/*'], format = 'PARQUET', hive_partition_uri_prefix = 'gs://bucket/path', require_hive_partition_filter = false);
L'esempio seguente crea una tabella partizionata esternamente
che specifica le colonne di partizione. Questo esempio presuppone che il file esterno
il percorso ha il pattern gs://bucket/path/field_1=first/field_2=1/data.parquet
.
CREATE EXTERNAL TABLE dataset.CustomHivePartitionedTable WITH PARTITION COLUMNS ( field_1 STRING, -- column order must match the external path field_2 INT64) OPTIONS ( uris = ['gs://bucket/path/*'], format = 'PARQUET', hive_partition_uri_prefix = 'gs://bucket/path', require_hive_partition_filter = false);
bq
Per prima cosa, utilizza
Comando bq mkdef
per
crea un file di definizione della tabella:
bq mkdef \ --source_format=SOURCE_FORMAT \ --hive_partitioning_mode=PARTITIONING_MODE \ --hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX \ --require_hive_partition_filter=BOOLEAN \ GCS_URIS > DEFINITION_FILE
Sostituisci quanto segue:
SOURCE_FORMAT
: il formato dell'origine dati esterna. Ad esempio,CSV
.PARTITIONING_MODE
: la modalità di partizionamento di Hive. Utilizza uno dei seguenti i seguenti valori:AUTO
: rileva automaticamente i nomi e i tipi di chiavi.STRINGS
: converti automaticamente i nomi delle chiavi in stringhe.CUSTOM
: codifica lo schema della chiave nel prefisso dell'URI di origine.
GCS_URI_SHARED_PREFIX
: il prefisso dell'URI di origine.BOOLEAN
: specifica se richiedere un filtro per i predicati nella query nel tempo. Questo flag è facoltativo. Il valore predefinito èfalse
.GCS_URIS
: il percorso della cartella Cloud Storage, utilizzando carattere jolly.DEFINITION_FILE
: il percorso file di definizione della tabella sul tuo in una macchina virtuale.
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 metodo
Comando bq mk
per
crea la tabella esterna:
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 .TABLE_NAME
: il nome della tabella che stai creando.SCHEMA
: specifica un percorso a un File di schema JSON, o specifica lo schema nella formafield:data_type,field:data_type,...
. Per utilizzare lo schema rilevamento automatico, ometti questo argomento.
Esempi
L'esempio seguente utilizza la modalità di partizionamento Hive AUTO
:
bq mkdef --source_format=CSV \
--hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
gs://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 STRING
:
bq mkdef --source_format=CSV \
--hive_partitioning_mode=STRING \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
gs://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
:
bq mkdef --source_format=CSV \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
gs://myBucket/myTable/* > 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 un hivePartitioningOptions nell'oggetto ExternalDataConfiguration quando crei il file di definizione della tabella.
Se imposti il campo hivePartitioningOptions.mode
su CUSTOM
, devi
codificare lo schema della chiave di partizione
hivePartitioningOptions.sourceUriPrefix
come segue:
gs://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Per applicare l'utilizzo di un filtro per i predicati in fase di query, imposta il valore
hivePartitioningOptions.requirePartitionFilter
su true
.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Esegui query su tabelle esterne
Per ulteriori informazioni, vedi Eseguire query sui dati di Cloud Storage in tabelle esterne.
Esegui l'upgrade delle tabelle esterne a BigLake
Puoi eseguire l'upgrade a BigLake delle tabelle basate su Cloud Storage associando la tabella esterna a una connessione. Se vuoi utilizzare memorizzazione nella cache dei metadati con la tabella BigLake, puoi specificare le impostazioni per questo contemporaneamente. Per ottenere dettagli della tabella come il formato e l'URI di origine, consulta Recuperare informazioni sulla tabella.
Per aggiornare una tabella esterna a una tabella BigLake, seleziona una delle le seguenti opzioni:
SQL
Utilizza la
CREATE OR REPLACE EXTERNAL TABLE
Istruzione DDL
per aggiornare una tabella:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE OR REPLACE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH CONNECTION `REGION.CONNECTION_ID` OPTIONS( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
Sostituisci quanto segue:
PROJECT_ID
: il nome del progetto che contiene la tabellaDATASET
: il nome del set di dati che contiene la tabellaEXTERNAL_TABLE_NAME
: il nome del tavolaREGION
: la regione che contiene connessioneCONNECTION_ID
: il nome della connessione per utilizzareTABLE_FORMAT
: il formato utilizzato dalla tabellaNon puoi modificare questa impostazione durante l'aggiornamento della tabella.
BUCKET_PATH
: il percorso bucket Cloud Storage che contiene i dati per una tabella esterna, nel formato['gs://bucket_name/[folder_name/]file_name']
.Puoi selezionare più file dal bucket specificando un asterisco (
*
) carattere jolly nel percorso. Ad esempio,['gs://mybucket/file_name*']
. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.Puoi specificare più bucket per l'opzione
uris
fornendo più percorsi di addestramento.I seguenti esempi mostrano valori
uris
validi:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Se specifichi i valori
uris
che hanno come target più file, questi i file devono condividere uno schema compatibile.Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.
STALENESS_INTERVAL
: specifica se i metadati memorizzati nella cache vengono utilizzati dalle operazioni sulla tabella e l'aggiornamento dei metadati memorizzati nella cache affinché l'operazione usaloPer ulteriori informazioni sulle considerazioni sulla memorizzazione nella cache dei metadati, consulta Memorizzazione nella cache dei metadati per migliorare le prestazioni.
Per disabilitare la memorizzazione nella cache dei metadati, specifica 0. Questa è l'impostazione predefinita.
Per abilitare la memorizzazione nella cache dei metadati, specifica valore letterale intervallo compreso tra 30 minuti e 7 giorni. Ad esempio, specifica
INTERVAL 4 HOUR
per un intervallo di inattività di 4 ore. Con questo valore, le operazioni sulla tabella utilizzano i metadati memorizzati nella cache se è stato aggiornato nelle ultime 4 ore. Se i metadati memorizzati nella cache sia precedente, l'operazione recupera i metadati Cloud Storage.CACHE_MODE
: specifica se i metadati La cache viene aggiornata automaticamente o manualmentePer ulteriori informazioni considerazioni sulla memorizzazione nella cache dei metadati, Memorizzazione nella cache dei metadati per migliorare le prestazioni.
Imposta il valore
AUTOMATIC
affinché la cache dei metadati venga vengono aggiornati a un intervallo definito dal sistema, solitamente compreso tra 30 e 60 minuti.Imposta su
MANUAL
se vuoi aggiornare dei metadati in base a una pianificazione determinata da te. In questo caso, puoi chiamare la procedura di sistemaBQ.REFRESH_EXTERNAL_METADATA_CACHE
per aggiornare nella cache.Devi impostare
CACHE_MODE
seSTALENESS_INTERVAL
è impostato su un valore maggiore maggiore di 0.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.
bq
Utilizza i bq mkdef
e
Comandi bq update
per aggiornare una tabella:
Genera un definizione di una tabella esterna che descrive gli aspetti della tabella da modificare:
bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \ --source_format=TABLE_FORMAT \ --metadata_cache_mode=CACHE_MODE \ "BUCKET_PATH" > /tmp/DEFINITION_FILE
Sostituisci quanto segue:
PROJECT_ID
: il nome del progetto che contiene la connessioneREGION
: la regione che contiene connessioneCONNECTION_ID
: il nome della connessione per utilizzareTABLE_FORMAT
: il formato utilizzato . Non puoi modificare questa impostazione durante l'aggiornamento della tabella.CACHE_MODE
: specifica se i metadati la cache viene aggiornata automaticamente o manualmente. Per ulteriori informazioni considerazioni sulla memorizzazione nella cache dei metadati, Memorizzazione nella cache dei metadati per migliorare le prestazioni.Imposta
AUTOMATIC
per aggiornare la cache dei metadati in un definito dal sistema, di solito tra 30 e 60 minuti.Imposta su
MANUAL
se desideri aggiornare la cache dei metadati su una il piano di controllo da te determinato. In questo caso, puoi chiamare il metodo Procedura di sistema diBQ.REFRESH_EXTERNAL_METADATA_CACHE
per aggiornare nella cache.Devi impostare
CACHE_MODE
seSTALENESS_INTERVAL
è impostato su un valore maggiore di 0.BUCKET_PATH
: il percorso bucket Cloud Storage che contiene i dati per una tabella esterna, nel formatogs://bucket_name/[folder_name/]file_name
.Puoi limitare i file selezionati dal bucket specificando un asterisco (
*
) carattere jolly nel percorso. Ad esempio,gs://mybucket/file_name*
. Per ulteriori informazioni le informazioni, vedi Supporto dei caratteri jolly per gli URI Cloud Storage.Puoi specificare più bucket per l'opzione
uris
fornendo più percorsi di addestramento.I seguenti esempi mostrano valori
uris
validi:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.csv
gs://bucket/path1/*,gs://bucket/path2/file00*
Se specifichi i valori
uris
che hanno come target più file, questi i file devono condividere uno schema compatibile.Per ulteriori informazioni sull'utilizzo degli URI Cloud Storage in per BigQuery, consulta Percorso della risorsa di Cloud Storage.
DEFINITION_FILE
: il nome della tabella di definizione del file che stai creando.
Aggiorna la tabella utilizzando la nuova definizione della tabella esterna:
bq update --max_staleness=STALENESS_INTERVAL \ --external_table_definition=/tmp/DEFINITION_FILE \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME
Sostituisci quanto segue:
STALENESS_INTERVAL
: specifica se i metadati memorizzati nella cache vengono utilizzati dalle operazioni e il grado di attualità dei metadati memorizzati nella cache per l'operazione per utilizzarlo. Per ulteriori informazioni sui metadati considerazioni sulla memorizzazione nella cache, consulta Memorizzazione nella cache dei metadati per migliorare le prestazioni.Per disabilitare la memorizzazione nella cache dei metadati, specifica 0. Questa è l'impostazione predefinita.
Per abilitare la memorizzazione nella cache dei metadati, specifica un intervallo di valori compreso tra 30 minuti e 7 giorni, utilizzando
Y-M D H:M:S
descritto in Tipo di datiINTERVAL
documentazione. Ad esempio, specifica0-0 0 4:0:0
per un 4 di inattività di ora. Con questo valore, le operazioni sulla tabella utilizzano i metadati memorizzati nella cache se è stato aggiornato nelle ultime 4 ore. Se i metadati memorizzati nella cache sia precedente, l'operazione recupera i metadati Cloud Storage.DEFINITION_FILE
: il nome della tabella di definizione che hai creato o aggiornato.PROJECT_ID
: il nome del progetto che contiene la tabellaDATASET
: il nome del set di dati che contiene la tabellaEXTERNAL_TABLE_NAME
: il nome della tabella
Percorso della risorsa di Cloud Storage
Quando crei una tabella esterna basata su un'origine dati Cloud Storage, devi fornire il percorso dei dati.
Il percorso della risorsa Cloud Storage contiene il nome del bucket e
(nome file). Ad esempio, se il bucket Cloud Storage è denominato
mybucket
e il file di dati è denominato myfile.csv
, il percorso della risorsa sarà
gs://mybucket/myfile.csv
.
BigQuery non supporta i percorsi delle risorse di Cloud Storage
che includono più barre consecutive dopo la doppia barra iniziale.
I nomi degli oggetti Cloud Storage possono contenere più barre consecutive ("/")
caratteri. Tuttavia, BigQuery converte più istanze
barre in una singola barra. Ad esempio, il seguente percorso della risorsa,
valido in Cloud Storage, non funziona in BigQuery:
gs://bucket/my//object//name
.
Per recuperare il percorso della risorsa di Cloud Storage:
Apri la console di Cloud Storage.
Vai alla posizione dell'oggetto (file) che contiene i dati di origine.
Fai clic sul nome dell'oggetto.
Si apre la pagina Dettagli oggetto.
Copia il valore fornito nel campo URI gsutil, che inizia con
gs://
.
Supporto dei caratteri jolly per gli URI Cloud Storage
Se i dati sono separati in più file, puoi utilizzare un asterisco (*) carattere jolly per selezionare più file. L'utilizzo del carattere jolly asterisco deve seguire queste regole:
- L'asterisco può essere visualizzato all'interno del nome dell'oggetto o alla fine dell'oggetto .
- L'uso di più asterischi non è supportato. Ad esempio, il percorso
gs://mybucket/fed-*/temp/*.csv
non è valido. - L'utilizzo di un asterisco con il nome del bucket non è supportato.
Esempi:
L'esempio seguente mostra come selezionare tutti i file in tutte le cartelle che iniziano con il prefisso
gs://mybucket/fed-samples/fed-sample
:gs://mybucket/fed-samples/fed-sample*
L'esempio seguente mostra come selezionare solo file con estensione
.csv
nella cartella denominatafed-samples
e in eventuali sottocartelle difed-samples
:gs://mybucket/fed-samples/*.csv
L'esempio seguente mostra come selezionare file con un modello di denominazione
fed-sample*.csv
nella cartella denominatafed-samples
. Questo esempio non seleziona i file nelle sottocartelle difed-samples
.gs://mybucket/fed-samples/fed-sample*.csv
Quando usi lo strumento a riga di comando bq, potresti dover inserire il carattere di escape in alcune piattaforme di terze parti.
Non puoi utilizzare un carattere jolly asterisco per creare tabelle esterne collegate a Esportazioni Datastore o Firestore.
Limitazioni
Per informazioni sulle limitazioni che si applicano alle tabelle esterne, consulta Limitazioni per le tabelle esterne.
Passaggi successivi
- Scopri di più sulle tabelle esterne.
- Scopri di più sulle tabelle BigLake.