Esporta i dati della tabella in Cloud Storage
Questa pagina descrive come esportare o estrarre i dati dalle tabelle BigQuery in Cloud Storage.
Dopo aver caricato i tuoi dati BigQuery, puoi esportare i dati in diversi formati. BigQuery può esportare fino a 1 GB di dati in un un singolo file. Se esporti più di 1 GB di dati, devi esportare in più file. Quando esportate 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'uso di Dataflow per leggere e scrivere BigQuery, consulta BigQuery I/O nella documentazione di Apache Beam.
Puoi anche esportare i risultati di una query utilizzando
EXPORT DATA
l'Informativa. Puoi utilizzare EXPORT DATA OPTIONS
per esportare le visualizzazioni in Cloud Storage.
Limitazioni per l'esportazione
Quando esporti i dati da BigQuery, tieni presente quanto segue:
- Non puoi esportare i dati delle tabelle in un file locale, in Fogli Google o in 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 di una tabella in un singolo file. Se esportare 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 varieranno. A limita le dimensioni del file esportato, puoi partizionare i dati ed esportare ogni partizione.
- Le dimensioni del file generate quando si utilizza 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. Nidificati e ripetuti sono supportati per le esportazioni Avro, JSON e Parquet.
- Quando esporti i dati in JSON, INT64 i tipi di dati (numero intero) sono codificati come stringhe JSON per preservare la precisione a 64 bit quando i dati vengono letti da altri sistemi.
- Non puoi esportare i dati da più tabelle in un unico 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 una conservazione , BigQuery potrebbe non riuscire a scrivere i file nel bucket. Configura il periodo di conservazione in modo che sia più lungo di dei job di esportazione.
- Quando esporti una tabella in formato JSON, i simboli
<
,>
e&
vengono convertiti utilizzando la notazione Unicode\uNNNN
, doveN
è un numero 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ù barre consecutive
("/"). Tuttavia, BigQuery converte più slash consecutivi in un'unica barra. Ad esempio, il seguente percorso della risorsa, sebbene valido in Cloud Storage, non funziona in BigQuery:
gs://bucket/my//object//name
. - I nuovi dati caricati in BigQuery durante l'esecuzione di un job di esportazione non verranno inclusi nel job. Devi creare un nuovo job di esportazione per esportare i nuovi dati.
Prima di iniziare
Concedi agli utenti i ruoli di Identity and Access Management (IAM) che offrono autorizzazioni necessarie per eseguire ogni attività in questo documento.
Autorizzazioni obbligatorie
Per eseguire le attività descritte 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'bigquery.tables.export
autorizzazione IAM.
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 Ruoli e autorizzazioni predefiniti.
Considerazioni sulla località
Colloca 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 contenenti i dati che esporti devono trovarsi nella stessa località multiregionale o in una località è contenuto all'interno di più regioni. Ad esempio, se il set di dati BigQuery si trova nella regione multiregionaleEU
, il bucket Cloud Storage può trovarsi nella regioneeurope-west1
del Belgio, che fa parte dell'UE.Se il set di dati si trova nell'area geografica multipla
US
, puoi esportare i dati in un bucket Cloud Storage in qualsiasi posizione. - Se il set di dati si trova in una regione, il bucket Cloud Storage deve trovarsi nella stessa regione. Per
Ad esempio, se il set di dati si trova nella regione
asia-northeast1
di Tokyo, i dati di Cloud Storage il bucket non può trovarsi nella località multiregionaleASIA
.
- Se scegli una risorsa di archiviazione regionale, ad esempio un set di dati BigQuery un bucket Cloud Storage, sviluppa un piano 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 BigQuery tra località
Non puoi modificare la località di un set di dati dopo averlo creato, ma puoi crea una copia del set di dati. Non puoi spostare un set di dati da una località a un'altra, ma puoi spostare (ricreare) manualmente un set di dati.
Formati di esportazione e tipi di compressione
BigQuery supporta i seguenti formati dei 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 I dati nidificati e ripetuti non sono supportati. |
JSON | GZIP | I dati nidificati e ripetuti sono supportati. |
Avro | DEFLATE, SNAPPY | GZIP non è supportato per le esportazioni Avro. I dati nidificati e ripetuti sono supportati. Consulta Dettagli sull'esportazione in Avro. |
Parquet | SNAPPY, GZIP, ZSTD | I dati nidificati e ripetuti sono supportati. Consulta Dettagli sull'esportazione in formato Parquet. |
Esporta i dati
Puoi esportare i dati della tabella:
- Utilizzo della console Google Cloud
- Utilizzo del comando
bq extract
nello strumento a riga di comando bq - Invio di un job
extract
utilizzando l'API o le librerie client
Esporta i dati della 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, quindi seleziona la tabella.
Nel riquadro dei dettagli, fai clic su Esporta e seleziona Esporta in. Cloud Storage.
Nella finestra di dialogo Esporta la tabella in Google Cloud Storage:
- In Seleziona la località di Google Cloud Storage, cerca il bucket una cartella o un file in cui vuoi esportare i dati.
- In Formato esportazione, scegli il formato per i dati esportati: CSV, JSON (Newline Delimited), Avro o Parquet.
- Per Compressione, seleziona un formato di compressione oppure
None
per senza compressione. - Fai clic su Esporta per esportare la tabella. google3/googledata/devsite/site-cloud/en/bigquery/docs/introduction-sql.md Per controllare l'avanzamento del job, guarda vicino alla parte superiore della Navigazione per Cronologia dei job per un job di Esporta.
Per esportare le viste in Cloud Storage, utilizza l'istruzione EXPORT DATA OPTIONS
.
SQL
Utilizza la
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 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
posizione.
Altri flag facoltativi sono:
--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 in formato CSV. Sono consentiti sia\t
siatab
per i delimitatori di tabulazione.--print_header
: se specificato, stampa le righe di intestazione per i formati con 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 sede. 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 posizione utilizzando il file .bigqueryrc. - format è il formato dei dati esportati:
CSV
,NEWLINE_DELIMITED_JSON
,AVRO
oPARQUET
. - compression_type è un tipo di compressione supportato per il formato dei 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 impostato sutrue
, le righe di intestazione vengono stampate nei dati esportati se il formato dei dati supporta le intestazioni. La 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 della partizione,
il percorso della tabella deve essere racchiuso tra virgolette singole oppure
l'interpretazione letterale del carattere
$
. - bucket è il nome del bucket Cloud Storage a cui stai esportando i dati. Il set di dati BigQuery e Il bucket Cloud Storage deve trovarsi nella stessa località.
- filename.ext è il nome e l'estensione dei dati esportati . Puoi esportare in più file utilizzando un carattere jolly.
Esempi:
Ad esempio, il seguente comando esporta mydataset.mytable
in un file compresso con 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, utilizza
destination_format
e impostato su NEWLINE_DELIMITED_JSON
o AVRO
. Ad esempio:
bq extract \ --destination_format NEWLINE_DELIMITED_JSON \ 'mydataset.mytable' \ gs://example-bucket/myfile.json
Il comando seguente esporta mydataset.mytable
in un file Avro compresso utilizzando Snappy. Il file si chiama myfile.avro
. myfile.avro
è
esportato in un bucket Cloud Storage denominato example-bucket
.
bq extract \ --destination_format AVRO \ --compression SNAPPY \ 'mydataset.mytable' \ gs://example-bucket/myfile.avro
Il comando seguente esporta una singola partizione
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 posizione nella proprietà location
nella sezione jobReference
della risorsa job.
Crea un job di estrazione che indichi i dati di origine BigQuery e la destinazione Cloud Storage.
Specifica la tabella di origine utilizzando l'oggetto di configurazione
sourceTable
che contiene l'ID progetto, l'ID set di dati e l'ID tabella.La proprietà
destination URI(s)
devono essere pienamente qualificati, nel formatogs://bucket/filename.ext
. Ogni URI può contenere un carattere jolly "*" e deve essere visualizzato dopo il nome del bucket.Specifica il formato dei dati impostando il parametro
configuration.extract.destinationFormat
proprietà. Ad esempio, per esportare un file JSON, imposta questa proprietà sul valoreNEWLINE_DELIMITED_JSON
.Per controllare 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 è riuscita. e l'oggetto includerà informazioni che descrivono cosa non ha funzionato. - Se
status.errorResult
non è presente, il job è stato completato correttamente, anche se potrebbero essere stati rilevati alcuni errori non fatali. Errori non irreversibili sono elencate nella proprietàstatus.errors
dell'oggetto job restituito.
- Se
Note sull'API:
Come best practice, genera un ID univoco e passalo come
jobReference.jobId
quando chiamijobs.insert
per creare un job. Questo è più efficace per gli errori di rete perché il client può eseguire il polling o riprova sull'ID job noto.Chiamare
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 delle queste operazioni avranno esito positivo.
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API C# BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione Go riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per autenticarti a BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
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 la documentazione di riferimento dell'API BigQuery Java.
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 saperne di più, consulta Configurare l'autenticazione per le librerie client.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery PHP.
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 la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione Ruby riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Ruby.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 di BigQuery è rappresentata come un record Avro. Nidificati sono rappresentati da oggetti di record nidificati.
- I campi
REQUIRED
sono rappresentati come i tipi Avro corrispondenti. Ad esempio, un tipoINTEGER
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
(annotano un tipo AvroLONG
) sia nei job di estrazione sia in SQL Export Data. Attenzione: puoi aggiungereuse_avro_logical_types=False
aExport Data Options
per disabilitare il tipo logico in modo che utilizzi il tipostring
invece nella colonna del timestamp, ma in Extract Jobs utilizza sempre tipo logico). - I tipi di dati
DATE
sono rappresentati come tipo logicodate
(annotano un tipo AvroINT
) per impostazione predefinita in 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 usa il flag--use_avro_logical_types=True
per abilitare il tipo logico in Estrai job.) TIME
tipi di dati sono rappresentati come tipo logicotimestamp-micro
(it annota i tipiLONG
di Avro) per impostazione predefinita in Export Data SQL, ma sono rappresentati come tipostring
per impostazione predefinita nei job di estrazione. Nota: puoi aggiungere Dause_avro_logical_types=False
aExport Data Options
per disattivare la logica o utilizza il flag--use_avro_logical_types=True
per abilitare il tipo logico in Estrai job).- Per impostazione predefinita, in Export Data SQL i tipi di dati
DATETIME
sono rappresentati come tipi AvroSTRING
(un tipo di stringa con tipo logico denominato personalizzatodatetime
), ma per impostazione predefinita nei job di estrazione sono rappresentati come tipostring
. Nota: puoi aggiungere Dause_avro_logical_types=False
aExport Data Options
per disattivare la logica o utilizza il flag--use_avro_logical_types=True
per abilitare il tipo logico Estrai i job).
I tipi di dati parametrici NUMERIC(P[, S])
e BIGNUMERIC(P[, S])
trasferiscono
i parametri di precisione e 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 di primitivo Parquet | 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) |
Ora | INT64 |
TIME (isAdjustedToUTC = true, unit = MICROS) |
Timestamp | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Area geografica | BYTE_ARRAY |
GEOGRAPHY (edges = spherical) |
Lo schema Parquet rappresenta i dati nidificati come gruppo e i record ripetuti come gruppi ripetuti. Per ulteriori informazioni sull'utilizzo di dati nidificati e ripetuti in BigQuery, consulta Specificare colonne nidificate e ripetute.
Puoi utilizzare le seguenti soluzioni alternative per i tipi DATETIME
:
- Carica il file in una tabella intermedia. Quindi, utilizza una query SQL per eseguire il casting del campo in un valore
DATETIME
e salva il risultato in una nuova tabella. Per ulteriori informazioni, vedi Modificare il 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
.
Il tipo logico GEOGRAPHY
è rappresentato con
Metadati GeoParquet aggiunti ai file esportati.
Esportazione di dati in uno o più file
La proprietà destinationUris
indica una o più posizioni e nomi file in cui
BigQuery dovrebbe esportare i file.
BigQuery supporta un singolo operatore jolly (*) in ogni URI. Il carattere jolly può comparire in qualsiasi punto dell'URI, tranne che all'interno del nome del bucket. Utilizzo
l'operatore con caratteri jolly indica a BigQuery di creare più
i file con sharding basso in base al pattern fornito. L'operatore jolly viene sostituito
con un numero (a partire da 0), con zeri iniziali fino a 12 cifre. Ad esempio, un URI con un carattere jolly alla fine del nome file crea file con 000000000000
aggiunto al primo file e 000000000001
aggiunto al secondo file, continuando con questo schema.
La seguente tabella descrive diverse possibili opzioni per destinationUris
proprietà:
Opzioni destinationUris |
|
---|---|
URI singolo |
Utilizza un singolo URI se esporti dati della tabella di 1 GB o
meno risorse. Questa opzione è il caso d'uso più comune, poiché i dati esportati sono generalmente inferiori al valore massimo di 1 GB. Questa opzione non è
supportati per
Definizione della proprietà:
Crea: gs://my-bucket/file-name.json |
Un singolo URI con caratteri jolly |
Utilizza un singolo URI con caratteri jolly se ritieni che i dati esportati verranno superiore al valore massimo di 1 GB. BigQuery suddivide i dati in più file in base al pattern fornito. Le dimensioni dei file esportati varieranno. Se utilizzi un carattere jolly in un componente URI diverso dal nome file, assicurati che il componente del percorso non esista prima di esportare i dati. Definizione della proprietà:
Crea: gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ... |
Limitare 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 ciascun file esportato, un'opzione consiste nel partizionare i dati in modo casuale e quindi esportare ogni partizione in un file:
- Determina il numero di partizioni necessarie, che equivale al totale delle dimensioni dei dati divise per le dimensioni del file esportato scelto. Ad esempio: se hai 8000 MB di dati e vuoi che ogni file esportato venga di circa 20 MB, quindi ti servono 400 partizioni.
Crea una nuova tabella partizionata e raggruppata in base a un nuovo colonna generata denominata
export_id
. L'esempio seguente mostra come creare un nuovoprocessed_table
da una tabella esistente denominatasource_table
che richieden
partizioni per raggiungere la dimensione del file scelta: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
per la seguente query:SELECT * EXCEPT(export_id) FROM my_dataset.processed_table WHERE export_id = i;
Estrai la tabella compressa
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.
Per autenticarti a BigQuery, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
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 la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.
Per autenticarti a BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
Esporta metadati tabella
Per esportare i metadati della tabella da una tabella gestita BigLake, utilizza la seguente istruzione SQL:
EXPORT TABLE METADATA FROM `[[PROJECT_NAME.]DATASET_NAME.]TABLE_NAME`;
Sostituisci quanto segue:
- PROJECT_NAME: il nome del progetto per la tabella. Il valore predefinito al progetto che esegue questa query.
- DATASET_NAME: il nome del set di dati per la tabella.
- TABLE_NAME: il nome della tabella.
I metadati esportati si trovano in STORAGE_URI/metadata
cartella, dove STORAGE_URI è la posizione di archiviazione della tabella impostata nel
le opzioni di CPU e memoria disponibili.
Caso d'uso di esempio
Questo esempio mostra come esportare i dati in Cloud Storage.
Supponi di inviare un flusso di dati a Cloud Storage dai log degli endpoint senza interruzioni. Uno snapshot giornaliero deve essere esportato in Cloud Storage per scopi di backup e archiviazione. La scelta migliore è un job di estrazione sometido a determinate quote e limitazioni.
Invia un job di estrazione con l'API o le librerie client, passando un ID univoco come jobReference.jobId
. I job di estrazione sono asincroni.
Controllare lo stato del lavoro
utilizzando l'ID job univoco usato per creare il job. Il job è stato completato
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 visualizzata una tabella con le statistiche da una query come descritto nella sezione precedente. I dati di questa tabella vengono recuperati e 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 in formato dizionario JSON. Se c'è
più di una pagina di dati, i risultati hanno la proprietà pageToken
per iniziare. Per recuperare la pagina successiva di risultati, effettua un'altra chiamata a tabledata.list
e includi il valore del token come parametro pageToken
. Se la chiamata API
ha un errore
Errore 5xx,
e riprova con il backoff esponenziale. Per la maggior parte degli errori 4xx non è possibile riprovare. Per un migliore disaccoppiamento dell'esportazione BigQuery e della generazione di report, i risultati devono essere mantenuti sul disco.
Criteri per le quote
Per informazioni sulle quote dei job di esportazione, consulta 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
Valore total_processed_bytes
che può essere utilizzato per monitorare l'utilizzo aggregato per
garantire che rimanga al di sotto di 50 TiB 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 l'utilizzo corrente dei job di query, caricamento, estrazione o copia eseguendo
una query INFORMATION_SCHEMA
per visualizzare i metadati dei job eseguiti in un
periodo di tempo specificato. Puoi confrontare l'utilizzo corrente 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 invia una notifica del numero di byte esportati.
Nella console Google Cloud, vai alla pagina Monitoring.
Nel riquadro di navigazione, seleziona Esplora metriche.
Nell'editor delle 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 maggiori informazioni, consulta Criteri di avviso con MQL.
Risoluzione dei problemi
Per diagnosticare i problemi relativi ai job di estrazione, puoi utilizzare Logs Explorer per esaminare i log di un job di estrazione specifico e identificare possibili errori. Il seguente filtro di Esplora log restituisce informazioni sul tuo di estrazione dei job:
resource.type="bigquery_resource"
protoPayload.methodName="jobservice.insert"
(protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.query.query=~"EXPORT" OR
protoPayload.serviceData.jobCompletedEvent.eventName="extract_job_completed" OR
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query=~"EXPORT")
Prezzi
Per informazioni sui prezzi dell'esportazione dei dati, consulta la pagina Prezzi di BigQuery.
Una volta esportati i dati, ti viene addebitato il costo per l'archiviazione dei dati di archiviazione ideale in Cloud Storage. Per ulteriori informazioni, consulta i prezzi di Cloud Storage.
Sicurezza delle tabelle
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 Utilizzare la 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 alle librerie client.