Migrazione da Snowflake a BigQuery

Questo documento fornisce un contesto tecnico su come eseguire la migrazione dei dati da Snowflake a BigQuery. Descrive le differenze fondamentali tra Snowflake e BigQuery. Fornisce inoltre indicazioni per una migrazione di successo, 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 in batch per eseguire la migrazione collettiva degli script SQL oppure la traduzione SQL interattiva per tradurre le query ad hoc. SQL Snowflake è supportato da entrambi gli strumenti in preview.

Terminologia

Questo documento utilizza la terminologia Snowflake e BigQuery per descrivere le funzionalità offerte da ciascun prodotto. La seguente tabella mappa i termini Snowflake ai termini BigQuery equivalenti:

Snowflake BigQuery
Database Set di dati
Schema Schema
Tabella temporanea o temporanea specifica della sessione Tabella anonima o temporanea
Visualizza Visualizza
Visualizzazioni sicure Visualizzazioni autorizzate
Warehouse virtuale Prenotazione
Vista materializzata Vista materializzata
Nessun equivalente per il partizionamento (perché viene utilizzato il micro partizionamento) Partizionamento
Clustering Clustering
Funzioni definite dall'utente (UDF) con sicurezza avanzata UDF autorizzate

Confronto tra architettura

Snowflake e BigQuery sono entrambi data warehouse analitici, ma presentano alcune differenze di architettura fondamentali.

L'architettura di Snowflake è un ibrido tra architetture di database su dischi condivisi tradizionali e architetture di database senza condivisione. Come per le architetture senza condivisione, i dati in Snowflake sono gestiti in un servizio di archiviazione di oggetti Cloud separato. Come nell'architettura di un disco condiviso, le query in Snowflake utilizzano cluster di calcolo dedicati. In Snowflake, ogni cluster gestisce parti dell'intero set di dati memorizzate nella cache per accelerare le prestazioni delle query. Per ulteriori informazioni, vedi Architettura a fiocco di neve.

L'architettura di BigQuery è molto diversa dalle tradizionali soluzioni di data warehouse su cloud basate su nodi o dai sistemi MPP. Disaccoppia archiviazione e computing, consentendo loro di scalare in modo indipendente on demand. Per ulteriori informazioni, consulta Informazioni su BigQuery.

Confronto tra interfacce utente

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

  • Gestisci database
  • Gestisci warehouse
  • Gestire query e fogli di lavoro
  • Visualizzare le query storiche

L'interfaccia web consente anche di gestire la password e le preferenze utente di Snowflake.

Il client dell'interfaccia a riga di comando Snowflake utilizza SnowSQL per la connessione a Snowflake ed eseguire query SQL e altre operazioni.

L'interfaccia di 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 viste e altre risorse BigQuery. Qui puoi creare ed eseguire query, lavorare con tabelle e viste, visualizzare la cronologia dei job BigQuery ed eseguire altre attività comuni di BigQuery.
  • La sezione Trasferimenti di dati apre la pagina BigQuery Data Transfer Service.
  • La sezione Query pianificate mostra le query pianificate.
  • La sezione Gestione della capacità mostra impegni slot, prenotazioni e assegnazioni di prenotazioni.
  • La sezione BI Engine apre la pagina di BigQuery BI Engine.

BigQuery dispone inoltre di uno strumento a riga di comando basato su Python. Per ulteriori informazioni, consulta la pagina relativa all'utilizzo dello 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 rispetto a Snowflake.

Snowflake ha varie funzionalità di sicurezza tra cui:

  • Accesso alla rete e al sito
  • Autenticazione di account e utenti
  • Sicurezza degli oggetti
  • Protezione dei dati
  • Convalide della sicurezza

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

BigQuery parallelamente ai privilegi di controllo dell'accesso di Snowflake sono i ruoli IAM (Identity and Access Management) di 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. Queste versioni hanno prezzi diversi. In BigQuery, tutte le funzionalità e le misure di sicurezza avanzate sono offerte come funzionalità standard senza costi aggiuntivi.

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

Analogamente alla versione 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 privilegi per gli oggetti protetti.

Snowflake supporta i seguenti due tipi di ruoli:

  • Ruoli definiti dal sistema: questi ruoli includono 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 ruolo che abbia il privilegio CREATE ROLE. Ogni ruolo personalizzato in Snowflake è composto da privilegi.

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

  • Ruoli di base: questi ruoli includono i ruoli Proprietario, Editor e Visualizzatore. Puoi applicare questi ruoli a livello di progetto o risorsa di servizio utilizzando la console Google Cloud, l'API Identity and Access Management o gcloud CLI. In generale, per la massima sicurezza, 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 pensati per supportare casi d'uso comuni e pattern di controllo dell'accesso.
  • Ruoli personalizzati: questi ruoli sono composti da autorizzazioni specificate dall'utente.

Controllo dell'accesso

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

Sia Snowflake che 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 visualizzazione. 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 il 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 sui tipi.

Puoi anche creare visualizzazioni autorizzate per limitare l'accesso ai dati e ottenere un controllo dell'accesso più granulare in modo che utenti specifici possano eseguire query su una vista senza avere accesso in lettura alle tabelle sottostanti.

Aspetti da considerare durante la migrazione

Ci sono alcune funzionalità di Snowflake che non puoi trasferire direttamente in BigQuery. Ad esempio, BigQuery non offre supporto integrato per gli scenari seguenti. In questi scenari, potrebbe essere necessario utilizzare altri servizi in Google Cloud.

  • Viaggio nel tempo: in BigQuery puoi utilizzare il viaggio nel tempo per accedere ai dati da qualsiasi punto negli ultimi sette giorni. Se hai bisogno di accedere ai dati per oltre sette giorni, valuta la possibilità di esportare snapshot regolari pianificati. Snowflake ti consente di accedere ai dati storici (dati che sono stati modificati o eliminati) in qualsiasi momento entro un periodo definito. Puoi impostare qualsiasi valore per questo periodo, da 0 a 90 giorni.

  • Flussi: BigQuery supporta il Change Data Capture (CDC) con Datastream. Puoi anche utilizzare il 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 flusso registra le modifiche data manipulation language apportate alle tabelle e anche i metadati relativi a ogni modifica, in modo che tu possa intervenire con i dati modificati.

  • Attività: BigQuery consente di pianificare query e flussi o di integrare i flussi nelle query con Datastream. Snowflake può combinare le attività con flussi di tabelle per i flussi di lavoro continui di estrazione, caricamento e trasferimento al fine di elaborare le righe della tabella modificate di recente.

  • Funzioni esterne: BigQuery supporta le chiamate di funzioni esterne tramite Cloud Functions. Tuttavia, puoi anche utilizzare funzioni definite dall'utente come UDF SQL, anche se queste funzioni non vengono eseguite al di fuori di BigQuery. In Snowflake, una funzione esterna chiama un codice che viene eseguito al di fuori di Snowflake. Ad esempio, le informazioni inviate a un servizio remoto di solito vengono inoltrate attraverso un servizio proxy.

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 sia BigQuery. Il seguente diagramma mostra un'architettura che influisce in modo minimo sulle operazioni esistenti. Trasferendo dati puliti e controllati come qualità, puoi riutilizzare gli strumenti e i processi esistenti mentre esegui il trasferimento dei carichi di lavoro su BigQuery. Puoi anche convalidare report e dashboard rispetto a versioni precedenti. Ciononostante, poiché i dati OLAP vengono conservati in posizioni ridondanti, questa operazione non è economica. Inoltre, estende il tempo di elaborazione.

  • Il punto 1 mostra i dati in movimento da Snowflake a Cloud Storage.
  • Il punto 2 indica la persistenza dei dati in BigQuery.
  • Il punto 3 mostra come i dati vengono inviati all'utente finale.

Puoi convalidare report e dashboard in base a iterazioni precedenti. Per ulteriori informazioni, consulta Migrazione dei data warehouse in BigQuery: verifica e convalida.

Migrazione in corso di Snowflake a BigQuery.

L'architettura finale per la migrazione del data warehouse include tutti i dati dei sistemi di origine direttamente in Google Cloud. A seconda del numero e della complessità dei sistemi di origine, la distribuzione di questa architettura può essere ulteriormente graduale 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 sincroni e asincroni. L'integrazione sincrona è, ad esempio, tra le origini dati e App Engine quando si gestiscono casi d'uso che richiedono azioni esplicite dell'utente come parte del flusso.
  • Il punto 2 mostra l'uso 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 ETL (estrazione, trasformazione e caricamento) in BigQuery.

Da Snowflake a BigQuery dopo la migrazione.

Prepara l'ambiente Cloud Storage

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

  1. Estrai i dati dall'origine: copia i file estratti dall'origine nello spazio di archiviazione gestione temporanea 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 Cloud Storage gestione temporanea: dopo aver completato l'estrazione dei dati dall'origine, trasferiscili in un bucket gestione temporanea in Cloud Storage. A seconda della quantità di dati da trasferire e della larghezza di banda di rete disponibile, hai a disposizione diverse opzioni.

    È importante assicurarsi che la località 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 Caricamento in batch dei dati.

  3. Carica i dati dal bucket Cloud Storage in BigQuery: i tuoi dati si trovano ora in un bucket Cloud Storage, più vicino alla loro destinazione. Esistono diverse opzioni per caricare i dati in BigQuery. Queste opzioni dipendono da quanti dati devono trasformarsi. In alternativa, puoi trasformare i dati all'interno di BigQuery seguendo l'approccio ETL.

    Quando importi i dati in blocco da un file JSON, Avro o CSV, BigQuery rileva automaticamente lo schema, quindi non è necessario predefinirlo. Per una panoramica dettagliata del processo di migrazione dello schema per i carichi di lavoro EDW, consulta Processo 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. Per tradurre, puoi utilizzare anche il traduttore SQL batch. Per ulteriori informazioni sui tipi di dati supportati da BigQuery, consulta Tipi di dati di GoogleSQL.

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

Modifiche allo schema

Se stai pianificando modifiche allo schema nella migrazione a BigQuery, ti consigliamo di eseguire prima la migrazione dello schema così com'è. BigQuery supporta un'ampia gamma di pattern di progettazione dei modello dei dati, come lo schema a stella o lo schema Snowflake. Grazie a questo supporto, non è necessario aggiornare le pipeline di dati upstream per un nuovo schema e puoi utilizzare strumenti di migrazione automatici per trasferire i dati e lo schema.

Aggiornamento di uno schema

Una volta che i dati sono in BigQuery, puoi sempre aggiornare lo 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 che fanno distinzione tra maiuscole e minuscole per il nome della tabella, mentre Snowflake utilizza pattern di denominazione che non fanno distinzione tra maiuscole e minuscole. Ciò significa che potrebbe essere necessario rivedere eventuali incoerenze nelle convenzioni di denominazione delle tabelle che potrebbero esistere in Snowflake e correggere eventuali incongruenze che si sono verificate durante il passaggio a BigQuery. Per ulteriori informazioni sulla modifica dello schema, consulta la pagina Modificare gli schemi delle tabelle.

Alcune modifiche allo 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 (tranne l'allentamento di REQUIRED colonne a NULLABLE).

Per istruzioni specifiche su come implementare manualmente queste modifiche allo schema, consulta Modificare manualmente gli schemi delle tabelle.

Ottimizzazione

Dopo la migrazione dello schema, puoi testare le prestazioni e apportare ottimizzazioni in base ai risultati. Ad esempio, puoi introdurre il partizionamento per rendere i dati più efficienti da gestire ed eseguire query. Il partizionamento in BigQuery fa riferimento a una tabella speciale divisa in segmenti chiamati partizioni. Il partizionamento è diverso da quello di Snowflake, che avviene automaticamente quando i dati vengono caricati. Il partizionamento di BigQuery ti consente di migliorare le prestazioni delle query e il controllo dei costi partizionando in base a ora di importazione, timestamp o intervallo di numeri interi. Per ulteriori informazioni, consulta Introduzione alle tabelle partizionate.

Tabelle in cluster

Le tabelle in 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 i dati correlati. Il clustering può migliorare le prestazioni di determinati tipi di query, ad esempio query che utilizzano clausole di filtro o query che aggregano dati. Per ulteriori 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 sono combinati nella sezione Esempi di migrazione mediante pipeline per creare pipeline di migrazione end-to-end.

  • Comando COPY INTO <location>: utilizza questo comando in Snowflake per unload dei dati da una tabella Snowflake direttamente in un bucket Cloud Storage specificato. Per un esempio end-to-end, vedi 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 di Sqoop e Snowflake. Sqoop viene eseguito in un ambiente Dataproc.
  • Snowflake JDBC: utilizza questo driver con la maggior parte degli strumenti client o delle applicazioni che supportano JDBC.

Puoi utilizzare i seguenti strumenti generici per la migrazione dei dati da Snowflake a BigQuery:

  • BigQuery Data Transfer Service: esegui un trasferimento batch automatico dei dati di Cloud Storage in BigQuery con questo servizio completamente gestito. Questo strumento richiede prima l'esportazione dei dati Snowflake in Cloud Storage.
  • gsutil: 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 e 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.
  • Strumento di pianificazione delle query BigQuery: pianifica query SQL ricorrenti con questa funzionalità integrata di BigQuery.
  • Cloud Composer: utilizza questo ambiente Apache Airflow completamente gestito per orchestrare le trasformazioni e i job di caricamento di BigQuery.

Per ulteriori informazioni sul caricamento dei dati in BigQuery, consulta Caricamento di dati in BigQuery.

Esempi di migrazione mediante pipeline

Le seguenti sezioni mostrano esempi di come eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando tre diverse tecniche: estrazione e caricamento, ETL e strumenti dei partner.

Estrai e carica

La tecnica di estrazione e caricamento offre due metodi:

  • Utilizza una pipeline per scaricare i dati da Snowflake
  • Utilizza una pipeline e un driver JDBC per esportare i dati da Snowflake

Utilizza una pipeline per scaricare i dati da Snowflake

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

Puoi quindi caricare 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

Utilizza 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 di Snowflake:

Estrai, trasforma e carica

Se vuoi trasformare i dati prima di caricarli in BigQuery, puoi aggiungere un passaggio di trasformazione nelle pipeline descritte nella precedente sezione Estrai e carica.

Trasforma i dati Snowflake

Per trasformare i dati prima di caricarli in BigQuery, scaricali direttamente da Snowflake a Cloud Storage oppure utilizza gsutil per copiarli, come descritto nella sezione Estrazione e caricamento precedente.

Carica i dati Snowflake

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

Usa una pipeline e un driver JDBC per trasformare ed esportare i dati da Snowflake

Aggiungi un passaggio di trasformazione nelle seguenti opzioni della pipeline, come descritto nella precedente sezione Estrai e carica.

Potresti avere un caso d'uso di estrazione, caricamento e trasformazione per caricare i tuoi dati da Snowflake a BigQuery e poi trasformarli. Per eseguire questa attività, carica i dati da Snowflake a una tabella temporanea BigQuery utilizzando uno dei metodi descritti nella sezione Estrai e carica precedente. Quindi, esegui query SQL sulla tabella temporanea e scrivi l'output nella tabella di produzione finale in BigQuery.

Strumenti dei partner per la migrazione

Esistono diversi fornitori specializzati in questo settore. Per un elenco dei partner chiave e delle soluzioni fornite, consulta il sito web per i partner BigQuery di Google Cloud.

Esempi del processo di esportazione

Le seguenti sezioni mostrano un'esportazione di dati di esempio da Snowflake a BigQuery che utilizza il comando COPY INTO <location> di Snowflake. Per una procedura dettagliata e dettagliata che include esempi di codice, consulta lo strumento per i servizi professionali Google Cloud da Snowflake a BigQuery.

Prepara l'esportazione

Per l'unload, utilizza le istruzioni SQL Snowflake per creare una specifica del formato file con nome.

Questo tutorial utilizza my_parquet_unload_format come formato file, ma puoi utilizzare un nome diverso.

   create or replace file format my_parquet_unload_format
     type = 'PARQUET'
     field_delimiter = '|'

Esportare i dati Snowflake

Dopo aver preparato i dati, devi spostarli in Google Cloud. Puoi eseguire questo passaggio in uno dei due seguenti modi:

  1. Esportazione dei dati direttamente in Cloud Storage da Snowflake.
  2. Gestione temporanea dei dati Snowflake in un bucket Amazon Simple Storage Service (Amazon S3) o Archiviazione BLOB di Azure.

Per evitare un hop di dati aggiuntivo, esporta direttamente i dati.

Esporta i dati Snowflake direttamente in Cloud Storage

Le seguenti istruzioni mostrano come utilizzare il comando COPY di Snowflake per unload dei dati da Snowflake a Cloud Storage:

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

    Questo passaggio prevede diversi sottopassaggi.

    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 esterna di Cloud Storage che faccia riferimento all'integrazione creata 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 di database Snowflake in un bucket Cloud Storage, specificando l'oggetto stage esterno 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 dei dati da una tabella Snowflake a un bucket Amazon S3 utilizzando il comando COPY:

  1. In Snowflake, configura un oggetto di integrazione dell'archiviazione per consentire a Snowflake di scrivere in un bucket Amazon S3 a cui viene fatto riferimento in una fase di 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. Recupera l'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 all'utente AWS IAM le autorizzazioni per accedere al bucket Amazon S3 e crea una fase esterna 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 Snowflake in Cloud Storage tramite altri cloud provider:

Archiviazione BLOB di Azure Segui i passaggi descritti in Unload in Microsoft Azure. Quindi, trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.

Bucket Amazon S3 Segui i passaggi descritti in unload in Amazon S3. Poi, trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.

Passaggi successivi