Migrazione da Snowflake a BigQuery

Questo documento fornisce informazioni tecniche su come eseguire la migrazione dei dati da Snowflake a BigQuery. Copre le differenze di base tra Snowflake e 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 una procedura 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 ai termini BigQuery equivalenti:

Snowflake BigQuery
Database Set di dati
Schema Schema
Tabella temporanea o transitoria specifica della sessione Tabella anonima o temporanea
Visualizza Visualizza
Visualizzazioni sicure Visualizzazioni autorizzate
Magazzino 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 le 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 dalle soluzioni di data warehouse cloud basate su nodi o dai sistemi MPP. Disaccoppia l'archiviazione e il calcolo, il che consente di scalare in modo indipendente in base alla domanda. Per ulteriori informazioni, consulta Uno sguardo approfondito a BigQuery.

Confronto dell'interfaccia utente

L'interfaccia web di Snowflake rispecchia l'interfaccia a riga di comando (CLI) di Snowflake. Entrambe le interfacce ti consentono di:

  • Gestire i database
  • Gestire i magazzini
  • 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 CLI di Snowflake utilizza SnowSQL per connettersi a Snowflake ed eseguire query SQL 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 ed eseguire query, lavorare con tabelle e viste, visualizzare la cronologia dei job di BigQuery ed eseguire altre attività comuni di BigQuery.
  • La sezione Trasferimenti di dati apre la pagina di BigQuery Data Transfer Service.
  • La sezione Query programmate mostra le query programmate.
  • La sezione Gestione della capacità mostra gli impegni per gli slot, le prenotazioni e le assegnazioni delle prenotazioni.
  • La sezione Motore BI apre la pagina BigQuery BI Engine.

BigQuery dispone anche di 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 di account e utenti
  • Sicurezza degli oggetti
  • Sicurezza dei dati
  • Convalide di sicurezza

La sicurezza su Snowflake si basa sulle funzionalità del tuo provider cloud. Fornisce un controllo granulare sull'accesso agli oggetti, alle operazioni sugli oggetti e su chi può creare o modificare i criteri di controllo dell'accesso.

I ruoli BigQuery paralleli ai privilegi di controllo dell'accesso#39;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 le misure di sicurezza avanzate sono offerte come funzionalità standard senza costi aggiuntivi.

Snowflake fornisce la crittografia end-to-end, in cui cripta automaticamente tutti i dati archiviati. Google Cloud offre la stessa funzionalità criptando per impostazione predefinita tutti i dati at rest e in transito.

Come Snowflake Business Critical, 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 ulteriori informazioni 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 e revocare i privilegi sugli oggetti con possibilità di controllo.

Snowflake supporta i seguenti due tipi di ruoli:

  • Ruoli definiti dal sistema: si tratta di ruoli composti 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 qualsiasi ruolo con il privilegio CREATE ROLE. Ogni ruolo personalizzato in Snowflake è costituito da privilegi.

In IAM, le autorizzazioni sono raggruppate in ruoli. IAM offre tre tipi di ruoli:

  • Ruoli di base: includono i ruoli Proprietario, Editor e Visualizzatore. Puoi applicare questi ruoli a livello di risorsa del progetto o del 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 dell'accesso.
  • Ruoli personalizzati: questi ruoli sono composti da autorizzazioni specificate dall'utente.

Controllo degli accessi

Snowflake ti 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 il livello di organizzazione, il livello di cartella, il livello di progetto e il livello di risorsa. Puoi impostare i ruoli IAM a qualsiasi livello della gerarchia e le risorse ereditano tutti i criteri delle risorse principali.

Sia Snowflake sia BigQuery supportano 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 una vista. Puoi concedere a un utente l'accesso a tabelle o viste specifiche senza concedergli l'accesso al set di dati completo.

Snowflake utilizza anche la sicurezza a livello di riga e la sicurezza a livello di colonna.

In BigQuery, IAM fornisce un 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 viste autorizzate per limitare l'accesso ai dati per controllo dell'accesso più granulare in modo che gli utenti specificati possano 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, potresti dover utilizzare altri servizi in Google Cloud.

  • Viaggio nel tempo:in BigQuery puoi utilizzare il viaggio nel tempo per accedere ai dati di qualsiasi punto degli ultimi sette giorni. Se devi accedere ai dati oltre sette giorni, ti consigliamo di esportare istantanee pianificate 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 ulteriori informazioni sulla progettazione manuale di una pipeline CDC con BigQuery, consulta Migrazione dei data warehouse in BigQuery: Change Data Capture (CDC). In Snowflake, un oggetto stream registra le modifiche data manipulation language apportate alle tabelle, nonché i metadati di ogni modifica, in modo da poter eseguire azioni sui 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 le chiamate di funzioni esterne tramite le funzioni Cloud Run. Tuttavia, puoi utilizzare anche funzioni definite dall'utente (UDF) come le UDF SQL, anche se queste funzioni non vengono eseguite al di fuori 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 anche convalidare i report e le dashboard rispetto alle versioni precedenti. Tuttavia, poiché i dati OLAP vengono gestiti in posizioni ridondanti, questa operazione non è economicamente valida. Inoltre, prolunga il tempo di elaborazione.

  • Il punto 1 mostra il trasferimento 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 i report e le dashboard rispetto alle vecchie iterazioni. Per ulteriori informazioni, consulta Migrazione dei data warehouse in BigQuery: verifica e convalida.

Una migrazione continua di Snowflake a BigQuery.

L'architettura finale per la migrazione del data warehouse contiene tutti i dati dei sistemi di origine direttamente in Google Cloud. A seconda del numero e della complessità dei sistemi di origine, l'implementazione di questa architettura può essere ulteriormente suddivisa in fasi affrontando i sistemi di origine uno alla volta in base a priorità, interdipendenze, rischi di integrazione o altri fattori aziendali.

Il seguente diagramma presuppone la migrazione delle pipeline di dati e l'importazione in Google Cloud.

  • Il punto 1 mostra i punti di integrazione sia sincroni che asincroni. L'integrazione sincrona avviene, ad esempio, tra le origini dati e App Engine quando si tratta di casi d'uso che richiedono azioni utente esplicite nell'ambito del flusso.
  • Il punto 2 mostra l'utilizzo di 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 di estrazione, trasformazione e caricamento (ETL) in BigQuery.

Post-migrazione da Snowflake a BigQuery.

Prepara l'ambiente Cloud Storage

Google Cloud offre diversi modi per trasferire i dati in BigQuery utilizzando altri strumenti ETL. Il pattern è il seguente:

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

  2. Trasferisci i dati in un bucket gestione temporanea di Cloud Storage:al termine dell'estrazione dei dati dall'origine, trasferiscili in un bucket gestione temporanea in Cloud Storage. A seconda della quantità di dati trasferiti e della larghezza di banda di rete disponibile, hai 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 sulle considerazioni relative alla posizione geografica per il caricamento dei dati da Cloud Storage, consulta Caricare i dati in batch.

  3. Carica i dati dal bucket Cloud Storage in BigQuery: i tuoi dati si trovano ora in un bucket Cloud Storage, vicino alla destinazione. Esistono diverse opzioni 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 collettivamente da un file JSON, un file Avro o un file CSV, BigQuery rileva automaticamente lo schema, quindi non devi predefinirlo. Per una panoramica dettagliata del processo di migrazione dello schema per i carichi di lavoro EDW, consulta Procedura di migrazione di schema e dati.

Tipi di dati, proprietà e formati 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 utilizzare il traduttore SQL batch per tradurre Per ulteriori informazioni sui tipi di dati supportati da BigQuery, consulta Tipi di dati GoogleSQL.

Snowflake può esportare i dati nei seguenti formati file. Puoi caricare i formati direttamente in BigQuery:

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 dei dati, come schema a stella o schema a fiocco di neve. Grazie a questo supporto, non devi aggiornare le pipeline di dati a monte per un nuovo schema e puoi utilizzare strumenti di migrazione automatica per trasferire 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.

Tieni presente che BigQuery utilizza convenzioni di denominazione sensibili alle maiuscole per il nome della tabella, mentre Snowflake utilizza pattern di denominazione insensibili alle maiuscole. Questa convenzione significa che potresti dover rivedere eventuali incoerenze nelle convenzioni di denominazione delle tabelle esistenti in Snowflake e correggere eventuali incoerenze che si sono verificate 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 alternative manuali, tra cui le seguenti:

  • Modifica del nome di una colonna.
  • Modifica del tipo di dati di una colonna.
  • Modifica della modalità di una colonna (ad eccezione dell'allentamento delle colonne REQUIRED in NULLABLE).

Per istruzioni specifiche su come implementare manualmente queste modifiche dello schema, consulta Modificare 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, consulta Introduzione alle tabelle partizionate.

Tabelle in cluster

Le tabelle cluster 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 specificate per collocare vicini i dati correlati. 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 ulteriori informazioni su come funzionano le tabelle in cluster in BigQuery, consulta la pagina 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 sono combinati nella sezione Esempi di migrazione utilizzando le pipeline per mettere insieme 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 un example end-to-end, consulta Snowflake to BigQuery (snowflake2bq) su GitHub.
  • Apache Sqoop: per estrarre i dati da Snowflake in HDFS o Cloud Storage, invia i job Hadoop con il driver JDBC da Sqoop e Snowflake. Sqoop viene eseguito in un ambiente Dataproc.
  • Snowflake JDBC: utilizza questo driver con la maggior parte degli strumenti o delle applicazioni client che supportano JDBC.

Per eseguire la migrazione dei dati da Snowflake a BigQuery, puoi utilizzare i seguenti strumenti generici:

  • BigQuery Data Transfer Service: esegui un trasferimento batch automatico 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 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 uno strumento personalizzato che utilizza le librerie client di Cloud Storage.
  • Librerie client di BigQuery: interagisci con BigQuery con uno strumento personalizzato basato sulla 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 orchestrare i caricamenti e le trasformazioni 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:

  • Utilizzare una pipeline per scaricare i 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

Per scaricare i dati da Snowflake direttamente in Cloud Storage (opzione consigliata) o per scaricare i dati e copiarli in Cloud Storage utilizzando l'interfaccia alla gcloud CLI o le librerie client di Cloud Storage, utilizza lo strumento snowflake2bq per eseguire la migrazione dei dati utilizzando il comando COPY INTO <location> di Snowflake.

Carica poi i dati di Cloud Storage in BigQuery con uno tra i 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 dei seguenti prodotti per esportare i dati di Snowflake con il driver JDBC da Snowflake:

Estrazione, trasformazione e caricamento

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.

Trasformare i dati di Snowflake

Per trasformare i dati prima di caricarli in BigQuery, scaricali direttamente da Snowflake in Cloud Storage o utilizza l'interfaccia alla gcloud CLI per copiarli, come descritto nella sezione precedente Estrazione e caricamento.

Carica i dati di Snowflake

Dopo aver trasformato i dati, caricali in BigQuery con uno dei seguenti metodi:

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.

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. Poi, esegui query SQL sulla tabella intermedia e scrivi l'output nella tabella di produzione finale in BigQuery.

Strumenti dei partner per la migrazione

Esistono diversi fornitori specializzati nello spazio di migrazione EDW. Per un elenco dei partner chiave e delle soluzioni fornite, consulta il sito web dei 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 una procedura dettagliata passo passo che include esempi di codice, consulta lo strumento Snowflake to BigQuery dei servizi professionali Google Cloud.

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 scegliere un nome diverso.

   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 su Google Cloud. Puoi eseguire questo passaggio in uno dei due modi seguenti:

  1. Esportare i dati direttamente in Cloud Storage da Snowflake.
  2. Esegui il staging dei dati di Snowflake in un bucket Amazon Simple Storage Service (Amazon S3) o in Azure Blob Storage.

Per evitare un trasferimento dati aggiuntivo, esporta direttamente i dati.

Esportare i dati di 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:

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

    1. 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/')
      
    2. Recupera l'account di servizio Cloud Storage per Snowflake con il comando DESCRIBE INTEGRATION e concedi all'account di servizio le autorizzazioni per accedere al 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                  |                  |
      +-----------------------------+---------------+---------------------------------------------------------
      --------------------+------------------+
      
    3. 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;
      
  2. Utilizza il comando COPY INTO <location> per copiare i dati dalla tabella del database Snowflake in un bucket Cloud Storage specificando l'oggetto stage esterno creato nel passaggio precedente:

    copy into @my_ext_unload_stage/d1
    from mytable;
    

Esportare i dati di Snowflake in Cloud Storage tramite Storage Transfer Service da Amazon S3

L'esempio seguente mostra come scaricare i dati da una tabella Snowflake in un bucket Amazon S3 utilizzando il comando COPY:

  1. In Snowflake, configura un oggetto di integrazione dello spazio di archiviazione per consentire a Snowflake di scrivere in un bucket Amazon S3 a cui viene fatto riferimento in una fase Cloud Storage esterna.

    Questo passaggio prevede la configurazione delle autorizzazioni di accesso al bucket Amazon S3, la creazione del ruolo AWS IAM e la creazione di un'integrazione 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/')
    
  2. Recupero dell'utente AWS IAM con il 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=                                                   |                  |
    +---------------------------+---------------+================================================================================+------------------+
    
  3. 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;
    
  4. Utilizza il comando COPY INTO <location> per copiare i dati dal database Snowflake nel bucket Amazon S3 specificando l'oggetto stage esterno che hai creato in precedenza:

      copy into @my_ext_unload_stage/d1 from mytable;
    
  5. Trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.

Esporta i dati di Snowflake in Cloud Storage tramite altri provider cloud:

Archiviazione BLOB di Azure Segui i passaggi descritti in Scarico in Microsoft Azure. Trasferisci poi i file esportati in Cloud Storage utilizzando Storage Transfer Service.

Bucket Amazon S3 Segui i passaggi descritti in dettaglio in Scarico in Amazon S3. Trasferisci poi i file esportati in Cloud Storage utilizzando Storage Transfer Service.

Passaggi successivi