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.

Trasferimenti di dati pubblici da account Snowflake ospitati su AWS o Azure o Google Clouda BigQuery

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_TZ e TIMESTAMP_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.

  1. Prepara il progetto Google Cloud
  2. Ruoli BigQuery richiesti
  3. Prepara il bucket di gestione temporanea
  4. Crea un utente Snowflake con le autorizzazioni richieste
  5. Aggiungi policy di rete
  6. (Facoltativo) Rilevamento e mappatura dello schema
  7. Valuta Snowflake per verificare la presenza di tipi di dati non supportati
  8. (Facoltativo) Abilita i trasferimenti incrementali
  9. (Facoltativo) Abilita la connettività privata
  10. Raccogli le informazioni sul trasferimento
  11. 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:

  1. Crea un progetto Google Cloud o selezionane uno esistente.

  2. Verifica di aver completato tutte le azioni necessarie per abilitare BigQuery Data Transfer Service.

  3. 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.

  1. Crea un bucket Cloud Storage.
  2. 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.
  3. Quando esegui il comando DESCRIBE INTEGRATION, il account di servizio Cloud Storage viene elencato nel campo STORAGE_GCP_SERVICE_ACCOUNT. Concedi al account di servizio Cloud Storage le seguenti autorizzazioni sul bucket Cloud Storage:
    • storage.objects.create
    • storage.objects.delete
    • storage.objects.get
    • storage.objects.list
  4. Per consentire l'accesso al bucket di gestione temporanea, concedi all'agente di servizio DTS il ruolo roles/storage.objectViewer con 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 creando
  • WAREHOUSE_NAME: il nome del tuo data warehouse
  • DATABASE_NAME: il nome del tuo database Snowflake
  • SCHEMA_NAME: il nome dello schema Snowflake
  • TABLE_NAME: il nome dello Snowflake incluso in questo trasferimento di dati
  • STORAGE_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:

Configura un trasferimento Snowflake

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina Trasferimenti di dati nella console Google Cloud .

    Vai a Trasferimenti di dati

  2. Fai clic su Crea trasferimento.

  3. Nella sezione Tipo di origine, seleziona Migrazione Snowflake dall'elenco Origine.

  4. 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.

  5. Nella sezione Impostazioni destinazione, scegli il set di dati che hai creato dall'elenco Set di dati.

  6. Nella sezione Snowflake Credentials (Credenziali Snowflake), segui questi passaggi:

    1. 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.
    2. 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.
    3. 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.
  7. Nella sezione Configurazione dello spazio di archiviazione, segui questi passaggi:

    1. In Nome oggetto di integrazione dello spazio di archiviazione, inserisci il nome dell'oggetto di integrazione dello spazio di archiviazione Snowflake.
    2. (Facoltativo) Per Dimensione massima file, specifica la dimensione massima di ogni file scaricato da Snowflake nella posizione di gestione temporanea (in MB).
    3. In Cloud provider, seleziona AWS o AZURE o GCP a seconda del cloud provider che ospita il tuo account Snowflake.

  8. Nella sezione Service account, segui questi passaggi:

    1. 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.list e storage.objects.get.
  9. Nella sezione Configurazione schema, segui questi passaggi:

    1. Per Tipo di importazione, seleziona Completa o Incrementale. Per saperne di più, consulta Configura i trasferimenti incrementali.
    2. 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;ordertb corrisponde alle tabelle denominate lineitem e ordertb.
      • .* corrisponde a tutte le tabelle.
    3. (Facoltativo) Per Utilizza l'output del motore di traduzione BigQuery, seleziona questo campo se vuoi specificare un percorso di output della traduzione personalizzato.
    4. (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 /.
    5. (Facoltativo) Per Percorso file schema personalizzato, specifica il percorso Cloud Storage di un file di schema personalizzato.
    6. (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 a INT64 di BigQuery.
  10. Nella sezione Connettività di rete, segui questi passaggi:

    1. Per Utilizza rete privata, se stai creando un trasferimento di dati privato, seleziona Vero.
    2. 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.
    3. 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.
  11. (Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:

    1. 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.
    2. 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.
  12. 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.

  13. Fai clic su Salva.

  14. 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_id non è 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_id utilizzato 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 sono PASSWORD e KEY_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 specificato PASSWORD nel campo auth_mechanism.
  • private_key : specifica la chiave privata collegata alla chiave pubblica associata all'utente Snowflake. Questo campo è obbligatorio se hai specificato KEY_PAIR nel campo auth_mechanism.
  • is_private_key_encrypted : specifica true se la chiave privata è criptata con una passphrase.
  • private_key_passphrase : specificare la passphrase per la chiave privata crittografata. Questo campo è obbligatorio se hai specificato KEY_PAIR nel campo auth_mechanism e true nel campo is_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 richieste storage.objects.list e storage.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 esempio table1_regex;table2_regex. Il pattern deve seguire la sintassi delle espressioni regolari Java. Ad esempio,

    • lineitem;ordertb corrisponde alle tabelle denominate lineitem e ordertb.
    • .* 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 sono FULL e INCREMENTAL. 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 /.
  • 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 tra 16 e 5120. 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 su TRUE.

  • 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_SIZE nella 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 PIPELINE e QUERY.
  • 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