Introduzione ai trasferimenti dei rapporti di Cloud Storage
Il BigQuery Data Transfer Service per Cloud Storage consente di pianificare i caricamenti di dati ricorrenti da bucket Cloud Storage in BigQuery. Sia il percorso dei dati archiviati in Cloud Storage sia la tabella di destinazione possono essere parametrizzati, consentendo di caricare i dati da bucket Cloud Storage organizzati per data.
Formati di file supportati
BigQuery Data Transfer Service supporta il caricamento di dati da Cloud Storage in uno dei seguenti formati:
- Valori separati da virgola (CSV)
- JSON (delimitato da nuova riga)
- Avro
- Parquet
- ORC
Tipi di compressione supportati
BigQuery Data Transfer Service per Cloud Storage supporta il caricamento di dati compressi. I tipi di compressione supportati da BigQuery Data Transfer Service sono gli stessi dei tipi di compressione supportati dai job di caricamento di BigQuery. Per saperne di più, consulta Caricare dati compressi e non compressi.
Importazione dei dati per i trasferimenti dei rapporti di Cloud Storage
Puoi specificare come caricare i dati in BigQuery selezionando una preferenza di scrittura nella configurazione del trasferimento quando configuri un trasferimento dei rapporti di Cloud Storage.
Sono disponibili due tipi di preferenze di scrittura: trasferimenti incrementali e trasferimenti troncati.Trasferimenti incrementali
Una configurazione di trasferimento con una preferenza di scrittura APPEND o WRITE_APPEND, chiamata anche trasferimento incrementale, aggiunge in modo incrementale i nuovi dati a una tabella di destinazione BigQuery dall'ultimo trasferimento riuscito. Quando una configurazione di trasferimento viene eseguita con una preferenza di scrittura APPEND , BigQuery Data Transfer Service filtra i file modificati dall'ultima esecuzione del trasferimento riuscita. Per determinare quando un file viene modificato, BigQuery Data Transfer Service esamina i metadati del file per una proprietà "Ora ultima modifica". Ad esempio, BigQuery Data Transfer Service esamina la proprietà del timestamp updated
in un file Cloud Storage. Se BigQuery Data Transfer Service trova file con un'ora di ultima modifica successiva al timestamp dell'ultimo trasferimento riuscito, li trasferisce in un trasferimento incrementale.
Per mostrare come funzionano i trasferimenti incrementali, considera il seguente esempio di trasferimento dei rapporti di Cloud Storage. Un utente crea un file in un bucket Cloud Storage all'ora 2023-07-01T00:00Z denominato file_1. Il
updated timestamp per file_1 è
l'ora in cui è stato creato il file. L'utente crea quindi un trasferimento incrementale dal bucket Cloud Storage, pianificato per essere eseguito una volta al giorno alle 03:00Z, a partire dal 2023-07-01T03:00Z.
- Alle 03:00Z del 1° luglio 2023 inizia la prima esecuzione del trasferimento. Poiché si tratta della prima esecuzione del trasferimento per questa configurazione, BigQuery Data Transfer Service tenta di caricare tutti i file che corrispondono all'URI di origine nella tabella BigQuery di destinazione. L'esecuzione del trasferimento è riuscita e BigQuery Data Transfer Service ha caricato correttamente
file_1nella tabella BigQuery di destinazione. - L'esecuzione del trasferimento successiva, alle 03:00Z del 2 luglio 2023, non rileva file in cui la proprietà del timestamp
updatedè maggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 1° luglio 2023). L'esecuzione del trasferimento è riuscita senza caricare altri dati nella tabella BigQuery di destinazione.
L'esempio precedente mostra come BigQuery Data Transfer Service esamina la proprietà del timestamp updated del file di origine per determinare se sono state apportate modifiche ai file di origine e per trasferirle, se rilevate.
Seguendo lo stesso esempio, supponiamo che l'utente crei un altro file nel bucket Cloud Storage alle 00:00Z del 3 luglio 2023, denominato file_2. Il
updated timestamp per file_2 è
l'ora in cui è stato creato il file.
- L'esecuzione del trasferimento successiva, alle 03:00Z del 3 luglio 2023, rileva che
file_2ha un timestampupdatedmaggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 1° luglio 2023). Supponiamo che all'avvio dell'esecuzione del trasferimento si verifichi un errore temporaneo. In questo scenario,file_2non viene caricato nella tabella BigQuery di destinazione. Il timestamp dell'ultima esecuzione del trasferimento riuscita rimane alle 03:00Z del 1° luglio 2023. - L'esecuzione del trasferimento successiva, alle 03:00Z del 4 luglio 2023, rileva che
file_2ha un timestampupdatedmaggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 1° luglio 2023). Questa volta, l'esecuzione del trasferimento viene completata senza problemi, quindi carica correttamentefile_2nella tabella BigQuery di destinazione. - L'esecuzione del trasferimento successiva, alle 03:00Z del 5 luglio 2023, non rileva file in cui il timestamp
updatedè maggiore dell'ultima esecuzione del trasferimento riuscita (03:00Z del 4 luglio 2023). L'esecuzione del trasferimento è riuscita senza caricare altri dati nella tabella BigQuery di destinazione.
L'esempio precedente mostra che, in caso di errore di trasferimento, non vengono trasferiti file alla tabella di destinazione BigQuery. Le modifiche ai file vengono trasferite alla successiva esecuzione del trasferimento riuscita. I trasferimenti riusciti successivi a un trasferimento non causano dati duplicati. In caso di errore di trasferimento, puoi anche scegliere di attivare manualmente un trasferimento al di fuori dell'orario pianificato.
Trasferimenti troncati
Una configurazione di trasferimento con una preferenza di scrittura MIRROR o WRITE_TRUNCATE, chiamata anche trasferimento troncato, sovrascrive i dati nella tabella di destinazione BigQuery durante ogni esecuzione del trasferimento con i dati di tutti i file che corrispondono all'URI di origine. MIRROR sovrascrive una nuova copia dei dati nella tabella di destinazione. Se la tabella di destinazione utilizza un decoratore di partizione, l'esecuzione del trasferimento sovrascrive solo i dati nella partizione specificata. Una tabella di destinazione con un decoratore di partizione ha il formato my_table${run_date}, ad esempio my_table$20230809.
La ripetizione degli stessi trasferimenti incrementali o troncati in un giorno non causa dati duplicati. Tuttavia, se esegui più configurazioni di trasferimento diverse che interessano la stessa tabella di destinazione BigQuery, BigQuery Data Transfer Service potrebbe duplicare i dati.
Percorso della risorsa Cloud Storage
Per caricare i dati da un'origine dati Cloud Storage, devi fornire il percorso dei dati.
Il percorso della risorsa Cloud Storage contiene il nome del bucket e l'oggetto (nome file). Ad esempio, se il bucket Cloud Storage si chiama
mybucket e il file di dati si chiama myfile.csv, il percorso della risorsa sarà
gs://mybucket/myfile.csv.
BigQuery non supporta i percorsi delle risorse 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 una singola barra. Ad esempio, il seguente percorso della risorsa, sebbene
valido in Cloud Storage, non funziona in BigQuery:
gs://bucket/my//object//name.
Per recuperare il percorso della risorsa Cloud Storage:
Apri la console 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 i percorsi delle risorse Cloud Storage
Se i dati di Cloud Storage sono suddivisi in più file che condividono un nome base comune, puoi utilizzare un carattere jolly nel percorso della risorsa quando carichi i dati.
Per aggiungere un carattere jolly al percorso della risorsa Cloud Storage, aggiungi un asterisco (*) al nome base. Ad esempio, se hai due file denominati fed-sample000001.csv e fed-sample000002.csv, il percorso della risorsa sarà gs://mybucket/fed-sample*. Questo carattere jolly può essere utilizzato nella
Google Cloud console o in Google Cloud CLI.
Puoi utilizzare più caratteri jolly per gli oggetti (nomi file) all'interno dei bucket. Il carattere jolly può essere visualizzato ovunque all'interno del nome dell'oggetto.
I caratteri jolly non espandono una directory in un gs://bucket/. Ad esempio,
gs://bucket/dir/* trova i file nella directory dir ma non trova
i file nella sottodirectory gs://bucket/dir/subdir/.
Inoltre, non puoi trovare corrispondenze con i prefissi senza caratteri jolly. Ad esempio,
gs://bucket/dir non corrisponde a gs://bucket/dir/file.csv né a
gs://bucket/file.csv
Tuttavia, puoi utilizzare più caratteri jolly per i nomi file all'interno dei bucket.
Ad esempio, gs://bucket/dir/*/*.csv corrisponde a gs://bucket/dir/subdir/file.csv.
Per esempi di supporto dei caratteri jolly in combinazione con i nomi delle tabelle parametrizzati, consulta Parametri di runtime nei trasferimenti.
Quote e limiti
BigQuery Data Transfer Service utilizza i job di caricamento per caricare i dati di Cloud Storage in BigQuery.
Tutte le quote e i limiti di BigQuery sui job di caricamento si applicano ai job di caricamento ricorrenti di Cloud Storage, con le seguenti considerazioni aggiuntive:
| Valore | Limite |
|---|---|
| Dimensione massima per l'esecuzione del trasferimento del job di caricamento | 15 TB |
| Numero massimo di file per esecuzione del trasferimento | 10.000 file |
Prezzi
Dopo il trasferimento dei dati a BigQuery, si applicano i prezzi standard di BigQuery archiviazione e esecuzione di query.
Per i trasferimenti tra località da Cloud Storage, i prezzi sono determinati dalla località del bucket Cloud Storage e dalla località del set di dati BigQuery di destinazione. Per saperne di più, consulta Trasferimento di dati all'interno di Google Cloud.
Per saperne di più sui prezzi, consulta Prezzi di BigQuery.
Passaggi successivi
- Scopri come configurare un trasferimento dei rapporti di Cloud Storage.
- Scopri di più sui parametri di runtime nei trasferimenti dei rapporti di Cloud Storage.
- Scopri di più su BigQuery Data Transfer Service.