Introduzione ai trasferimenti di Cloud Storage

BigQuery Data Transfer Service per Cloud Storage consente di pianificare caricamenti di dati ricorrenti dai bucket di Cloud Storage a BigQuery. Il percorso dei dati archiviati in Cloud Storage e la tabella di destinazione possono essere entrambi parametrizzati, in modo da caricare i dati dai bucket Cloud Storage organizzati per data.

Formati di file supportati

BigQuery Data Transfer Service attualmente supporta il caricamento dei 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 di quelli supportati dai job di caricamento di BigQuery. Per ulteriori informazioni, consulta Caricare dati compressi e non compressi.

Importazione dati per i trasferimenti di Cloud Storage

Puoi specificare la modalità di caricamento dei dati in BigQuery selezionando una Preferenza di scrittura nella configurazione di trasferimento quando configuri un trasferimento in 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 nuovi dati poiché il precedente trasferimento è andato a buon fine a una tabella di destinazione BigQuery. Quando una configurazione di trasferimento viene eseguita con una preferenza di scrittura APPEND, BigQuery Data Transfer Service filtra i file che sono stati modificati dopo l'esecuzione del trasferimento precedente. Per determinare quando un file viene modificato, BigQuery Data Transfer Service esamina i metadati del file per una proprietà "Ora dell'ultima modifica". Ad esempio, BigQuery Data Transfer Service esamina la proprietà timestamp updated in un file Cloud Storage. Se BigQuery Data Transfer Service trova file con l'"ora dell'ultima modifica" che si sono verificati dopo il timestamp dell'ultimo trasferimento riuscito, BigQuery Data Transfer Service trasferisce questi file in un trasferimento incrementale.

Per dimostrare come funzionano i trasferimenti incrementali, considera il seguente esempio di trasferimento in Cloud Storage. Un utente crea un file in un bucket Cloud Storage all'indirizzo 01-07-2023T00:00Z denominato file_1. Il timestamp updated per file_1 indica l'ora in cui è stato creato il file. L'utente crea quindi un trasferimento incrementale dal bucket Cloud Storage, pianificato per l'esecuzione una volta al giorno alle 03:00 Z, a partire dal 01/07/2023T03:00Z.

  • Il giorno 01/07/2023T03:00Z inizia il primo trasferimento. Poiché questa è la prima esecuzione di trasferimento per questa configurazione, BigQuery Data Transfer Service tenta di caricare tutti i file corrispondenti all'URI di origine nella tabella BigQuery di destinazione. L'esecuzione del trasferimento ha esito positivo e BigQuery Data Transfer Service carica correttamente file_1 nella tabella BigQuery di destinazione.
  • La prossima esecuzione del trasferimento, il 02/07/2023T03:00Z, non rileva nessun file in cui la proprietà timestamp updated è maggiore dell'ultima esecuzione di trasferimento riuscita (01/07/2023T03:00Z). L'esecuzione del trasferimento ha esito positivo senza caricare altri dati nella tabella BigQuery di destinazione.

L'esempio precedente mostra come BigQuery Data Transfer Service considera la proprietà del timestamp updated del file di origine per determinare se sono state apportate modifiche ai file di origine e per trasferire queste eventuali modifiche rilevate.

Seguendo lo stesso esempio, supponiamo che l'utente crei un altro file denominato file_2 nel bucket Cloud Storage all'ora 2023-07-03T00:00Z. Il timestamp updated per file_2 indica l'ora in cui è stato creato il file.

  • L'esecuzione successiva del trasferimento, il 03/07/2023T03:00Z, rileva che il timestamp updated di file_2 è maggiore dell'ultima esecuzione del trasferimento riuscita (01/07/2023T03:00Z). Supponiamo che l'avvio del trasferimento non vada a buon fine a causa di un errore temporaneo. In questo scenario, file_2 non viene caricato nella tabella BigQuery di destinazione. L'ultimo timestamp eseguito correttamente per l'esecuzione del trasferimento rimane al 01-07-2023T03:00Z.
  • La prossima esecuzione del trasferimento, il 04/07/2023T03:00Z, rileva che il timestamp updated di file_2 è maggiore dell'ultima esecuzione del trasferimento riuscita (01/07/2023T03:00Z). Questa volta, l'esecuzione del trasferimento viene completata senza problemi, quindi viene caricato correttamente file_2 nella tabella BigQuery di destinazione.
  • La prossima esecuzione del trasferimento, il 05/07/2023T03:00Z, non rileva nessun file il cui timestamp updated è maggiore dell'ultima esecuzione del trasferimento riuscita (04/07/2023T03:00Z). L'esecuzione del trasferimento ha esito positivo senza caricare dati aggiuntivi nella tabella BigQuery di destinazione.

L'esempio precedente mostra che, quando un trasferimento non va a buon fine, nessun file viene trasferito nella tabella di destinazione BigQuery. Tutte le modifiche apportate ai file vengono trasferite alla successiva esecuzione di trasferimento riuscita. Eventuali trasferimenti riusciti successivi in seguito a un trasferimento non riuscito non generano dati duplicati. Nel caso di un trasferimento non riuscito, puoi anche scegliere di attivarlo manualmente al di fuori dell'orario regolarmente 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 di trasferimento con i dati provenienti da tutti i file corrispondenti all'URI di origine. MIRROR sovrascrive una nuova copia dei dati nella tabella di destinazione. Se la tabella di destinazione utilizza un decoratore di partizioni, l'esecuzione del trasferimento sovrascrive solo i dati nella partizione specificata. Una tabella di destinazione con un decorator della 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 che interessano la stessa tabella di destinazione BigQuery, BigQuery Data Transfer Service può duplicare i dati.

Percorso 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 è 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 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 risorsa, sebbene valido in Cloud Storage, non funziona in BigQuery: gs://bucket/my//object//name.

Per recuperare il percorso della risorsa Cloud Storage:

  1. Apri la console di Cloud Storage.

    Console Cloud Storage

  2. Individua la posizione dell'oggetto (file) che contiene i dati di origine.

  3. Fai clic sul nome dell'oggetto.

    Viene visualizzata la pagina Dettagli oggetto.

  4. 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 separati in più file che condividono un nome di 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 di base. Ad esempio, se hai due file denominati fed-sample000001.csv e fed-sample000002.csv, il percorso della risorsa sarà gs://mybucket/fed-sample*. che può essere utilizzato nella console Google Cloud o in Google Cloud CLI.

Puoi utilizzare più caratteri jolly per gli oggetti (nomi di file) all'interno dei bucket. Il carattere jolly può apparire ovunque all'interno del nome dell'oggetto.

I caratteri jolly non espandono una directory in un elemento gs://bucket/. Ad esempio, gs://bucket/dir/* trova file nella directory dir, ma non trova file nella sottodirectory gs://bucket/dir/subdir/.

Non puoi nemmeno creare corrispondenze con prefissi senza caratteri jolly. Ad esempio, gs://bucket/dir non corrisponde su gs://bucket/dir/file.csvgs://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 con parametri, consulta Parametri di runtime nei trasferimenti.

Considerazioni sulla località

Il bucket Cloud Storage deve trovarsi in una o più regioni compatibile con quelle del set di dati di destinazione in BigQuery.

  • Se il set di dati BigQuery si trova in più regioni, il bucket Cloud Storage contenente i dati che stai trasferendo deve trovarsi nella stessa località multiregionale o in una località contenuta all'interno di più regioni. Ad esempio, se il tuo set di dati BigQuery si trova nella località multiregionale "UE", il bucket Cloud Storage può trovarsi nella regione "europe-west1" del Belgio, che si trova all'interno dell'UE.
  • Se il set di dati si trova in una regione, il bucket Cloud Storage deve trovarsi nella stessa regione. Ad esempio, se il tuo set di dati si trova nella regione di Tokyo "asia-northeast1", il bucket Cloud Storage non può trovarsi nella regione multiregionale "ASIA".

Per informazioni dettagliate su trasferimenti e regioni, consulta Località e trasferimenti di set di dati.

Per ulteriori informazioni sulle località di Cloud Storage, consulta Località dei bucket nella documentazione di Cloud Storage.

Prezzi

  • Si applicano quote e limiti standard di BigQuery sui job di caricamento.

  • Quando i dati vengono trasferiti su BigQuery, vengono applicati i prezzi standard di BigQuery per l'archiviazione e le query.

  • I dati non verranno eliminati automaticamente dal bucket Cloud Storage dopo essere stati caricati su BigQuery, a meno che tu non indichi l'eliminazione durante la configurazione del trasferimento. Consulta la pagina relativa alla configurazione di un trasferimento in Cloud Storage.

  • Consulta la nostra pagina dei prezzi dei trasferimenti per i dettagli.

Quote e limiti

BigQuery Data Transfer Service utilizza i job di caricamento per caricare i dati di Cloud Storage in BigQuery.

Tutti i limiti e le quote di BigQuery per i job di caricamento si applicano ai job di caricamento di Cloud Storage ricorrenti, con le seguenti considerazioni aggiuntive:

Valore Limite
Dimensione massima per esecuzione di trasferimento del job di caricamento 15 TB
Numero massimo di file per esecuzione di trasferimento 10.000 file

Passaggi successivi