Pianifica un trasferimento da Snowflake
Il connettore Snowflake fornito da BigQuery Data Transfer Service consente di pianificare e gestire job di trasferimento automatici per eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando le liste consentite di IP pubblici.
Panoramica
Il connettore Snowflake coinvolge gli agenti di migrazione in Google Kubernetes Engine e attiva un'operazione di caricamento da Snowflake a un'area di gestione temporanea all'interno del bucket Cloud Storage.
- Per gli account Snowflake ospitati su Amazon Web Services (AWS) o Azure o Google Cloud, i dati vengono prima inseriti in un bucket Cloud Storage, quindi trasferiti in BigQuery con BigQuery Data Transfer Service.
Il seguente diagramma illustra i trasferimenti di dati pubblici da account Snowflake ospitati su Amazon Web Services (AWS) o Azure o account Snowflake ospitati su Google Cloud.

Limitazioni
I trasferimenti di dati effettuati utilizzando il connettore Snowflake sono soggetti alle seguenti limitazioni:
- Il connettore Snowflake supporta solo i trasferimenti da tabelle all'interno di un singolo database e schema Snowflake. Per eseguire il trasferimento da tabelle con più database o schemi Snowflake, puoi configurare ogni job di trasferimento separatamente.
- La velocità di caricamento dei dati da Snowflake al bucket Amazon S3, al container Azure Blob Storage o al bucket Cloud Storage è limitata dal warehouse Snowflake che hai scelto per questo trasferimento.
- BigQuery scrive i dati da Snowflake in Cloud Storage come file Parquet. I file Parquet non supportano i tipi di dati
TIMESTAMP_TZeTIMESTAMP_LTZ. Se i tuoi dati contengono questi tipi, puoi esportarli in Amazon S3 come file CSV e poi importarli in BigQuery. Per saperne di più, consulta Introduzione ai trasferimenti di dati da Amazon S3.
Prima di iniziare
Prima di configurare un trasferimento Snowflake, devi eseguire tutti i passaggi elencati in questa sezione. Di seguito è riportato un elenco di tutti i passaggi richiesti.
- Prepara il progetto Google Cloud
- Ruoli BigQuery richiesti
- Prepara il bucket di gestione temporanea
- Crea un utente Snowflake con le autorizzazioni richieste
- Aggiungi policy di rete
- (Facoltativo) Rilevamento e mappatura dello schema
- Valuta Snowflake per verificare la presenza di tipi di dati non supportati
- (Facoltativo) Abilita i trasferimenti incrementali
- (Facoltativo) Abilita la connettività privata
- Raccogli le informazioni sul trasferimento
- Se prevedi di specificare una chiave di crittografia gestita dal cliente (CMEK), assicurati che il tuo service account disponga delle autorizzazioni per criptare e decriptare e di avere l'ID risorsa della chiave Cloud KMS necessario per utilizzare CMEK. Per informazioni su come funziona la CMEK con i trasferimenti, consulta Specifica la chiave di crittografia con i trasferimenti.
Prepara il progetto Google Cloud
Crea e configura il tuo progetto Google Cloud per un trasferimento Snowflake seguendo questi passaggi:
Crea un progetto Google Cloud o selezionane uno esistente.
Verifica di aver completato tutte le azioni necessarie per abilitare BigQuery Data Transfer Service.
Crea un set di dati BigQuery per archiviare i tuoi dati. Non è necessario creare tabelle.
Ruoli BigQuery richiesti
Per ottenere le autorizzazioni necessarie per creare un trasferimento di dati di BigQuery Data Transfer Service, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin) sul tuo progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un trasferimento di dati di BigQuery Data Transfer Service. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un trasferimento di dati di BigQuery Data Transfer Service, sono necessarie le seguenti autorizzazioni:
-
Autorizzazioni di BigQuery Data Transfer Service:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Autorizzazioni BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più, consulta Concedi l'accesso a bigquery.admin.
Prepara il bucket di gestione temporanea
Per prepararti a un trasferimento di dati Snowflake, crea un bucket di gestione temporanea e configuralo in modo da consentire l'accesso in scrittura da Snowflake. Devi eseguire lo stage dei dati Snowflake in un bucket Cloud Storage prima di poterli caricare in BigQuery.
- Crea un bucket Cloud Storage.
- Crea e configura un oggetto di integrazione dello spazio di archiviazione Snowflake per consentire a Snowflake di scrivere dati nel bucket Cloud Storage come fase esterna.
- Quando esegui il comando
DESCRIBE INTEGRATION, il account di servizio Cloud Storage viene elencato nel campoSTORAGE_GCP_SERVICE_ACCOUNT. Concedi al account di servizio Cloud Storage le seguenti autorizzazioni sul bucket Cloud Storage:storage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
Per consentire l'accesso al bucket di gestione temporanea, concedi all'agente di servizio DTS il ruolo
roles/storage.objectViewercon il seguente comando:gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
Per un trasferimento di dati privato di Snowflake, crea il bucket di gestione temporanea e configuralo per la connettività privata.
Crea un utente Snowflake con le autorizzazioni richieste
Durante un trasferimento Snowflake, il connettore Snowflake si connette al tuo account Snowflake utilizzando una connessione JDBC. Devi creare un nuovo utente Snowflake con un ruolo personalizzato che disponga solo dei privilegi necessari per eseguire il trasferimento di dati:
// Create and configure new role, MIGRATION_ROLE
GRANT USAGE
ON WAREHOUSE WAREHOUSE_NAME
TO ROLE MIGRATION_ROLE;
GRANT USAGE
ON DATABASE DATABASE_NAME
TO ROLE MIGRATION_ROLE;
GRANT USAGE
ON SCHEMA DATABASE_NAME.SCHEMA_NAME
TO ROLE MIGRATION_ROLE;
// You can modify this to give select permissions for all tables in a schema
GRANT SELECT
ON TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
TO ROLE MIGRATION_ROLE;
GRANT USAGE
ON INTEGRATION STORAGE_INTEGRATION_OBJECT_NAME
TO ROLE MIGRATION_ROLE;
Sostituisci quanto segue:
MIGRATION_ROLE: il nome del ruolo personalizzato che stai creandoWAREHOUSE_NAME: il nome del tuo data warehouseDATABASE_NAME: il nome del tuo database SnowflakeSCHEMA_NAME: il nome dello schema SnowflakeTABLE_NAME: il nome dello Snowflake incluso in questo trasferimento di datiSTORAGE_INTEGRATION_OBJECT_NAME: il nome del tuo oggetto di integrazione dello spazio di archiviazione Snowflake.
Genera una coppia di chiavi per l'autenticazione
A causa del ritiro degli accessi con password a singolo fattore da parte di Snowflake, ti consigliamo di utilizzare la coppia di chiavi per l'autenticazione.
Puoi configurare una coppia di chiavi generando una coppia di chiave RSA criptata o non criptata, quindi assegnando la chiave pubblica a un utente Snowflake. Per saperne di più, consulta Configura l'autenticazione con coppia di chiavi.
Consenti l'unloading in località esterne in linea
Il connettore Snowflake esegue l'unload dei dati in località esterne in linea durante il trasferimento. Se il tuo account Snowflake limita lo scaricamento in posizioni in linea, il trasferimento non va a buon fine.
Per consentire lo scaricamento in posizioni in linea, esegui il seguente comando SQL nel tuo account Snowflake. Per eseguire questo comando, devi disporre del ruolo ACCOUNTADMIN in Snowflake.
ALTER ACCOUNT SET PREVENT_UNLOAD_TO_INLINE_URL = false;
Aggiungi policy di rete
Per la connettività pubblica, l'account Snowflake consente la connessione pubblica con le credenziali del database per impostazione predefinita. Tuttavia, potresti aver configurato regole o policy di rete che potrebbero impedire al connettore Snowflake di connettersi al tuo account. In questo caso, devi aggiungere gli indirizzi IP necessari alla lista consentita. Per saperne di più, consulta Configura le policy di rete per i trasferimenti Snowflake.
Rilevamento e mappatura dello schema
Per definire lo schema, puoi utilizzare BigQuery Data Transfer Service per rilevare automaticamente la mappatura dello schema e del tipo di dati durante il trasferimento dei dati da Snowflake a BigQuery. In alternativa, puoi utilizzare il motore di traduzione per definire manualmente lo schema e i tipi di dati.
Per saperne di più, consulta Rilevamento e mappatura dello schema per Snowflake.
Abilita i trasferimenti incrementali
Per configurare un trasferimento di dati incrementale di Snowflake, consulta Configura i trasferimenti incrementali per Snowflake.
Abilita la connettività privata
Se vuoi creare un trasferimento di dati Snowflake privato, devi configurare la rete per la connettività privata.
Raccogli le informazioni sul trasferimento
Raccogli le informazioni necessarie per configurare la migrazione con BigQuery Data Transfer Service:
- L'identificatore dell'account Snowflake, ovvero il prefisso nell'URL dell'account Snowflake. Ad esempio,
ACCOUNT_IDENTIFIER.snowflakecomputing.com. - Il nome utente e la chiave privata associata con le autorizzazioni appropriate per il tuo database Snowflake. Può avere solo le autorizzazioni necessarie per eseguire il trasferimento di dati.
- L'URI del bucket di gestione temporanea da utilizzare per il trasferimento. Ti consigliamo di configurare una policy del ciclo di vita per questo bucket per evitare addebiti non necessari.
- L'URI del bucket Cloud Storage in cui hai archiviato i file di mappatura dello schema ottenuti dal motore di traduzione.
Configura un trasferimento Snowflake
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina Trasferimenti di dati nella console Google Cloud .
Fai clic su Crea trasferimento.
Nella sezione Tipo di origine, seleziona Migrazione Snowflake dall'elenco Origine.
Nella sezione Nome configurazione di trasferimento, inserisci un nome per il trasferimento, ad esempio
My migration, nel campo Nome visualizzato. Il nome visualizzato può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.Nella sezione Impostazioni destinazione, scegli il set di dati che hai creato dall'elenco Set di dati.
Nella sezione Snowflake Credentials (Credenziali Snowflake), segui questi passaggi:
- In Identificatore account, inserisci un identificatore univoco per il tuo account Snowflake, che è una combinazione del nome dell'organizzazione e del nome dell'account. L'identificatore è il prefisso dell'URL dell'account Snowflake e non l'URL completo. Ad esempio,
ACCOUNT_IDENTIFIER.snowflakecomputing.com. - In Nome utente, inserisci il nome dell'utente Snowflake le cui credenziali e autorizzazioni vengono utilizzate per accedere al tuo database per trasferire le tabelle Snowflake. Ti consigliamo di utilizzare l'utente che hai creato per questo trasferimento.
- In Meccanismo di autenticazione, seleziona un metodo di autenticazione utente Snowflake:
PASSWORD
- In Password, inserisci la password dell'utente Snowflake.
KEY_PAIR
- In Chiave privata, inserisci la chiave privata collegata alla chiave pubblica associata all'utente Snowflake.
- Per Is Private Key Encrypted (La chiave privata è criptata), seleziona questo campo se la chiave privata è criptata con una passphrase.
- In Passphrase chiave privata, inserisci la passphrase per la chiave privata criptata. Questo campo è obbligatorio se hai selezionato La chiave privata è criptata. Per saperne di più, consulta Genera una coppia di chiavi per l'autenticazione.
- In Warehouse, inserisci un warehouse utilizzato per l'esecuzione di questo trasferimento di dati.
- In Database Snowflake, inserisci il nome del database Snowflake che contiene le tabelle incluse in questo trasferimento di dati.
- In Schema Snowflake, inserisci il nome dello schema Snowflake che contiene le tabelle incluse in questo trasferimento di dati.
- In Identificatore account, inserisci un identificatore univoco per il tuo account Snowflake, che è una combinazione del nome dell'organizzazione e del nome dell'account. L'identificatore è il prefisso dell'URL dell'account Snowflake e non l'URL completo. Ad esempio,
Nella sezione Configurazione dello spazio di archiviazione, segui questi passaggi:
- In Nome oggetto di integrazione dello spazio di archiviazione, inserisci il nome dell'oggetto di integrazione dello spazio di archiviazione Snowflake.
- (Facoltativo) Per Dimensione massima file, specifica la dimensione massima di ogni file scaricato da Snowflake nella posizione di gestione temporanea (in MB).
In Cloud provider, seleziona
AWSoAZUREoGCPa seconda del cloud provider che ospita il tuo account Snowflake.- In URI GCS, inserisci l'URI del bucket Cloud Storage da utilizzare come bucket di gestione temporanea.
Nella sezione Service account, segui questi passaggi:
- In Service account, inserisci un account di servizio da utilizzare con questo trasferimento di dati. Il account di servizio deve appartenere allo stesso progettoGoogle Cloud in cui vengono creati la configurazione del trasferimento e il set di dati di destinazione. Il account di servizio deve disporre delle autorizzazioni richieste
storage.objects.listestorage.objects.get.
- In Service account, inserisci un account di servizio da utilizzare con questo trasferimento di dati. Il account di servizio deve appartenere allo stesso progettoGoogle Cloud in cui vengono creati la configurazione del trasferimento e il set di dati di destinazione. Il account di servizio deve disporre delle autorizzazioni richieste
Nella sezione Configurazione schema, segui questi passaggi:
- Per Tipo di importazione, seleziona Completa o Incrementale. Per saperne di più, consulta Configura i trasferimenti incrementali.
- In Pattern dei nomi delle tabelle, specifica una tabella da trasferire inserendo un nome o un pattern che corrisponda al nome della tabella nello schema. Puoi utilizzare le espressioni regolari per specificare il pattern, ad esempio
table1_regex;table2_regex. Il pattern deve seguire la sintassi delle espressioni regolari Java. Ad esempio:lineitem;ordertbcorrisponde alle tabelle denominatelineitemeordertb..*corrisponde a tutte le tabelle.
- (Facoltativo) Per Utilizza l'output del motore di traduzione BigQuery, seleziona questo campo se vuoi specificare un percorso di output della traduzione personalizzato.
- (Facoltativo) Per Percorso GCS di output della traduzione, specifica un percorso della cartella Cloud Storage che contiene i file di mappatura dello schema del motore di traduzione. Puoi lasciare vuoto questo campo per consentire al connettore Snowflake di rilevare automaticamente lo schema.
- Il percorso deve avere il formato
translation_target_base_uri/metadata/config/db/schema/e deve terminare con/.
- Il percorso deve avere il formato
- (Facoltativo) Per Percorso file schema personalizzato, specifica il percorso Cloud Storage di un file di schema personalizzato.
- (Facoltativo) Per Mappa il tipo NUMBER di Snowflake con scala zero al tipo INT64 di BigQuery, seleziona questo campo se vuoi mappare i tipi
NUMBER(p, 0)di Snowflake aINT64di BigQuery.
Nella sezione Connettività di rete, segui questi passaggi:
- Per Utilizza rete privata, se stai creando un trasferimento di dati privato, seleziona Vero.
- In Collegamento al servizio PSC, se stai creando una connessione privata, inserisci l'URI del collegamento al servizio. Per saperne di più, consulta Crea una configurazione del trasferimento Snowflake privato.
- Per Servizio di rete privato, se stai creando un trasferimento di dati privato, inserisci il link alla pagina corrente di Service Directory. Per saperne di più, consulta Crea una configurazione di trasferimento Snowflake privata.
(Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:
- Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
- In Seleziona un argomento Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento. Questa opzione configura l'esecuzione delle notifiche di Pub/Sub in relazione al trasferimento.
Se utilizzi le CMEK, nella sezione Opzioni avanzate, seleziona Chiave gestita dal cliente. Viene visualizzato un elenco di CMEK disponibili tra cui scegliere. Per informazioni su come funzionano le CMEK con BigQuery Data Transfer Service, vedi Specificare la chiave di crittografia con i trasferimenti.
Fai clic su Salva.
La console Google Cloud mostra tutti i dettagli della configurazione del trasferimento, incluso un Nome risorsa per questo trasferimento.
bq
Inserisci il comando bq mk e fornisci il flag di creazione del trasferimento --transfer_config. Sono richiesti anche i seguenti flag:
--project_id--data_source--target_dataset--display_name--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters'
Sostituisci quanto segue:
- project_id: il tuo ID progetto Google Cloud . Se
--project_idnon è specificato, viene utilizzato il progetto predefinito. - data_source: l'origine dati,
snowflake_migration. - dataset: il set di dati di destinazione BigQuery per la configurazione del trasferimento.
- name: il nome visualizzato della configurazione del trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
- service_account: (facoltativo) il nome del account di servizio utilizzato per autenticare il trasferimento. Il account di servizio deve essere di proprietà dello stesso
project_idutilizzato per creare il trasferimento e deve avere tutti i ruoli richiesti. - parameters: i parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio:
--params='{"param":"param_value"}'.
Puoi configurare i seguenti parametri per la configurazione del trasferimento Snowflake:
account_identifier: specifica un identificatore univoco per il tuo account Snowflake, che è una combinazione del nome della tua organizzazione e del nome dell'account. L'identificatore è il prefisso dell'URL dell'account Snowflake e non l'URL completo. Ad esempio,account_identifier.snowflakecomputing.com.username: specifica il nome utente dell'utente Snowflake le cui credenziali e autorizzazioni vengono utilizzate per accedere al tuo database per trasferire le tabelle Snowflake.auth_mechanism: specifica il metodo di autenticazione utente di Snowflake. I valori supportati sonoPASSWORDeKEY_PAIR. Per saperne di più, consulta Genera una coppia di chiavi per l'autenticazione.password: specifica la password dell'utente Snowflake. Questo campo è obbligatorio se hai specificatoPASSWORDnel campoauth_mechanism.private_key: specifica la chiave privata collegata alla chiave pubblica associata all'utente Snowflake. Questo campo è obbligatorio se hai specificatoKEY_PAIRnel campoauth_mechanism.is_private_key_encrypted: specificatruese la chiave privata è criptata con una passphrase.private_key_passphrase: specificare la passphrase per la chiave privata crittografata. Questo campo è obbligatorio se hai specificatoKEY_PAIRnel campoauth_mechanismetruenel campois_private_key_encrypted.warehouse: specifica un warehouse utilizzato per l'esecuzione di questo trasferimento di dati.service_account: specifica un account di servizio da utilizzare con questo trasferimento di dati. Il account di servizio deve appartenere allo stesso progetto Google Cloud in cui vengono create la configurazione del trasferimento e il set di dati di destinazione. Il account di servizio deve disporre delle autorizzazioni richiestestorage.objects.listestorage.objects.get.database: specifica il nome del database Snowflake che contiene le tabelle incluse in questo trasferimento di dati.schema: specifica il nome dello schema Snowflake che contiene le tabelle incluse in questo trasferimento di dati.table_name_patterns: specifica una tabella da trasferire inserendo un nome o un pattern che corrisponda al nome della tabella nello schema. Puoi utilizzare le espressioni regolari per specificare il pattern, ad esempiotable1_regex;table2_regex. Il pattern deve seguire la sintassi delle espressioni regolari Java. Ad esempio,lineitem;ordertbcorrisponde alle tabelle denominatelineitemeordertb..*corrisponde a tutte le tabelle.Puoi anche lasciare vuoto questo campo per eseguire la migrazione di tutte le tabelle dallo schema specificato.
ingestion_mode: specifica la modalità di importazione per il trasferimento. I valori supportati sonoFULLeINCREMENTAL. Per saperne di più, consulta Configura i trasferimenti incrementali.translation_output_gcs_path: (Facoltativo) specifica un percorso della cartella Cloud Storage che contiene i file di mappatura dello schema del motore di traduzione. Puoi lasciare vuoto questo campo per consentire al connettore Snowflake di rilevare automaticamente lo schema.- Il percorso deve avere il formato
gs://translation_target_base_uri/metadata/config/db/schema/e deve terminare con/.
- Il percorso deve avere il formato
storage_integration_object_name: specifica il nome dell'oggetto di integrazione dello spazio di archiviazione Snowflake.max_file_size_mb: (facoltativo) specifica la dimensione massima in MB di ogni file scaricato da Snowflake nella posizione di gestione temporanea. Il valore deve essere compreso tra16e5120. Il valore predefinito è512.staging_gcs_uri: inserisci l'URI del bucket Cloud Storage da utilizzare per la gestione temporanea dei dati.use_private_network: se stai creando un trasferimento di dati privato, imposta suTRUE.service_attachment: se stai creando un trasferimento di dati privato, specifica l'URI del collegamento al servizio. Per saperne di più, consulta Crea una configurazione di trasferimento Snowflake privata.private_network_service: se stai creando un trasferimento di dati privato, specifica il link alla pagina corrente del servizio NLB. Per saperne di più, consulta Crea una configurazione del trasferimento Snowflake privato.
Ad esempio, per un account Snowflake ospitato su AWS, il seguente comando crea un trasferimento Snowflake denominato Snowflake transfer config con un set di dati di destinazione denominato your_bq_dataset e un progetto con l'ID your_project_id.
PARAMS='{ "account_identifier": "your_account_identifier", "auth_mechanism": "KEY_PAIR", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "ingestion_mode": "INCREMENTAL", "private_key": "-----BEGIN PRIVATE KEY----- privatekey\nseparatedwith\nnewlinecharacters=-----END PRIVATE KEY-----", "schema": "your_snowflake_schema", "service_account": "your_service_account", "storage_integration_object_name": "your_storage_integration_object", "max_file_size_mb": "512", "staging_s3_uri": "s3://your/s3/bucket/uri", "table_name_patterns": ".*", "translation_output_gcs_path": "gs://sf_test_translation/output/metadata/config/database_name/schema_name/", "username": "your_sf_username", "warehouse": "your_warehouse" }' bq mk --transfer_config \ --project_id=your_project_id \ --target_dataset=your_bq_dataset \ --display_name='snowflake transfer config' \ --params="$PARAMS" \ --data_source=snowflake_migration
API
Utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.
Specifica la chiave di crittografia con i trasferimenti
Puoi specificare chiavi di crittografia gestite dal cliente (CMEK) per criptare i dati per un'esecuzione del trasferimento. Puoi utilizzare una CMEK per supportare i trasferimenti da Snowflake.Quando specifichi una CMEK con un trasferimento, BigQuery Data Transfer Service applica la CMEK a qualsiasi cache su disco intermedia dei dati importati, in modo che l'intero workflow di trasferimento dei dati sia conforme alla CMEK.
Non puoi aggiornare un trasferimento esistente per aggiungere una CMEK se il trasferimento non è stato creato originariamente con una CMEK. Ad esempio, non puoi modificare una tabella di destinazione che era originariamente criptata per impostazione predefinita in modo che ora sia criptata con CMEK. Allo stesso modo, non puoi modificare una tabella di destinazione criptata con CMEK per applicare un tipo di crittografia diverso.
Puoi aggiornare una CMEK per un trasferimento se la configurazione del trasferimento è stata creata originariamente con una crittografia CMEK. Quando aggiorni una CMEK per una configurazione di trasferimento, BigQuery Data Transfer Service la propaga alle tabelle di destinazione alla successiva esecuzione del trasferimento, durante la quale BigQuery Data Transfer Service sostituisce le CMEK obsolete con la nuova CMEK. Per saperne di più, consulta Aggiorna un trasferimento.
Puoi anche utilizzare le chiavi predefinite del progetto. Quando specifichi una chiave predefinita del progetto con un trasferimento, BigQuery Data Transfer Service utilizza la chiave predefinita del progetto come chiave predefinita per tutte le nuove configurazioni di trasferimento.
Quote e limiti
Per impostazione predefinita, BigQuery ha una quota di caricamento di 15 TB per ogni job di caricamento per ogni tabella. Internamente, Snowflake comprime i dati della tabella, quindi le dimensioni della tabella esportata sono maggiori di quelle riportate da Snowflake.
Per migliorare i tempi di caricamento per le tabelle più grandi e rimuovere il limite di caricamento di BigQuery di 15 TB, specifica il tipo di prestazione PIPELINE per l'assegnazione della prenotazione.
A causa del modello di coerenza di Amazon S3, è possibile che alcuni file non vengano inclusi nel trasferimento a BigQuery.
Ottimizza le prestazioni del trasferimento di dati
Puoi monitorare le prestazioni dei trasferimenti di dati visualizzando i log per il trasferimento di dati. Per migliorare le prestazioni dei trasferimenti di dati, ti consigliamo di eseguire i seguenti passaggi di ottimizzazione:
- Mantieni l'istanza Snowflake, il bucket di gestione temporanea e il set di dati BigQuery nella stessa regione
- Puoi migliorare la velocità di unload delle tabelle nel seguente modo:
- Aumenta le dimensioni del tuo warehouse virtuale Snowflake, soprattutto quando trasferisci tabelle Snowflake di grandi dimensioni (1 TiB o più).
- Modifica l'opzione
MAX_FILE_SIZEnella configurazione del trasferimento.- File di dimensioni ridotte possono migliorare la velocità di trasferimento, ma se sono troppo piccoli, il numero di file potrebbe essere eccessivo.
- Puoi migliorare la velocità di caricamento delle tabelle aumentando il numero di prenotazioni di slot BigQuery per i tipi di prestazione
PIPELINEeQUERY. - Quando esegui un trasferimento completo, evita il clustering e il partizionamento nella tabella BigQuery di destinazione.
- Quando esegui un trasferimento incrementale in modalità Upsert, valuta la possibilità di eseguire il clustering e il partizionamento sulle colonne della chiave primaria per migliorare le prestazioni del trasferimento.
- Tuttavia, evita il clustering e il partizionamento su colonne di chiavi non primarie per evitare operazioni di unione più lente.
Prezzi
Per informazioni sui prezzi di BigQuery Data Transfer Service, consulta la pagina Prezzi.
- Se il warehouse Snowflake e il bucket Amazon S3 si trovano in regioni diverse, Snowflake applica addebiti per il traffico in uscita quando esegui un trasferimento di dati Snowflake. Non sono previsti costi per il traffico in uscita per i trasferimenti di dati di Snowflake se sia il warehouse Snowflake sia il bucket Amazon S3 si trovano nella stessa regione.
- Quando i dati vengono trasferiti da AWS a Google Cloud, vengono applicate tariffe per il traffico in uscita tra cloud.
Passaggi successivi
- Scopri di più su BigQuery Data Transfer Service.
- Esegui la migrazione del codice SQL con la traduzione SQL batch.