Introduzione ai trasferimenti di Cloud Storage

BigQuery Data Transfer Service per Cloud Storage consente di pianificare i caricamenti di dati ricorrenti dai 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 dai bucket Cloud Storage organizzati per data.

Formati di file supportati

BigQuery Data Transfer Service al momento 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 tipi di compressione supportati dai job di caricamento BigQuery. Per maggiori informazioni, consulta Caricare dati compressi e non compressi.

Importazione dei dati per i trasferimenti di Cloud Storage

Puoi specificare la modalità di caricamento dei dati in BigQuery selezionando un'opzione Scrivi la preferenza nella configurazione di trasferimento quando configurare un trasferimento in Cloud Storage.

Sono disponibili due tipi di preferenze di scrittura: i trasferimenti incrementali e trasferimenti troncati.

Trasferimenti incrementali

Una configurazione di trasferimento con una scrittura APPEND o WRITE_APPEND la preferenza, chiamata anche trasferimento incrementale, aggiunge in modo incrementale nuovi dati dal precedente trasferimento riuscito a una destinazione BigQuery tabella. Quando una configurazione di trasferimento viene eseguita con una preferenza di scrittura APPEND, BigQuery Data Transfer Service filtra i file che sono stati modificati dall'ultima esecuzione di trasferimento riuscita. Per determinare quando un file viene modificato, BigQuery Data Transfer Service esamina i metadati del file per una proprietà "data di ultima modifica". Ad esempio, BigQuery Data Transfer Service esamina la proprietà timestamp updated in un file Cloud Storage. Se BigQuery Data Transfer Service trova i file con l'ora dell'ultima modifica che hanno successive al 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 di Cloud Storage. Un utente crea un file in un Bucket Cloud Storage all'ora 2023-07-01T00:00Z denominato file_1. Il timestamp updated per file_1 è l'ora in cui è stato creato il file. L'utente poi crea un trasferimento incrementale dal bucket Cloud Storage, programmato per essere eseguito una volta al giorno alle ore 03:00Z, a partire dal giorno 01-07-2023T03:00Z.

  • Il 1° luglio 2023 alle ore 03:00Z inizia la prima esecuzione del trasferimento. Poiché questa è la prima per questa configurazione, BigQuery Data Transfer Service tenta di carica tutti i file corrispondenti all'URI di origine nella destinazione Tabella BigQuery. L'esecuzione del trasferimento ha esito positivo BigQuery Data Transfer Service carica correttamente file_1 nella destinazione Tabella BigQuery.
  • L'esecuzione di trasferimento successiva, il 02-07-2023T03:00Z, non rileva file in cui la proprietà del timestamp updated è maggiore rispetto all'ultima esecuzione di trasferimento riuscita (01-07-2023T03:00Z). L'esecuzione del trasferimento avviene correttamente senza caricare dati aggiuntivi nella tabella BigQuery di destinazione.

L'esempio precedente mostra in che modo BigQuery Data Transfer Service esamina la proprietà 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 in il bucket Cloud Storage alle ore 2023-07-03T00:00Z, denominato file_2. Il timestamp updated per file_2 è l'ora in cui è stato creato il file.

  • L'esecuzione di trasferimento successiva, il 03-07-2023 alle ore 03:00:00 UTC, rileva che file_2 ha un updated timestamp maggiore dell'ultima esecuzione di trasferimento riuscita (01-07-2023 alle ore 03:00:00 UTC). Supponiamo che all'avvio dell'esecuzione del trasferimento non vada a buon fine a causa un errore temporaneo. In questo scenario, file_2 non viene caricato nella tabella BigQuery di destinazione. Ultimo trasferimento riuscito il timestamp dell'esecuzione rimane su 2023-07-01T03:00Z.
  • La successiva esecuzione di trasferimento, alle 2023-07-04T03:00Z, rileva che file_2 ha un Timestamp updated maggiore dell'ultima esecuzione di trasferimento riuscita (2023-07-01T03:00Z). Questa volta l'esecuzione del trasferimento viene completata senza problemi, quindi carica file_2 nella tabella BigQuery di destinazione.
  • L'esecuzione di trasferimento successiva, il 05-07-2023 alle 03:00 UTC, non rileva file in cui il timestamp updated è maggiore dell'ultima esecuzione di trasferimento riuscita (04-07-2023 alle 03:00 UTC). L'esecuzione del trasferimento va a buon fine 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 alla tabella di destinazione BigQuery. Eventuali modifiche ai file vengono trasferite alla successiva esecuzione del trasferimento riuscita. Qualsiasi data trasferimenti riusciti a seguito di un trasferimento non riuscito non provoca duplicati e i dati di Google Cloud. In caso di trasferimento non riuscito, puoi anche scegliere di attivare manualmente un trasferimento al di fuori dell'orario programmato regolarmente.

Trasferimenti troncati

Una configurazione di trasferimento con una scrittura MIRROR o WRITE_TRUNCATE la preferenza, chiamata anche "trasferimento troncato", sovrascrive i dati nella Tabella di destinazione BigQuery durante ogni esecuzione di trasferimento con dati da tutti i file corrispondenti all'URI di origine. MIRROR sovrascrive una nuova copia di nella tabella di destinazione. Se la tabella di destinazione utilizza un decoratore 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ù trasferimenti diversi che interessano la stessa tabella di destinazione BigQuery, Questo può causare la duplicazione dei dati da parte di BigQuery Data Transfer Service.

Percorso della risorsa Cloud Storage

Per caricare i dati da un'origine dati Cloud Storage, devi fornire il percorso per i dati.

Il percorso della risorsa Cloud Storage contiene il nome del bucket e dell'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 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ù istanze barre 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:

  1. Apri la console di Cloud Storage.

    Console Cloud Storage

  2. Vai alla posizione dell'oggetto (file) che contiene i dati di origine.

  3. Fai clic sul nome dell'oggetto.

    Si apre 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 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 sarebbe gs://mybucket/fed-sample*. Questo carattere jolly può essere utilizzato nella console Google Cloud o in Google Cloud CLI.

Puoi utilizzare più caratteri jolly per gli oggetti (nomi file) all'interno dei bucket. La il carattere jolly può apparire 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 file nella sottodirectory gs://bucket/dir/subdir/.

Non puoi nemmeno eseguire corrispondenze sui 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 dei file all'interno dei bucket. Ad esempio, gs://bucket/dir/*/*.csv corrisponde gs://bucket/dir/subdir/file.csv.

Per esempi di supporto dei caratteri jolly in combinazione con i nomi delle tabelle con parametri, vedi Parametri di runtime nei trasferimenti:

Considerazioni sulla località

Il bucket Cloud Storage deve trovarsi in una regione o in una regione multipla compatibile con la regione o la regione multipla del set di dati di destinazione in BigQuery.

  • Se il set di dati BigQuery si trova in una regione multipla, il bucket Cloud Storage contenente i dati che stai trasferendo deve trovarsi nella stessa regione multipla o in una posizione contenuta nella regione multipla. Ad esempio, se il set di dati BigQuery si trova nell'area geografica multiregionale "UE", il bucket Cloud Storage può trovarsi nella regione Belgio "europe-west1", che fa parte dell'UE.
  • 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 di Tokyo "asia-northeast1", la Cloud Storage il bucket non può essere in più regioni "ASIA".

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

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

Prezzi

  • Si applicano le quote e i limiti di BigQuery standard ai 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 il caricamento su BigQuery, a meno che non indichi l'eliminazione durante la configurazione del trasferimento. Vedi Configurare un trasferimento di Cloud Storage.

  • Per informazioni dettagliate, consulta la pagina dei prezzi relativa ai trasferimenti.

Quote e limiti

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

Tutte le quote e i limiti di BigQuery per i job di caricamento si applicano ai job di caricamento ricorrenti di Cloud Storage, 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