Esporta i dati delle tabelle in Cloud Storage
Questa pagina descrive come esportare o estrarre dati dalle tabelle BigQuery in Cloud Storage.
Dopo aver caricato i dati in BigQuery, puoi esportarli in diversi formati. BigQuery può esportare fino a 1 GB di dati in un singolo file. Se esporti più di 1 GB di dati, devi esportare i dati in più file. Quando esporti i dati in più file, le dimensioni dei file variano.
Puoi utilizzare un servizio come Dataflow per leggere i dati da BigQuery anziché esportarli manualmente. Per ulteriori informazioni sull'utilizzo di Dataflow per leggere e scrivere in BigQuery, consulta BigQuery I/O nella documentazione di Apache Beam.
Puoi anche esportare i risultati di una query utilizzando l'istruzione EXPORT DATA
. Puoi utilizzare EXPORT DATA OPTIONS
per esportare le visualizzazioni in Cloud Storage.
Limitazioni per l'esportazione
Quando esporti dati da BigQuery, tieni presente quanto segue:
- Non puoi esportare i dati della tabella in un file locale, in Fogli Google o su Google Drive. L'unica posizione di esportazione supportata è Cloud Storage. Per informazioni sul salvataggio dei risultati delle query, consulta Download e salvataggio dei risultati delle query.
- Puoi esportare fino a 1 GB di dati della tabella in un singolo file. Se esporti più di 1 GB di dati, utilizza un carattere jolly per esportare i dati in più file. Quando esporti i dati in più file, le dimensioni dei file variano. Per limitare le dimensioni del file esportato, puoi partizionare i dati ed esportare ogni partizione.
- Le dimensioni del file generato quando utilizzi l'istruzione
EXPORT DATA
non sono garantite. - Il numero di file generati da un job di esportazione può variare.
- Non puoi esportare dati nidificati e ripetuti in formato CSV. I dati nidificati e ripetuti sono supportati per le esportazioni Avro, JSON e Parquet.
- Quando esporti i dati in formato JSON, i tipi di dati (numero intero) INT64 vengono codificati come stringhe JSON per preservare la precisione a 64 bit quando i dati vengono letti da altri sistemi.
- Non puoi esportare dati da più tabelle in un singolo job di esportazione.
- Non puoi scegliere un tipo di compressione diverso da
GZIP
quando esporti i dati utilizzando la console Google Cloud. - Quando esporti i dati in un bucket Cloud Storage configurato con un criterio di conservazione, BigQuery potrebbe non riuscire a scrivere i file nel bucket. Configura il periodo di conservazione in modo che sia più lungo della durata dei job di esportazione.
- Quando esporti una tabella in formato JSON, i simboli
<
,>
e&
vengono convertiti utilizzando la notazione Unicode\uNNNN
, doveN
è una cifra esadecimale. Ad esempio,profit&loss
diventaprofit\u0026loss
. Questa conversione Unicode viene eseguita per evitare vulnerabilità di sicurezza. - L'ordine dei dati della tabella esportati non è garantito a meno che non utilizzi l'istruzione
EXPORT DATA
e specifichi una clausolaORDER BY
inquery_statement
. - 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ù caratteri barra ("/") consecutivi. Tuttavia, BigQuery converte
più barre consecutive in un'unica barra. Ad esempio, il seguente percorso di risorsa, sebbene valido in Cloud Storage, non funziona in BigQuery:
gs://bucket/my//object//name
. - Non puoi esportare i dati dagli snapshot delle tabelle.
Prima di iniziare
Concedi i ruoli Identity and Access Management (IAM) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento.
Autorizzazioni obbligatorie
Per eseguire le attività in questo documento, devi disporre delle seguenti autorizzazioni.
Autorizzazioni per esportare i dati da una tabella BigQuery
Per esportare i dati da una tabella BigQuery, devi disporre dell'autorizzazione IAM bigquery.tables.export
.
Ciascuno dei seguenti ruoli IAM predefiniti include l'autorizzazione bigquery.tables.export
:
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Autorizzazioni per eseguire un job di esportazione
Per eseguire un job di esportazione, devi disporre dell'autorizzazione IAM bigquery.jobs.create
.
Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per eseguire un job di esportazione:
roles/bigquery.user
roles/bigquery.jobUser
roles/bigquery.admin
Autorizzazioni per scrivere i dati nel bucket Cloud Storage
Per scrivere i dati in un bucket Cloud Storage esistente, devi disporre delle seguenti autorizzazioni IAM:
storage.objects.create
storage.objects.delete
Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per scrivere i dati in un bucket Cloud Storage esistente:
roles/storage.objectAdmin
roles/storage.admin
Per ulteriori informazioni sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.
Considerazioni sulla località
Posiziona i bucket Cloud Storage per l'esportazione dei dati:- Se il set di dati BigQuery si trova nella località multiregionale
EU
, il bucket Cloud Storage contenente i dati esportati deve trovarsi nella stessa località a più regioni o in una località all'interno di più regioni. Ad esempio, se il set di dati BigQuery si trova nella località multiregionaleEU
, il bucket Cloud Storage può trovarsi nella regioneeurope-west1
del Belgio, che si trova all'interno dell'UE.Se il tuo set di dati si trova in
US
(più regioni), puoi esportare i dati in un bucket Cloud Storage in qualsiasi località. - Se il set di dati si trova in una regione, il bucket Cloud Storage deve trovarsi nella stessa regione. Ad
esempio, se il set di dati si trova nella regione di Tokyo
asia-northeast1
, il bucket Cloud Storage non può trovarsi nella regione multiregionaleASIA
.
- Se scegli una risorsa di Regional Storage, come un set di dati BigQuery o un bucket Cloud Storage, sviluppa un piano per la gestione geografica dei tuoi dati.
Per ulteriori informazioni sulle località di Cloud Storage, consulta Località dei bucket nella documentazione di Cloud Storage.
Spostare i dati di BigQuery tra le località
Non puoi modificare la posizione di un set di dati dopo averlo creato, ma puoi crearne una copia. Non puoi spostare un set di dati da una posizione a un'altra, ma puoi spostarlo (ricrearlo) manualmente.
Esporta formati e tipi di compressione
BigQuery supporta i seguenti formati di dati e tipi di compressione per i dati esportati.
Formato dei dati | Tipi di compressione supportati | Dettagli |
---|---|---|
CSV | GZIP | Puoi controllare il delimitatore CSV nei dati esportati utilizzando il flag dello strumento a riga di comando bq I dati nidificati e ripetuti non sono supportati. |
JSON | GZIP | Sono supportati i dati nidificati e ripetuti. |
Avro | SCHIACCIA, ATTACCA | GZIP non è supportato per le esportazioni Avro. Sono supportati i dati nidificati e ripetuti. Consulta Dettagli dell'esportazione Avro. |
Parquet | SNAPPY, GZIP, ZSTD | Sono supportati i dati nidificati e ripetuti. Consulta Dettagli sull'esportazione dei dati. |
Esporta i dati
Puoi esportare i dati delle tabelle in base a:
- Utilizzo della console Google Cloud
- Utilizzo del comando
bq extract
nello strumento a riga di comando bq - Invio di un job
extract
tramite l'API o le librerie client
Esporta dati tabella
Per esportare i dati da una tabella BigQuery:
Console
Apri la pagina BigQuery nella console Google Cloud.
Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic su Esporta e seleziona Esporta in Cloud Storage.
Nella finestra di dialogo Esporta tabella in Google Cloud Storage:
- In Seleziona il percorso di Google Cloud Storage, cerca il bucket, la cartella o il file in cui vuoi esportare i dati.
- In Formato esportazione, scegli il formato dei dati esportati: CSV, JSON (delimitato da nuova riga), Avro o Parquet.
- Per Compressione, seleziona un formato di compressione oppure
None
se non vuoi compressione. - Fai clic su Esporta per esportare la tabella.
Per verificare l'avanzamento del job, guarda nella parte superiore della navigazione per cercare Cronologia dei job per un job di esportazione.
Per esportare le visualizzazioni in Cloud Storage, utilizza l'istruzione EXPORT DATA OPTIONS
.
SQL
Utilizza l'istruzione EXPORT DATA
.
L'esempio seguente esporta i campi selezionati da una tabella denominata mydataset.table1
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'Editor query, inserisci la seguente istruzione:
EXPORT DATA OPTIONS ( uri = 'gs://bucket/folder/*.csv', format = 'CSV', overwrite = true, header = true, field_delimiter = ';') AS ( SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 );
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Utilizza il comando bq extract
con il flag --destination_format
.
(Facoltativo) Fornisci il flag --location
e imposta il valore sulla tua
località.
Altri flag facoltativi includono:
--compression
: il tipo di compressione da utilizzare per i file esportati.--field_delimiter
: il carattere che indica il confine tra le colonne nel file di output per le esportazioni CSV. Sia\t
chetab
sono consentiti per i delimitatori di scheda.--print_header
: se specificato, stampa le righe di intestazione per i formati che hanno intestazione, come CSV.
bq extract --location=location \ --destination_format format \ --compression compression_type \ --field_delimiter delimiter \ --print_header=boolean \ project_id:dataset.table \ gs://bucket/filename.ext
Dove:
- location è il nome della tua località. Il flag
--location
è facoltativo. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, puoi impostare il valore del flag suasia-northeast1
. Puoi impostare un valore predefinito per la località utilizzando il file.bigqueryrc. - format è il formato per i dati esportati:
CSV
,NEWLINE_DELIMITED_JSON
,AVRO
oPARQUET
. - compression_type è un tipo di compressione supportato per il formato dei tuoi dati. Consulta l'articolo Esportare formati e tipi di compressione.
- delimiter è il carattere che indica il confine tra le colonne nelle esportazioni in formato CSV.
\t
etab
sono nomi accettati per la scheda. - boolean è
true
ofalse
. Se il criterio è impostato sutrue
, le righe di intestazione vengono stampate sui dati esportati, se il formato dei dati supporta le intestazioni. Il valore predefinito ètrue
. - project_id è l'ID progetto.
- dataset è il nome del set di dati di origine.
- table è la tabella che stai esportando. Se utilizzi un
decoratore di partizioni,
devi racchiudere il percorso della tabella tra virgolette singole o
eseguire l'escape del carattere
$
. - bucket è il nome del bucket Cloud Storage in cui verranno esportati i dati. Il set di dati BigQuery e il bucket Cloud Storage devono trovarsi nella stessa località.
- filename.ext è il nome e l'estensione del file di dati esportato. Puoi esportare i dati in più file utilizzando i caratteri jolly.
Esempi:
Ad esempio, il comando seguente esporta mydataset.mytable
in un file compresso gzip denominato myfile.csv
. myfile.csv
è archiviato in un bucket Cloud Storage denominato example-bucket
.
bq extract \ --compression GZIP \ 'mydataset.mytable' \ gs://example-bucket/myfile.csv
Il formato di destinazione predefinito è CSV. Per eseguire l'esportazione in JSON o Avro, usa il flag destination_format
e impostalo su NEWLINE_DELIMITED_JSON
o AVRO
. Ad esempio:
bq extract \ --destination_format NEWLINE_DELIMITED_JSON \ 'mydataset.mytable' \ gs://example-bucket/myfile.json
Il seguente comando esporta mydataset.mytable
in un file Avro compresso
utilizzando Snappy. Il nome del file è myfile.avro
. myfile.avro
viene esportato in un bucket Cloud Storage denominato example-bucket
.
bq extract \ --destination_format AVRO \ --compression SNAPPY \ 'mydataset.mytable' \ gs://example-bucket/myfile.avro
Il seguente comando esporta una singola partizione di
mydataset.my_partitioned_table
in un file CSV in Cloud Storage:
bq extract \ --destination_format CSV \ 'mydataset.my_partitioned_table$0' \ gs://example-bucket/single_partition.csv
API
Per esportare i dati, crea un job extract
e compila la configurazione del job.
(Facoltativo) Specifica la tua località nella proprietà location
nella
sezione jobReference
della risorsa job.
Crea un job di estrazione che punta ai dati di origine BigQuery e alla destinazione di Cloud Storage.
Specifica la tabella di origine utilizzando l'oggetto di configurazione
sourceTable
che contiene l'ID progetto, l'ID del set di dati e l'ID della tabella.La proprietà
destination URI(s)
deve essere completa, nel formatogs://bucket/filename.ext
. Ogni URI può contenere un carattere jolly "*" che deve essere dopo il nome del bucket.Specifica il formato dei dati impostando la proprietà
configuration.extract.destinationFormat
. Ad esempio, per esportare un file JSON, imposta questa proprietà sul valoreNEWLINE_DELIMITED_JSON
.Per verificare lo stato del job, chiama jobs.get(job_id) con l'ID del job restituito dalla richiesta iniziale.
- Se
status.state = DONE
, il job è stato completato correttamente. - Se è presente la proprietà
status.errorResult
, la richiesta non è andata a buon fine e l'oggetto includerà informazioni che descrivono l'errore. - Se
status.errorResult
non è presente, il job è stato completato correttamente, anche se potrebbero essersi verificati alcuni errori non irreversibili. Gli errori non irreversibili sono elencati nella proprietàstatus.errors
dell'oggetto job restituito.
- Se
Note dell'API:
Come best practice, genera un ID univoco e passalo come
jobReference.jobId
quando chiamijobs.insert
per creare un job. Questo approccio è più solido in caso di errore di rete perché il client può eseguire il polling o riprovare sull'ID job noto.La chiamata a
jobs.insert
su un determinato ID job è idempotente. In altre parole, puoi riprovare tutte le volte che vuoi per lo stesso ID job e al massimo una di queste operazioni andrà a buon fine.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery C#.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery PHP.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Ruby.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Dettagli esportazione Avro
BigQuery esprime i dati formattati Avro nei seguenti modi:
- I file di esportazione risultanti sono file contenitore Avro.
- Ogni riga BigQuery è rappresentata come un record Avro. I dati nidificati sono rappresentati da oggetti record nidificati.
- I campi
REQUIRED
sono rappresentati come tipi di Avro corrispondenti. Ad esempio, un tipoINTEGER
di BigQuery viene mappato a un tipoLONG
Avro. - I campi
NULLABLE
sono rappresentati come un'unione Avro del tipo corrispondente e "null". - I campi
REPEATED
sono rappresentati come array Avro. - Per impostazione predefinita, i tipi di dati
TIMESTAMP
sono rappresentati come tipo logicotimestamp-micros
(annotazione di un tipo AvroLONG
) sia nell'SQL di estrazione dei job sia nell'SQL di esportazione dei dati. Attenzione: puoi aggiungereuse_avro_logical_types=False
aExport Data Options
per disabilitare il tipo logico in modo che utilizzi il tipostring
anziché nella colonna del timestamp, ma nei job di estrazione utilizza sempre il tipo logico Avro. - Per impostazione predefinita, i tipi di dati
DATE
sono rappresentati come tipo logicodate
(annota i tipi AvroINT
) per impostazione predefinita nell'SQL di esportazione dati, ma sono rappresentati come tipostring
per impostazione predefinita nei job di estrazione. Nota: puoi aggiungereuse_avro_logical_types=False
aExport Data Options
per disabilitare il tipo logico oppure utilizzare il flag--use_avro_logical_types=True
per abilitare il tipo logico in Estrai job.) - Per impostazione predefinita, i tipi di dati
TIME
sono rappresentati come tipo logicotimestamp-micro
(annota i tipi AvroLONG
) per impostazione predefinita nell'SQL di esportazione dati, ma sono rappresentati come tipostring
per impostazione predefinita nei job di estrazione. Nota: puoi aggiungereuse_avro_logical_types=False
aExport Data Options
per disabilitare il tipo logico oppure utilizzare il flag--use_avro_logical_types=True
per abilitare il tipo logico nei job di estrazione. - Per impostazione predefinita, i tipi di dati
DATETIME
sono rappresentati come tipi AvroSTRING
(un tipo di stringa con tipo logico denominato personalizzatodatetime
) nell'SQL di esportazione dei dati, ma sono rappresentati come tipostring
per impostazione predefinita nei job di estrazione. Nota: puoi aggiungereuse_avro_logical_types=False
aExport Data Options
per disabilitare il tipo logico oppure utilizzare il flag--use_avro_logical_types=True
per abilitare il tipo logico in Estrai job.
I tipi di dati NUMERIC(P[, S])
e BIGNUMERIC(P[, S])
parametrizzati trasferiscono i rispettivi parametri di precisione e di tipo di scala al tipo logico decimale Avro.
Il formato Avro non può essere utilizzato in combinazione con la compressione GZIP. Per comprimere i dati Avro, utilizza lo strumento a riga di comando bq o l'API e specifica uno dei tipi di compressione supportati per i dati Avro: DEFLATE
o SNAPPY
.
Dettagli esportazione Parquet
BigQuery converte i tipi di dati GoogleSQL nei seguenti tipi di dati Parquet:
Tipo di dati BigQuery | Tipo primitivo parchetto | Tipo logico Parquet |
---|---|---|
Numero intero | INT64 |
NONE |
Numerico | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 38, scale = 9) |
Numerico(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
BigNumeric | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 76, scale = 38) |
BigNumeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
Virgola mobile | FLOAT |
NONE |
Booleano | BOOLEAN |
NONE |
Stringa | BYTE_ARRAY |
STRING (UTF8) |
Byte | BYTE_ARRAY |
NONE |
Data | INT32 |
DATE |
Data/ora | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Tempo | INT64 |
TIME (isAdjustedToUTC = true, unit = MICROS) |
Timestamp | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Lo schema Parquet rappresenta i dati nidificati come gruppo e i record ripetuti come gruppi ripetuti. Per saperne di più sull'utilizzo di dati nidificati e ripetuti in BigQuery, consulta Specifica delle colonne nidificate e ripetute.
Puoi utilizzare le seguenti soluzioni alternative per i tipi di DATETIME
:
- Carica il file in una tabella temporanea. Poi usa una query SQL per trasmettere il campo a
DATETIME
e salvare il risultato in una nuova tabella. Per ulteriori informazioni, consulta Modifica del tipo di dati di una colonna. - Fornisci uno schema per la tabella utilizzando il flag
--schema
nel job di caricamento. Definisci la colonna data/ora comecol:DATETIME
.
Esportazione dei dati in uno o più file
La proprietà destinationUris
indica una o più posizioni e nomi file in cui BigQuery deve esportare i tuoi file.
BigQuery supporta un singolo operatore con caratteri jolly (*) in ogni URI. Il carattere jolly può comparire ovunque nell'URI, ma non nel nome del bucket. L'utilizzo dell'operatore carattere jolly indica a BigQuery di creare più file con sharding in base al pattern fornito. L'operatore del carattere jolly è sostituito
con un numero (che inizia da 0), con il carattere jolly composto da 12 cifre. Ad esempio, un URI con un carattere jolly alla fine del nome del file creerebbe file con000000000000
accodato al primo file, 000000000001
al secondo file e così via.
La seguente tabella descrive diverse opzioni possibili per la proprietà destinationUris
:
Opzioni per destinationUris |
|
---|---|
URI singolo |
Utilizza un singolo URI se esporti dati della tabella di massimo 1 GB. Questa opzione è il caso d'uso più comune, poiché i dati esportati sono generalmente inferiori al valore massimo di 1 GB. Questa opzione non è supportata per l'
istruzione Definizione di proprietà:
Crea: gs://my-bucket/file-name.json |
URI con carattere jolly singolo |
Utilizza un singolo URI con carattere jolly se pensi che i dati esportati possano superare il valore massimo di 1 GB. BigQuery esegue lo sharding dei dati in più file in base al pattern fornito. Le dimensioni dei file esportati possono variare. Se utilizzi un carattere jolly in un componente URI diverso dal nome del file, assicurati che il componente del percorso non esista prima di esportare i dati. Definizione di proprietà:
Crea: gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ... |
Limita le dimensioni del file esportato
Quando esporti più di 1 GB di dati in una singola esportazione, devi utilizzare un carattere jolly per esportare i dati in più file e le dimensioni dei file variano. Se devi limitare la dimensione massima di ogni file esportato, un'opzione è quella di partizionare in modo casuale i dati ed esportare ogni partizione in un file:
- Determina il numero di partizioni di cui hai bisogno, che corrisponde alla dimensione totale dei dati divisa per la dimensione del file esportato. Ad esempio, se disponi di 8000 MB di dati e vuoi che ogni file esportato abbia una dimensione di circa 20 MB, ti servono 400 partizioni.
Crea una nuova tabella partizionata e raggruppata in cluster in base a una nuova colonna generata casualmente denominata
export_id
. L'esempio seguente mostra come creare un nuovoprocessed_table
da una tabella esistente denominatasource_table
che richieden
partizioni per ottenere le dimensioni di file desiderate:CREATE TABLE my_dataset.processed_table PARTITION BY RANGE_BUCKET(export_id, GENERATE_ARRAY(0, n, 1)) CLUSTER BY export_id AS ( SELECT *, CAST(FLOOR(n*RAND()) AS INT64) AS export_id FROM my_dataset.source_table );
Per ogni numero intero
i
compreso tra 0 en-1
, esegui un'istruzioneEXPORT DATA
sulla seguente query:SELECT * EXCEPT(export_id) FROM my_dataset.processed_table WHERE export_id = i;
Estrai tabella compressa
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Caso d'uso di esempio
Questo esempio mostra come esportare i dati in Cloud Storage.
Supponiamo che tu stia inviando in modo continuo i flussi di dati a Cloud Storage dai log degli endpoint. Uno snapshot giornaliero deve essere esportato in Cloud Storage a scopo di backup e archiviazione. La scelta migliore è un job di estrazione soggetto a determinate quotas e limitazioni.
Invia un job di estrazione con l'API o le librerie client, inserendo un ID univoco come jobReference.jobId
. I job di estrazione sono
asincroni.
Controlla lo stato del job utilizzando l'ID job univoco utilizzato per creare il job. Il job è stato completato correttamente
se status.status
è DONE
. Se è presente status.errorResult
, il job non è riuscito e deve essere riprovato.
Elaborazione dei dati in batch
Supponiamo che venga utilizzato un job batch notturno per caricare i dati entro una scadenza fissa. Al termine di questo job di caricamento, viene creata una tabella con statistiche a partire da una query, come descritto nella sezione precedente. I dati di questa tabella vengono recuperati, compilati in un report PDF, e inviati a un ente regolatore.
Poiché la quantità di dati da leggere è ridotta, utilizza l'API tabledata.list
per recuperare tutte le righe della tabella nel formato del dizionario JSON. Se è
presente più di una pagina di dati, i risultati hanno la proprietà pageToken
impostata. Per recuperare la pagina dei risultati successiva, effettua un'altra chiamata tabledata.list
e includi il valore del token come parametro pageToken
. Se la chiamata API ha esito negativo e restituisce un errore 5xx, riprova con un backoff esponenziale. La maggior parte degli errori 4xx non è irreversibile. Per
disaccoppiare meglio l'esportazione in BigQuery e la generazione dei report,
i risultati devono essere salvati in modo permanente su disco.
Criteri per le quote
Per informazioni sulle quote dei job di esportazione, vedi Job di esportazione nella pagina Quote e limiti.
L'utilizzo per i job di esportazione è disponibile in INFORMATION_SCHEMA
.
La voce del job nelle tabelle di sistema JOBS_BY_*
per il job di esportazione contiene un valore total_processed_bytes
che può essere utilizzato per monitorare l'utilizzo aggregato e assicurare che rimanga al di sotto dei 50 TB al giorno. Per scoprire come eseguire query sulla vista INFORMATION_SCHEMA.JOBS
per ottenere il valore total_processed_bytes
, consulta Ottenere i byte elaborati dai job di esportazione
Visualizza l'utilizzo attuale della quota
Puoi visualizzare il tuo utilizzo attuale dei job di query, caricamento, estrazione o copia eseguendo una query INFORMATION_SCHEMA
per visualizzare i metadati relativi ai job eseguiti in un periodo di tempo specificato. Puoi confrontare l'utilizzo attuale con il limite di quota per determinare l'utilizzo della quota per un determinato tipo di job. La seguente query di esempio utilizza la vista INFORMATION_SCHEMA.JOBS
per elencare il numero di job di query, caricamento, estrazione e copia per progetto:
SELECT sum(case when job_type="QUERY" then 1 else 0 end) as QRY_CNT, sum(case when job_type="LOAD" then 1 else 0 end) as LOAD_CNT, sum(case when job_type="EXTRACT" then 1 else 0 end) as EXT_CNT, sum(case when job_type="COPY" then 1 else 0 end) as CPY_CNT FROM `region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE date(creation_time)= CURRENT_DATE()
Puoi configurare un criterio di avviso di Cloud Monitoring che fornisca una notifica sul numero di byte esportati.
Nella console Google Cloud, vai alla pagina Monitoring.
Nel riquadro di navigazione, seleziona Metrics Explorer.
Nell'editor di query MQL, configura un avviso per monitorare i byte esportati al giorno, come mostrato nell'esempio seguente:
fetch consumer_quota | filter resource.service == 'bigquery.googleapis.com' | { metric serviceruntime.googleapis.com/quota/rate/net_usage | align delta_gauge(1m) | group_by [resource.project_id, metric.quota_metric, resource.location], sum(value.net_usage) ; metric serviceruntime.googleapis.com/quota/limit | filter metric.limit_name == 'ExtractBytesPerDay' | group_by [resource.project_id, metric.quota_metric, resource.location], sliding(1m), max(val()) } | ratio | every 1m | condition gt(val(), 0.01 '1')
Per configurare l'avviso, fai clic su Esegui query.
Per saperne di più, consulta Criteri di avviso con MQL.
Prezzi
Per informazioni sui prezzi dell'esportazione dei dati, consulta la pagina Prezzi di BigQuery.
Una volta esportati i dati, ti verrà addebitato il costo di archiviazione dei dati in Cloud Storage. Per ulteriori informazioni, consulta la pagina relativa ai prezzi di Cloud Storage.
Sicurezza della tabella
Per controllare l'accesso alle tabelle in BigQuery, consulta Introduzione ai controlli di accesso alle tabelle.
Passaggi successivi
- Per scoprire di più sulla console Google Cloud, consulta Utilizzo della console Google Cloud.
- Per scoprire di più sullo strumento a riga di comando bq, consulta Utilizzo dello strumento a riga di comando bq.
- Per scoprire come creare un'applicazione utilizzando le librerie client dell'API BigQuery, consulta la guida rapida sulle librerie client.