Migrazione da Snowflake a BigQuery
Questo documento fornisce informazioni tecniche su come eseguire la migrazione dei dati da Snowflake a BigQuery. Descrive le differenze fondamentali tra Snowflake e in BigQuery. Fornisce inoltre indicazioni per una migrazione riuscita, come ad esempio:
- Quali modifiche allo schema sono necessarie
- Quali strumenti e opzioni di migrazione sono disponibili
- Come eseguire la migrazione dei dati (utilizzando un processo di esportazione di esempio)
Puoi anche utilizzare la traduzione SQL batch per eseguire la migrazione collettiva degli script SQL o la traduzione SQL interattiva per tradurre query ad hoc. Snowflake SQL è supportato da entrambi gli strumenti in anteprima.
Terminologia
Questo documento utilizza la terminologia di Snowflake e BigQuery per descrivere le funzionalità offerte da ciascun prodotto. La tabella seguente mappa i termini di Snowflake a quelli BigQuery equivalenti:
Snowflake | BigQuery |
---|---|
Database | Set di dati |
Schema | Schema |
Tabella temporanea o temporanea specifica per la sessione | Tabella anonima o temporanea |
Visualizza | Visualizza |
Visualizzazioni sicure | Visualizzazioni autorizzate |
Warehouse virtuale | Prenotazione |
Visualizzazione materializzata | Visualizzazione materializzata |
Nessun equivalente per il partizionamento (in quanto viene utilizzato il micro-partizionamento) | Partizionamento |
Clustering | Clustering |
Funzioni definite dall'utente (UDF) con funzionalità di sicurezza avanzate | Funzioni definite dall'utente autorizzate |
Confronto dell'architettura
Snowflake e BigQuery sono entrambi data warehouse di analisi, ma hanno alcune differenze di architettura fondamentali.
L'architettura di Snowflake è un ibrido di architetture di database su disco condiviso e architetture di database senza condivisione. Come per le architetture senza condivisione, i dati in Snowflake vengono gestiti in un servizio di archiviazione di oggetti cloud separato. Come per un'architettura a disco condiviso, le query in Snowflake utilizzano cluster di calcolo dedicati. In Snowflake, ogni cluster gestisce parti memorizzate nella cache dell'intero set di dati per accelerare le prestazioni delle query. Per ulteriori informazioni, consulta la pagina Architettura di Snowflake.
L'architettura di BigQuery è molto diversa soluzioni di data warehouse su cloud o sistemi MPP basati su nodi. Disaccoppia l'archiviazione e il calcolo, il che consente di scalare in modo indipendente in base alla domanda. Per maggiori informazioni le informazioni, vedi Dietro le quinte di BigQuery.
Confronto dell'interfaccia utente
L'interfaccia web Snowflake rispecchia l'interfaccia a riga di comando (CLI) di Snowflake. Entrambe le interfacce consentono di:
- Gestisci database
- Gestisci i warehouse
- Gestire query e fogli di lavoro
- Visualizzare le query storiche
L'interfaccia web ti consente inoltre di gestire la password e le preferenze dell'utente Snowflake.
Il client dell'interfaccia a riga di comando Snowflake utilizza SnowSQL per connettersi a Snowflake ed eseguire SQL query e altre operazioni.
L'interfaccia BigQuery è integrata nella console Google Cloud e contiene un elenco di risorse BigQuery che puoi visualizzare:
- La sezione BigQuery Studio mostra i set di dati, le tabelle, le visualizzazioni e altre risorse BigQuery. Qui puoi creare e gestire eseguire query, lavorare con tabelle e viste, consultare BigQuery della cronologia dei job ed eseguire altre attività comuni di BigQuery.
- La sezione Trasferimenti di dati apre la pagina di BigQuery Data Transfer Service.
- La sezione Query pianificate mostra le query pianificate.
- La sezione Gestione della capacità mostra gli impegni degli slot, le prenotazioni e assegnazioni di prenotazione.
- La sezione BI Engine apre la pagina di BigQuery BI Engine.
BigQuery include anche uno strumento a riga di comando basato su Python. Per maggiori informazioni, consulta Utilizzare lo strumento a riga di comando bq.
Sicurezza
Quando esegui la migrazione da Snowflake a BigQuery, devi considerare il modo in cui Google Cloud in generale e BigQuery in particolare gestiscono la sicurezza in modo diverso da Snowflake.
Snowflake offre diverse funzionalità correlate alla sicurezza, ad esempio:
- Accesso alla rete e ai siti
- Autenticazione dell'account e degli utenti
- Sicurezza degli oggetti
- Sicurezza dei dati
- Convalide di sicurezza
La sicurezza su Snowflake si basa sulle funzionalità del tuo provider cloud. Offre un controllo granulare sull'accesso agli oggetti, sulle operazioni degli oggetti e su chi può creare o modificare i criteri di controllo dell'accesso.
I ruoli BigQuery paralleli ai privilegi di controllo dell'accesso in Snowflake sono i ruoli Identity and Access Management (IAM) in Google Cloud. Questi privilegi determinano le operazioni consentite su una risorsa. I privilegi vengono applicati a livello di Google Cloud.
Crittografia
In Snowflake, la sicurezza a livello di colonna è supportata nella versione Enterprise, mentre le chiavi di crittografia gestite dal cliente sono supportate nella versione Business Critical. Questi abbonamenti hanno prezzi diversi. In BigQuery, tutte le funzionalità e misure di sicurezza avanzate sono offerte come funzionalità standard ad accesso meno frequente per ridurre i costi di archiviazione.
Snowflake fornisce la crittografia end-to-end in cui cripta automaticamente tutti i dati archiviati. Google Cloud fornisce la stessa funzionalità criptando tutti i dati rest e dentro trasporto pubblico per impostazione predefinita.
Come la versione Business Critical di Snowflake, BigQuery supporta le chiavi di crittografia gestite dal cliente per gli utenti che vogliono controllare e gestire le chiavi di crittografia delle chiavi in Cloud Key Management Service. BigQuery consente inoltre la crittografia a livello di colonna. Per saperne di più sulla crittografia in Google Cloud, consulta Crittografia at-rest in Google Cloud e Crittografia dei dati in transito in Google Cloud.
Ruoli
I ruoli sono le entità a cui è possibile concedere privilegi sugli oggetti protetti e revocati.
Snowflake supporta i seguenti due tipi di ruoli:
- Ruoli definiti dal sistema: questi ruoli sono costituiti da privilegi relativi al sistema e alla sicurezza e vengono creati con privilegi relativi alla gestione dell'account.
- Ruoli personalizzati:
Puoi creare questi ruoli utilizzando i ruoli
SECURITYADMIN
o utilizzando qualsiasi con il privilegioCREATE ROLE
. Ogni ruolo personalizzato in Snowflake composti da privilegi.
In IAM, le autorizzazioni sono raggruppate in ruoli. IAM offre tre tipi di ruoli:
- Ruoli di base:
ad esempio Proprietario, Editor e Visualizzatore. Puoi applicare questi ruoli a livello di risorsa di progetto o servizio utilizzando la console Google Cloud, l'API Identity and Access Management o
gcloud CLI
. In generale, per una sicurezza massima, ti consigliamo di utilizzare ruoli specifici di BigQuery per seguire il principio del privilegio minimo. - Ruoli predefiniti: questi ruoli forniscono un accesso più granulare alle funzionalità di un prodotto (ad esempio BigQuery) e sono progettati per supportare casi d'uso comuni e pattern di controllo dell'accesso.
- Ruoli personalizzati: questi ruoli sono composti da autorizzazioni specificate dall'utente.
Controllo degli accessi
Snowflake consente di concedere ruoli ad altri ruoli, creando una gerarchia di ruoli. IAM non supporta una gerarchia dei ruoli, ma implementa una gerarchia delle risorse. La gerarchia IAM include i livelli organizzazione, cartella, progetto e risorsa livello. Puoi impostare ruoli IAM a qualsiasi livello della gerarchia e le risorse ereditano tutti i criteri delle rispettive risorse padre.
Sia Snowflake sia BigQuery supportano il controllo dell'accesso a livello di tabella. Le autorizzazioni a livello di tabella determinano gli utenti, i gruppi e gli account di servizio che possono accedere a una tabella o a una visualizzazione. Puoi concedere a un utente l'accesso a tabelle o senza concedere all'utente l'accesso al set di dati completo.
Snowflake utilizza anche sicurezza a livello di riga e sicurezza a livello di colonna.
In BigQuery, IAM fornisce controllo dell'accesso a livello di tabella. Per un accesso più granulare, puoi anche utilizzare il controllo dell'accesso a livello di colonna o la sicurezza a livello di riga. Questo tipo di controllo fornisce un accesso granulare alle colonne sensibili utilizzando i tag di criteri o le classificazioni dei dati basate sul tipo.
Puoi anche creare visualizzazioni autorizzate per limitare l'accesso ai dati per un controllo dell'accesso più granulare in modo che gli utenti possono eseguire query su una vista senza avere accesso in lettura alle tabelle sottostanti.
Aspetti da considerare durante la migrazione
Esistono alcune funzionalità di Snowflake che non puoi eseguire il porting direttamente in BigQuery. Ad esempio, BigQuery non offre supporto integrato per i seguenti scenari. In questi scenari, potrebbe essere necessario per utilizzare altri servizi in Google Cloud.
Viaggio nel tempo: in BigQuery puoi utilizzare viaggio nel tempo di accedere ai dati da qualsiasi punto negli ultimi sette giorni. Per accedere ai dati per oltre sette giorni, valuta la possibilità di esportare snapshot pianificati regolarmente. Snowflake ti consente di accedere ai dati storici (dati che sono stati modificati o eliminati) in qualsiasi momento di un periodo definito. Puoi impostare questo periodo su qualsiasi valore compreso tra 0 e 90 giorni.
Stream: BigQuery supporta la tecnica Change Data Capture (CDC) con Datastream. Puoi anche utilizzare software CDC, come Debezium, per scrivere record in BigQuery con Dataflow. Per saperne di più sulla progettazione manuale di una pipeline CDC con BigQuery, consulta Migrazione dei data warehouse in BigQuery: Change Data Capture (CDC). In Snowflake, un oggetto flusso registra le modifiche data manipulation language apportate alle tabelle e anche ai metadati su ogni modifica, in modo da azioni con i dati modificati.
Attività: BigQuery ti consente di pianificare query e stream o di integrare gli stream nelle query con Datastream. Snowflake può combinare le attività con gli stream di tabelle per flussi di lavoro di estrazione, caricamento e trasferimento continui al fine di elaborare le righe di tabella modificate di recente.
Funzioni esterne:BigQuery supporta mediante le funzioni di Cloud Run. Tuttavia, puoi anche utilizzare funzioni definite dall'utente (UDF) come le UDF SQL, anche se queste funzioni non vengono eseguite all'esterno di BigQuery. In Snowflake, una funzione esterna chiama il codice che viene eseguito al di fuori di Snowflake. Ad esempio, le informazioni inviate a un servizio remoto vengono in genere inoltrate tramite un servizio proxy.
Esegui la migrazione dei dati da Snowflake a BigQuery
Questa sezione descrive come configurare e avviare la migrazione da Snowflake a BigQuery in base al framework descritto in Migrazione dei data warehouse in BigQuery: cosa e come eseguire la migrazione.
Architettura
Per avviare la migrazione, devi eseguire sia Snowflake che BigQuery. Il seguente diagramma mostra un'architettura che influisce minimamente sulle operazioni esistenti. Trasferendo dati puliti e sottoposti a controllo della qualità, puoi riutilizzare gli strumenti e le procedure esistenti, scaricando al contempo i carichi di lavoro su BigQuery. Puoi e convalidare report e dashboard rispetto alle versioni precedenti. Tuttavia, poiché i dati OLAP vengono gestiti in posizioni ridondanti, questa operazione non è economicamente vantaggiosa. Inoltre, prolunga il tempo di elaborazione.
- Il punto 1 mostra lo spostamento dei dati da Snowflake a Cloud Storage.
- Il punto 2 mostra la persistenza dei dati in BigQuery.
- Il punto 3 mostra come vengono inviati i dati all'utente finale.
Puoi convalidare report e dashboard rispetto a iterazioni precedenti. Per ulteriori informazioni, consulta Migrazione dei data warehouse in BigQuery: verifica e convalida.
L'architettura finale per la migrazione del data warehouse contiene tutti i dati dei sistemi di origine direttamente in Google Cloud. In base al numero e la complessità dei sistemi di origine, la realizzazione di questa architettura può ulteriormente affrontando i sistemi di origine uno alla volta secondo la priorità, interdipendenze, rischi di integrazione o altri fattori aziendali.
Il seguente diagramma presuppone la migrazione delle pipeline di dati e l'importazione verso in Google Cloud.
- Il punto 1 mostra i punti di integrazione sia sincroni che asincroni. L'integrazione sincrona avviene, ad esempio, tra origini dati e con App Engine quando si gestiscono casi d'uso che richiedono azioni esplicite dell'utente nell'ambito del flusso.
- Il punto 2 mostra con Pub/Sub per grandi volumi di dati sugli eventi simultanei.
- Il punto 3 mostra la persistenza dei dati utilizzando uno o più prodotti Google Cloud, a seconda della natura dei dati.
- Il punto 4 mostra il processo ETL (Extract, Transform, Load) in BigQuery.
prepara l'ambiente Cloud Storage
Google Cloud offre diversi modi per trasferire i dati in BigQuery utilizzando altri strumenti ETL. Lo schema è il seguente:
Estrai i dati dall'origine: copia i file estratti dall'origine nello spazio di archiviazione di staging nel tuo ambiente on-premise. Per ulteriori informazioni, consulta Migrazione dei data warehouse in BigQuery: estrazione dei dati di origine.
Trasferisci i dati in un bucket temporaneo di Cloud Storage: al termine dell'estrazione dei dati dall'origine, trasferiscili in un bucket temporaneo in Cloud Storage. A seconda della quantità di dati da importare il trasferimento e la larghezza di banda di rete disponibile, sono disponibili diverse opzioni.
È importante assicurarsi che la posizione del set di dati BigQuery e dell'origine dati esterna o del bucket Cloud Storage si trovino nella stessa regione. Per ulteriori informazioni considerazioni sulla posizione geografica per il caricamento dei dati da Cloud Storage, consulta Caricamento in batch dei dati.
Carica i dati dal bucket Cloud Storage in BigQuery: i tuoi dati si trovano ora in Cloud Storage più vicino alla sua destinazione. Esistono diverse opzioni per per caricare i dati in BigQuery. Queste opzioni dipendono dalla quantità di trasformazione necessaria per i dati. In alternativa, puoi trasformare i dati in BigQuery seguendo l'approccio ETL.
Quando importi i dati in blocco da un file JSON, un file Avro o file CSV, BigQuery rileva automaticamente lo schema, così necessario predefinire la data. Per avere una panoramica dettagliata della migrazione dello schema, per i carichi di lavoro EDW, consulta Procedura di migrazione di schemi e dati.
Tipi di dati, proprietà e formati di file supportati
Snowflake e BigQuery supportano la maggior parte degli stessi tipi di dati, anche se a volte utilizzano nomi diversi. Per un elenco completo dei tipi di dati supportati in Snowflake e BigQuery, consulta la sezione Tipi di dati del riferimento alla traduzione SQL di Snowflake. Puoi anche usare il traduttore SQL batch per tradurre Per ulteriori informazioni sui tipi di dati supportati da BigQuery, consulta Tipi di dati GoogleSQL.
Snowflake può esportare dati nei seguenti formati file. Puoi caricare formati direttamente in BigQuery:
- CSV: vedi Caricamento di dati CSV da Cloud Storage.
- Parquet: consulta Caricare dati Parquet da Cloud Storage.
- JSON (delimitato da nuova riga): consulta Caricare dati JSON da Cloud Storage.
Modifiche allo schema
Se prevedi di apportare modifiche allo schema durante la migrazione a BigQuery, ti consigliamo di eseguire prima la migrazione dello schema così com'è. BigQuery supporta una vasta gamma di pattern di progettazione del modello di dati, come schema a stella o schema a fiocco di neve. A causa di questo supporto, non è necessario aggiornare le pipeline di dati upstream per un nuovo schema e potrai usare gli strumenti di migrazione automatizzati per i dati e lo schema.
Aggiornamento di uno schema
Una volta che i dati sono in BigQuery, puoi sempre apportare aggiornamenti allo schema, ad esempio aggiungere colonne alla definizione dello schema o allentare la modalità di una colonna da REQUIRED
a NULLABLE
.
Ricorda che BigQuery utilizza convenzioni di denominazione sensibili alle maiuscole per il nome della tabella, mentre Snowflake utilizza pattern di denominazione senza distinzione tra maiuscole e minuscole. Questa convenzione significa che potrebbe essere necessario rivedere eventuali incongruenze nel convenzioni di denominazione delle tabelle che potrebbero esistere in Snowflake e correggere eventuali incoerenze emerse durante il passaggio a BigQuery. Per ulteriori informazioni sulla modifica dello schema, consulta Modificare gli schemi delle tabelle.
Alcune modifiche dello schema non sono supportate direttamente in BigQuery e richiedono soluzioni manuali, tra cui:
- Modifica del nome di una colonna.
- Modifica del tipo di dati di una colonna.
- Modifica della modalità di una colonna (ad eccezione di rilassare
REQUIRED
colonne aNULLABLE
).
Per istruzioni specifiche su come implementare manualmente queste modifiche allo schema, vedi Modifica manualmente gli schemi delle tabelle.
Ottimizzazione
Dopo la migrazione dello schema, puoi testare il rendimento e apportare ottimizzazioni in base ai risultati. Ad esempio, puoi introdurre il partizionamento per gestire e eseguire query sui dati in modo più efficiente. La suddivisione in partizioni in BigQuery si riferisce a una tabella speciale divisa in segmenti chiamati partizioni. La suddivisione in parti è diversa dal micropartizionamento in Snowflake, che avviene automaticamente al caricamento dei dati. Il partizionamento di BigQuery consente di migliorare le prestazioni delle query e il controllo dei costi suddividendo i dati in base all'ora di importazione, al timestamp o all'intervallo di numeri interi. Per ulteriori informazioni, vedi Introduzione alle tabelle partizionate.
Tabelle in cluster
Le tabelle clusterizzate sono un'altra ottimizzazione dello schema. BigQuery, come Snowflake, ti consente di raggruppare le tabelle, in modo da organizzare automaticamente i dati delle tabelle in base ai contenuti di una o più colonne nello schema della tabella. BigQuery utilizza le colonne da te specificate per collocare le relative e i dati di Google Cloud. Il clustering può migliorare le prestazioni di determinati tipi di query, ad esempio quelle che usano clausole di filtro o quelle che aggregano dati. Per maggiori informazioni su come funzionano le tabelle in cluster in BigQuery, consulta Introduzione alle tabelle in cluster.
Strumenti di migrazione
L'elenco seguente descrive gli strumenti che puoi utilizzare per eseguire la migrazione dei dati da Snowflake a BigQuery. Questi strumenti vengono combinati Esempi di migrazione mediante pipeline per creare le pipeline di migrazione end-to-end.
- Comando
COPY INTO <location>
: utilizza questo comando in Snowflake per scaricare i dati da una tabella Snowflake direttamente in un bucket Cloud Storage specificato. Per una configurazione end-to-end vedi gli esempi Da Snowflake a BigQuery (snowflake2bq) su GitHub. - Apache Sqoop: Per estrarre i dati da Snowflake in HDFS o Cloud Storage: inviare job Hadoop con il driver JDBC di Sqoop e Snowflake. Sqoop viene eseguito in un ambiente Dataproc.
- JSON Snowflake: Utilizza questo driver con la maggior parte degli strumenti o delle applicazioni client che supportano JDBC.
Puoi utilizzare i seguenti strumenti generici per eseguire la migrazione dei dati da Snowflake a BigQuery:
- BigQuery Data Transfer Service: Esegui un trasferimento batch automatizzato dei dati di Cloud Storage in BigQuery con questo servizio completamente gestito. Questo strumento richiede di esportare prima i dati di Snowflake in Cloud Storage.
- Google Cloud CLI: Copia i file Snowflake scaricati in Cloud Storage con questo a strumento a riga di comando.
- Strumento a riga di comando bq: interagisci con BigQuery utilizzando questo strumento a riga di comando. I casi d'uso comuni includono la creazione di schemi di tabelle BigQuery, il caricamento dei dati di Cloud Storage nelle tabelle ed l'esecuzione di query.
- Librerie client di Cloud Storage: Copia i file Snowflake scaricati in Cloud Storage con un personalizzato che utilizza le librerie client di Cloud Storage.
- Librerie client di BigQuery: Interagisci con BigQuery con uno strumento personalizzato basato su in alto nella libreria client di BigQuery.
- Pianificatore delle query BigQuery: pianifica le query SQL ricorrenti con questa funzionalità di BigQuery integrata.
- Cloud Composer: Utilizza questo ambiente Apache Airflow completamente gestito per l'orchestrazione Job e trasformazioni di caricamento di BigQuery.
Per ulteriori informazioni sul caricamento dei dati in BigQuery, consulta Caricare i dati in BigQuery.
Esempi di migrazione utilizzando le pipeline
Le sezioni seguenti mostrano esempi di come eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando tre diverse tecniche: estrazione e caricamento, ETL e strumenti di partner.
Estrazione e caricamento
La tecnica di estrazione e caricamento offre due metodi:
- Usa una pipeline per eseguire l'unload dei dati da Snowflake
- Utilizzare una pipeline e un driver JDBC per esportare i dati da Snowflake
Utilizzare una pipeline per scaricare i dati da Snowflake
A
unload dei dati da Snowflake
direttamente in Cloud Storage (opzione consigliata) oppure
scaricare i dati
e copiarlo in Cloud Storage usando gcloud CLI
Librerie client di Cloud Storage, usa lo strumento snowflake2bq per eseguire la migrazione
utilizzando il comando
Snowflake COPY INTO <location>
.
Quindi caricherai i dati di Cloud Storage in BigQuery con uno dei seguenti strumenti:
- BigQuery Data Transfer Service
- Strumento a riga di comando
bq
- Librerie client dell'API BigQuery
Utilizzare una pipeline e un driver JDBC per esportare i dati da Snowflake
Utilizza uno qualsiasi dei seguenti prodotti per esportare i dati Snowflake con il driver JDBC da Snowflake:
- Dataflow:
- Cloud Data Fusion
- Dataproc
- BigQuery con Apache Spark
- Connettore Snowflake per Spark
- BigQuery Connector per Spark e Hadoop
- Il driver JDBC di Snowflake e Sqoop per estrarre i dati da Snowflake in Cloud Storage:
Estrai, trasforma e carica
Se vuoi trasformare i dati prima di caricarli in BigQuery, puoi aggiungere un passaggio di trasformazione nelle pipeline descritte nella sezione Estrazione e caricamento precedente.
Trasforma i dati Snowflake
Per trasformare i dati prima di caricarli in BigQuery: puoi eseguire l'unload dei dati direttamente da Snowflake a Cloud Storage o utilizzare gcloud CLI per copiare i dati, come descritto Estrai e carica.
Carica i dati Snowflake
Dopo aver trasformato i dati, caricali in BigQuery con uno dei seguenti metodi:
- Dataproc
- Leggi da Cloud Storage con Apache Spark
- Scrivere in BigQuery con Apache Spark
- Connettore Cloud Storage di Hadoop
- Connettore BigQuery per Hadoop
- Dataflow:
- Lettura da Cloud Storage
- Scrivi in BigQuery
- Modello fornito da Google: Testo Cloud Storage a BigQuery
- Cloud Data Fusion
- Dataprep di Trifacta
Utilizzare una pipeline e un driver JDBC per trasformare ed esportare i dati da Snowflake
Aggiungi un passaggio di trasformazione nelle seguenti opzioni di pipeline come descritto nella sezione precedente Estrazione e caricamento.
- Dataflow
- clona il modello fornito da Google Modello da JDBC a BigQuery e modificare il modello per aggiungere trasformazioni Apache Beam.
- Cloud Data Fusion
- Trasforma i dati utilizzando i plug-in CDAP.
- Dataproc
- Trasforma i tuoi dati utilizzando SQL Spark o codice personalizzato in uno dei linguaggi Spark supportati (Scala, Java, Python o R).
Potresti avere un caso d'uso di estrazione, caricamento e trasformazione per caricare i dati da Snowflake in BigQuery e poi trasformarli. Per eseguire questa attività, carica i dati da Snowflake in una tabella di gestione temporanea BigQuery utilizzando uno dei metodi descritti nella sezione Estrazione e caricamento precedente. Quindi, esegui delle query SQL nella tabella temporanea e scrivi l'output nel modulo in BigQuery.
Strumenti dei partner per la migrazione
Esistono diversi fornitori specializzati nel campo della migrazione EDW. Per un un elenco dei partner principali e delle soluzioni fornite; consulta Sito web del partner BigQuery di Google Cloud.
Esempi del processo di esportazione
Le sezioni seguenti mostrano un esempio di esportazione dei dati da Snowflake a
BigQuery che utilizza il comando COPY INTO <location>
Snowflake.
Per un processo dettagliato e dettagliato che include esempi di codice, consulta
il
Strumento per i servizi professionali di Google Cloud da Snowflake a BigQuery.
Prepara l'esportazione
Per lo scarico, utilizza le istruzioni SQL di Snowflake per creare una specifica del formato file denominato.
Questo tutorial utilizza my_parquet_unload_format
per il formato file, ma puoi
utilizzare un altro nome.
create or replace file format my_parquet_unload_format
type = 'PARQUET'
field_delimiter = '|'
Esportare i dati di Snowflake
Dopo aver preparato i dati, devi spostarli in Google Cloud. Puoi eseguire questo passaggio in uno dei due modi seguenti:
- Esportazione dei dati direttamente in Cloud Storage da Snowflake.
- Gestione temporanea dei dati Snowflake in un Amazon Simple Storage Service (Amazon S3) o Archiviazione BLOB di Azure.
Per evitare un trasferimento dati aggiuntivo, esporta direttamente i dati.
Esporta i dati Snowflake direttamente in Cloud Storage
Le istruzioni riportate di seguito mostrano come utilizzare il comando COPY
di Snowflake per scaricare i dati da Snowflake in Cloud Storage:
In Snowflake, configura un oggetto di integrazione dello spazio di archiviazione per consentire a Snowflake di scrivere in un bucket Cloud Storage a cui viene fatto riferimento in un'area intermedia Cloud Storage esterna.
Questo passaggio prevede diversi passaggi secondari.
Crea un'integrazione con il comando
CREATE STORAGE INTEGRATION
:create storage integration gcs_int type = external_stage storage_provider = gcs enabled = true storage_allowed_locations = ('gcs://mybucket/unload/')
Recuperare l'account di servizio Cloud Storage per Snowflake con
DESCRIBE INTEGRATION
e concedere all'account di servizio le autorizzazioni per accedere Bucket Cloud Storage selezionato come area temporanea:desc storage integration gcs_int;
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | gcs://mybucket1/path1/,gcs://mybucket2/path2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | gcs://mybucket1/path1/sensitivedata/,gcs://mybucket2/path2/sensitivedata/ | [] | | STORAGE_GCP_SERVICE_ACCOUNT | String | service-account-id@project1-123456.iam.gserviceaccount.com | | +-----------------------------+---------------+--------------------------------------------------------- --------------------+------------------+
Crea una fase Cloud Storage esterna facendo riferimento all'integrazione che hai creato con il comando
CREATE STAGE
:create or replace stage my_ext_unload_stage url='gcs://mybucket/unload' storage_integration = gcs_int file_format = my_parquet_unload_format;
Utilizza il comando
COPY INTO <location>
per copiare i dati dal Tabella di database Snowflake in un bucket Cloud Storage specificando l'oggetto esterno dello stage che hai creato nel passaggio precedente:copy into @my_ext_unload_stage/d1 from mytable;
Esporta i dati Snowflake in Cloud Storage tramite Storage Transfer Service da Amazon S3
L'esempio seguente mostra come
unload di dati da una tabella Snowflake a un bucket Amazon S3
con il comando COPY
:
In Snowflake, configurare un oggetto di integrazione Storage per consentire a Snowflake di scrivere in un bucket Amazon S3 a cui viene fatto riferimento in un dalla fase esterna di Cloud Storage.
Questo passaggio prevede configurazione delle autorizzazioni di accesso al bucket Amazon S3, creando il ruolo AWS IAM, e la creazione di un'integrazione dello spazio di archiviazione in Snowflake con il comando
CREATE STORAGE INTEGRATION
:create storage integration s3_int type = external_stage storage_provider = s3 enabled = true storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole' storage_allowed_locations = ('s3://unload/files/')
Recuperare l'utente AWS IAM con Comando
DESCRIBE INTEGRATION
:desc integration s3_int;
+---------------------------+---------------+================================================================================+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+================================================================================+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=
| | +---------------------------+---------------+================================================================================+------------------+ Concedi le autorizzazioni utente AWS IAM per accedere al bucket Amazon S3 e crea uno stage esterno con il comando
CREATE STAGE
:create or replace stage my_ext_unload_stage url='s3://unload/files/' storage_integration = s3_int file_format = my_parquet_unload_format;
Utilizza il comando
COPY INTO <location>
per copiare i dati da Snowflake nel bucket Amazon S3 specificando l'oggetto stage esterno creato in precedenza:copy into @my_ext_unload_stage/d1 from mytable;
Trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.
Esporta i dati Snowflake in Cloud Storage tramite altri cloud provider:
Archiviazione BLOB di Azure Segui i passaggi descritti in Unload in Microsoft Azure. Trasferisci poi i file esportati in Cloud Storage utilizzando Storage Transfer Service.
Bucket Amazon S3 Segui i passaggi descritti in l'unload in Amazon S3. Quindi, trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.
Passaggi successivi
- Dopo la migrazione del rendimento e dell'ottimizzazione.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.