Pianificare un trasferimento Snowflake

Il connettore Snowflake fornito da BigQuery Data Transfer Service consente di pianificare e gestire i job di trasferimento automatico per eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando gli elenchi consentiti di IP pubblici.

Panoramica

Il connettore Snowflake impiega agenti di migrazione in Google Kubernetes Engine e attiva un'operazione di caricamento da Snowflake a un'area temporanea all'interno dello stesso provider cloud in cui è ospitato Snowflake. Per gli account Snowflake ospitati su AWS, i dati vengono prima preparati nel bucket Amazon S3, che viene poi trasferito a BigQuery con BigQuery Data Transfer Service.

Il seguente diagramma mostra come i dati vengono trasferiti da un data warehouse Snowflake ospitato su AWS a BigQuery.

Il flusso di dati durante una migrazione da Snowflake a BigQuery.

Limitazioni

I trasferimenti di dati effettuati utilizzando il connettore Snowflake sono soggetti alle seguenti limitazioni:

  • I trasferimenti di dati sono supportati solo dagli account Snowflake ospitati su AWS. I trasferimenti di dati dagli account Snowflake ospitati su Google Cloud o Microsoft Azure non sono supportati.
  • Il connettore Snowflake non supporta i trasferimenti di dati incrementali.
  • Il connettore Snowflake supporta solo i trasferimenti dalle 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 è limitata dal warehouse Snowflake che hai scelto per questo trasferimento.
  • I dati vengono estratti da Snowflake nel formato Parquet prima di essere caricati in BigQuery:

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

  1. Preparare il progetto Google Cloud
  2. Ruoli BigQuery richiesti
  3. Prepara il bucket Amazon S3
  4. Crea un utente Snowflake con le autorizzazioni richieste
  5. Aggiungere policy di rete
  6. Generare metadati ed eseguire il motore di traduzione
  7. Valuta Snowflake per verificare la presenza di tipi di dati non supportati
  8. Raccogliere informazioni sul trasferimento

Prepara il progetto Google Cloud

Crea e configura il progetto Google Cloud per un trasferimento Snowflake con i seguenti passaggi:

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

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

  3. Crea un set di dati BigQuery per archiviare i tuoi dati. Non devi creare tabelle.

Ruoli BigQuery richiesti

Per ottenere le autorizzazioni necessarie per creare un trasferimento, chiedi all'amministratore di concederti il ruolo IAM BigQuery Admin (roles/bigquery.admin). 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. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare un trasferimento sono necessarie le seguenti autorizzazioni:

  • bigquery.transfers.update sull'utente o sul account di servizio che crea la configurazione del trasferimento
  • bigquery.datasets.get sull'utente o sul account di servizio che crea la configurazione del trasferimento
  • bigquery.datasets.update sull'utente o sul account di servizio che crea la configurazione del trasferimento

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Prepara il bucket Amazon S3

Per completare un trasferimento di dati Snowflake, devi creare un bucket Amazon S3 e configurarlo per consentire l'accesso in scrittura da Snowflake.

  1. Crea un bucket Amazon S3. Il bucket Amazon S3 viene utilizzato per preparare i dati prima che vengano caricati in BigQuery.

  2. Crea e configura un oggetto di integrazione dell'archiviazione Snowflake per consentire a Snowflake di scrivere dati nel bucket Amazon S3 come stage esterno.

Per consentire l'accesso in lettura al tuo bucket Amazon S3, devi anche:

  1. Crea un utente Amazon IAM dedicato e concedigli il criterio AmazonS3ReadOnlyAccess.

  2. Crea una coppia di chiavi di accesso Amazon per l'utente IAM.

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 dei 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 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 di Snowflake incluso in questo trasferimento di dati
  • STORAGE_INTEGRATION_OBJECT_NAME: il nome dell'oggetto di integrazione dell'archiviazione Snowflake.

Aggiungere criteri 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 criteri di rete che potrebbero impedire al connettore Snowflake di connettersi al tuo account. In questo caso, devi aggiungere gli indirizzi IP necessari alla tua lista consentita.

La tabella seguente è un elenco di indirizzi IP per le località regionali e multiregionali utilizzate per i trasferimenti pubblici. Puoi aggiungere gli indirizzi IP che corrispondono solo alla posizione del tuo set di dati oppure puoi aggiungere tutti gli indirizzi IP elencati nella tabella. Si tratta di indirizzi IP riservati da Google per i trasferimenti di dati di BigQuery Data Transfer Service.

Per aggiungere un indirizzo IP a una lista consentita:

  1. Crea una regola di rete con type = IPV4. BigQuery Data Transfer Service utilizza una connessione JDBC per connettersi all'account Snowflake.
  2. Crea una policy di rete con la regola di rete che hai creato in precedenza e l'indirizzo IP della tabella seguente.

Località regionali

Descrizione della regione Nome regione Indirizzi IP
Americhe
Columbus, Ohio us-east5 34.162.72.184
34.162.173.185
34.162.205.205
34.162.81.45
34.162.182.149
34.162.59.92
34.162.157.190
34.162.191.145
Dallas us-south1 34.174.172.89
34.174.40.67
34.174.5.11
34.174.96.109
34.174.148.99
34.174.176.19
34.174.253.135
34.174.129.163
Iowa us-central1 34.121.70.114
34.71.81.17
34.122.223.84
34.121.145.212
35.232.1.105
35.202.145.227
35.226.82.216
35.225.241.102
Las Vegas us-west4 34.125.53.201
34.125.69.174
34.125.159.85
34.125.152.1
34.125.195.166
34.125.50.249
34.125.68.55
34.125.91.116
Los Angeles us-west2 35.236.59.167
34.94.132.139
34.94.207.21
34.94.81.187
34.94.88.122
35.235.101.187
34.94.238.66
34.94.195.77
Messico northamerica-south1 34.51.6.35
34.51.7.113
34.51.12.83
34.51.10.94
34.51.11.219
34.51.11.52
34.51.2.114
34.51.15.251
Montréal northamerica-northeast1 34.95.20.253
35.203.31.219
34.95.22.233
34.95.27.99
35.203.12.23
35.203.39.46
35.203.116.49
35.203.104.223
Virginia del Nord us-east4 35.245.95.250
35.245.126.228
35.236.225.172
35.245.86.140
35.199.31.35
35.199.19.115
35.230.167.48
35.245.128.132
35.245.111.126
35.236.209.21
Oregon us-west1 35.197.117.207
35.199.178.12
35.197.86.233
34.82.155.140
35.247.28.48
35.247.31.246
35.247.106.13
34.105.85.54
Salt Lake City us-west3 34.106.37.58
34.106.85.113
34.106.28.153
34.106.64.121
34.106.246.131
34.106.56.150
34.106.41.31
34.106.182.92
San Paolo southamerica-east1 35.199.88.228
34.95.169.140
35.198.53.30
34.95.144.215
35.247.250.120
35.247.255.158
34.95.231.121
35.198.8.157
Santiago southamerica-west1 34.176.188.48
34.176.38.192
34.176.205.134
34.176.102.161
34.176.197.198
34.176.223.236
34.176.47.188
34.176.14.80
Carolina del Sud us-east1 35.196.207.183
35.237.231.98
104.196.102.222
35.231.13.201
34.75.129.215
34.75.127.9
35.229.36.137
35.237.91.139
Toronto northamerica-northeast2 34.124.116.108
34.124.116.107
34.124.116.102
34.124.116.80
34.124.116.72
34.124.116.85
34.124.116.20
34.124.116.68
Europa
Belgio europe-west1 35.240.36.149
35.205.171.56
34.76.234.4
35.205.38.234
34.77.237.73
35.195.107.238
35.195.52.87
34.76.102.189
Berlino europe-west10 34.32.28.80
34.32.31.206
34.32.19.49
34.32.33.71
34.32.15.174
34.32.23.7
34.32.1.208
34.32.8.3
Finlandia europe-north1 35.228.35.94
35.228.183.156
35.228.211.18
35.228.146.84
35.228.103.114
35.228.53.184
35.228.203.85
35.228.183.138
Francoforte europe-west3 35.246.153.144
35.198.80.78
35.246.181.106
35.246.211.135
34.89.165.108
35.198.68.187
35.242.223.6
34.89.137.180
Londra europe-west2 35.189.119.113
35.189.101.107
35.189.69.131
35.197.205.93
35.189.121.178
35.189.121.41
35.189.85.30
35.197.195.192
Madrid europe-southwest1 34.175.99.115
34.175.186.237
34.175.39.130
34.175.135.49
34.175.1.49
34.175.95.94
34.175.102.118
34.175.166.114
Milano europe-west8 34.154.183.149
34.154.40.104
34.154.59.51
34.154.86.2
34.154.182.20
34.154.127.144
34.154.201.251
34.154.0.104
Paesi Bassi europe-west4 35.204.237.173
35.204.18.163
34.91.86.224
34.90.184.136
34.91.115.67
34.90.218.6
34.91.147.143
34.91.253.1
Parigi europe-west9 34.163.76.229
34.163.153.68
34.155.181.30
34.155.85.234
34.155.230.192
34.155.175.220
34.163.68.177
34.163.157.151
Stoccolma europe-north2 34.51.133.48
34.51.136.177
34.51.128.140
34.51.141.252
34.51.139.127
34.51.142.55
34.51.134.218
34.51.138.9
Torino europe-west12 34.17.15.186
34.17.44.123
34.17.41.160
34.17.47.82
34.17.43.109
34.17.38.236
34.17.34.223
34.17.16.47
Varsavia europe-central2 34.118.72.8
34.118.45.245
34.118.69.169
34.116.244.189
34.116.170.150
34.118.97.148
34.116.148.164
34.116.168.127
Zurigo europe-west6 34.65.205.160
34.65.121.140
34.65.196.143
34.65.9.133
34.65.156.193
34.65.216.124
34.65.233.83
34.65.168.250
Asia Pacifico
Delhi asia-south2 34.126.212.96
34.126.212.85
34.126.208.224
34.126.212.94
34.126.208.226
34.126.212.232
34.126.212.93
34.126.212.206
Hong Kong asia-east2 34.92.245.180
35.241.116.105
35.220.240.216
35.220.188.244
34.92.196.78
34.92.165.209
35.220.193.228
34.96.153.178
Giacarta asia-southeast2 34.101.79.105
34.101.129.32
34.101.244.197
34.101.100.180
34.101.109.205
34.101.185.189
34.101.179.27
34.101.197.251
Melbourne australia-southeast2 34.126.196.95
34.126.196.106
34.126.196.126
34.126.196.96
34.126.196.112
34.126.196.99
34.126.196.76
34.126.196.68
Mumbai asia-south1 34.93.67.112
35.244.0.1
35.200.245.13
35.200.203.161
34.93.209.130
34.93.120.224
35.244.10.12
35.200.186.100
Osaka asia-northeast2 34.97.94.51
34.97.118.176
34.97.63.76
34.97.159.156
34.97.113.218
34.97.4.108
34.97.119.140
34.97.30.191
Seul asia-northeast3 34.64.152.215
34.64.140.241
34.64.133.199
34.64.174.192
34.64.145.219
34.64.136.56
34.64.247.158
34.64.135.220
Singapore asia-southeast1 34.87.12.235
34.87.63.5
34.87.91.51
35.198.197.191
35.240.253.175
35.247.165.193
35.247.181.82
35.247.189.103
Sydney australia-southeast1 35.189.33.150
35.189.38.5
35.189.29.88
35.189.22.179
35.189.20.163
35.189.29.83
35.189.31.141
35.189.14.219
Taiwan asia-east1 35.221.201.20
35.194.177.253
34.80.17.79
34.80.178.20
34.80.174.198
35.201.132.11
35.201.223.177
35.229.251.28
35.185.155.147
35.194.232.172
Tokyo asia-northeast1 34.85.11.246
34.85.30.58
34.85.8.125
34.85.38.59
34.85.31.67
34.85.36.143
34.85.32.222
34.85.18.128
34.85.23.202
34.85.35.192
Medio Oriente
Dammam me-central2 34.166.20.177
34.166.10.104
34.166.21.128
34.166.19.184
34.166.20.83
34.166.18.138
34.166.18.48
34.166.23.171
Doha me-central1 34.18.48.121
34.18.25.208
34.18.38.183
34.18.33.25
34.18.21.203
34.18.21.80
34.18.36.126
34.18.23.252
Tel Aviv me-west1 34.165.184.115
34.165.110.74
34.165.174.16
34.165.28.235
34.165.170.172
34.165.187.98
34.165.85.64
34.165.245.97
Africa
Johannesburg africa-south1 34.35.11.24
34.35.10.66
34.35.8.32
34.35.3.248
34.35.2.113
34.35.5.61
34.35.7.53
34.35.3.17

Località multiregionali

Descrizione multiregionale Nome della regione Indirizzi IP
Data center all'interno degli stati membri dell'Unione Europea1 EU 34.76.156.158
34.76.156.172
34.76.136.146
34.76.1.29
34.76.156.232
34.76.156.81
34.76.156.246
34.76.102.206
34.76.129.246
34.76.121.168
Data center negli Stati Uniti US 35.185.196.212
35.197.102.120
35.185.224.10
35.185.228.170
35.197.5.235
35.185.206.139
35.197.67.234
35.197.38.65
35.185.202.229
35.185.200.120

1 I dati che si trovano nella multiregione EU non sono archiviati nei data center europe-west2 (Londra) o europe-west6 (Zurigo).

Genera metadati ed esegui il motore di traduzione

Il connettore BigQuery Data Transfer Service per Snowflake utilizza il motore di traduzione di BigQuery Migration Service per la mappatura dello schema durante la migrazione delle tabelle Snowflake in BigQuery. Per completare un trasferimento di dati Snowflake, devi prima generare i metadati per la traduzione, quindi eseguire il motore di traduzione:

  1. Esegui dwh-migration-tool per Snowflake. Per ulteriori informazioni, consulta Generare metadati per la traduzione e la valutazione.
  2. Carica il file metadata.zip generato in un bucket Cloud Storage. Il file metadata.zip viene utilizzato come input per il motore di traduzione.
  3. Esegui il servizio di traduzione batch, specificando il campo target_types come metadata. Per saperne di più, vedi Tradurre query SQL con l'API Translation.

    • Di seguito è riportato un esempio di comando per eseguire una traduzione batch per Snowflake:
      curl -d "{
      \"name\": \"sf_2_bq_translation\",
      \"displayName\": \"Snowflake to BigQuery Translation\",
      \"tasks\": {
          string: {
            \"type\": \"Snowflake2BigQuery_Translation\",
            \"translation_details\": {
                \"target_base_uri\": \"gs://sf_test_translation/output\",
                \"source_target_mapping\": {
                  \"source_spec\": {
                      \"base_uri\": \"gs://sf_test_translation/input\"
                  }
                },
                \"target_types\": \"metadata\",
            }
          }
      },
      }" \
      -H "Content-Type:application/json" \
      -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
    
    • Puoi controllare lo stato di questo comando nella pagina di traduzione SQL in BigQuery. L'output del job di traduzione batch viene archiviato in gs://translation_target_base_uri/metadata/config/.

Autorizzazioni account di servizio richieste

In un trasferimento Snowflake, un account di servizio viene utilizzato per leggere i dati dall'output del motore di traduzione nel percorso Cloud Storage specificato. Devi concedere al account di servizio le autorizzazioni storage.objects.get e storage.objects.list.

Se l'account di servizio proviene da un progetto diverso da quello che ha creato il trasferimento dati BigQuery, devi anche attivare l'autorizzazione dell'account di servizio tra progetti. Google Cloud

Per saperne di più, consulta Ruoli e autorizzazioni IAM di BigQuery.

Valutare i dati di Snowflake

BigQuery scrive i dati da Snowflake a 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 importare i file CSV in BigQuery. Per saperne di più, consulta Panoramica dei trasferimenti da Amazon S3.

Raccogliere informazioni sul trasferimento

Raccogli le informazioni necessarie per configurare la migrazione con BigQuery Data Transfer Service:

Configura un trasferimento da Snowflake

Seleziona una delle seguenti opzioni:

Console

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

    Vai a Trasferimenti 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 Dettagli origine dati, segui questi passaggi:

    1. Per 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 utente dell'utente Snowflake le cui credenziali e autorizzazione vengono utilizzate per accedere al database per trasferire le tabelle Snowflake. Ti consigliamo di utilizzare l'utente che hai creato per questo trasferimento.
    3. In Password, inserisci la password dell'utente Snowflake.
    4. Per Warehouse, inserisci un warehouse utilizzato per l'esecuzione di questo trasferimento di dati.
    5. In Service account, inserisci un account di servizio da utilizzare con questo trasferimento di dati. L'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.
    6. In Database, inserisci il nome del database Snowflake che contiene le tabelle incluse in questo trasferimento di dati.
    7. Per Schema, inserisci il nome dello schema Snowflake che contiene le tabelle incluse in questo trasferimento di dati.
    8. Per Pattern del nome della tabella, specifica una tabella da trasferire inserendo un nome o un pattern che corrisponda al nome della tabella nello schema. Puoi utilizzare 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.
    9. 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.

      • Il percorso deve seguire il formato gs:/translation_target_base_uri/metadata/config/db/schema/ e deve terminare con /.
    10. Per Nome oggetto integrazione archiviazione, inserisci il nome dell'oggetto di integrazione dell'archiviazione Snowflake. In questo caso, S3.

    11. In Fornitore cloud, seleziona AWS.

    12. Per URI GCS, nome account Azure Storage, nome container Azure, SAS Azure, lascia questi campi vuoti.

    13. In URI Amazon S3, inserisci l'URI del bucket S3 da utilizzare come area di staging.

    14. Per ID chiave di accesso e Chiave di accesso segreta, inserisci la coppia di chiavi di accesso.

  7. (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.
  8. Fai clic su Salva.

  9. 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 necessari 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 BigQuery di destinazione per la configurazione del trasferimento.
  • name: il nome visualizzato per la 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 dell'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 disporre di tutti i ruoli richiesti.
  • parameters: i parametri per la configurazione del trasferimento creato in formato JSON. Ad esempio: --params='{"param":"param_value"}'.

I parametri richiesti per una configurazione di trasferimento Snowflake sono:

  • account_identifier: 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.
  • username: il nome utente dell'utente Snowflake le cui credenziali e autorizzazione vengono utilizzate per accedere al tuo database per trasferire le tabelle Snowflake.
  • password: inserisci la password dell'utente Snowflake.
  • warehouse: inserisci un warehouse utilizzato per l'esecuzione di questo trasferimento di dati.
  • service_account: inserisci un account di servizio da utilizzare per questo trasferimento di dati. L'account di servizio deve appartenere allo stesso Google Cloud progetto 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.
  • database: inserisci il nome del database Snowflake che contiene le tabelle incluse in questo trasferimento di dati.
  • schema: inserisci 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.

  • translation_output_gcs_path: specifica un percorso alla cartella Cloud Storage che contiene i file di mapping dello schema del motore di traduzione.

    • Il percorso deve seguire il formato gs:/translation_target_base_uri/metadata/config/db/schema/ e deve terminare con /.
  • storage_integration_object_name: inserisci il nome dell'oggetto di integrazione dell'archiviazione Snowflake. In questo caso, S3.

  • cloud_provider: inserisci AWS.

  • amazon_s3_uri: inserisci l'URI del bucket S3 da utilizzare come area di gestione temporanea.

  • aws_access_key_id: inserisci la coppia di chiavi di accesso.

  • aws_secret_access_key: inserisci la coppia di chiavi di accesso.

Ad esempio, 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",
  "aws_access_key_id": "your_access_key_id",
  "aws_secret_access_key": "your_aws_secret_access_key",
  "cloud_provider": "AWS",
  "database": "your_sf_database",
  "password": "your_sf_password",
  "schema": "your_snowflake_schema",
  "service_account": "your_service_account",
  "storage_integration_object_name": "your_storage_integration_object",
  "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.

Quote e limiti

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 la dimensione della tabella esportata è maggiore di quella riportata da Snowflake. Se prevedi di eseguire la migrazione di una tabella più grande di 15 TB, contatta dts-migration-preview-support@google.com.

A causa del modello di coerenza di Amazon S3, è possibile che alcuni file non vengano inclusi nel trasferimento a BigQuery.

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 l'uscita quando esegui un trasferimento di dati Snowflake. Non sono previsti costi di uscita per i trasferimenti di dati 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 applicati costi di uscita inter-cloud.

Passaggi successivi