Migrazione da Snowflake a BigQuery - panoramica

Questo documento mostra come eseguire la migrazione dei dati da Snowflake a BigQuery.

Per un framework generale per la migrazione da altri data warehouse a BigQuery, consulta Panoramica: eseguire la migrazione dei data warehouse in BigQuery.

Panoramica della migrazione da Snowflake a BigQuery

Per una migrazione Snowflake, ti consigliamo di configurare un'architettura di migrazione che influisca in modo minimo sulle operazioni esistenti. L'esempio seguente mostra un'architettura in cui puoi riutilizzare gli strumenti e i processi esistenti scaricando altri carichi di lavoro in BigQuery.

Panoramica di una migrazione da Snowflake a BigQuery

Puoi anche convalidare report e dashboard rispetto alle versioni precedenti. Per ulteriori informazioni, consulta Migrazione dei data warehouse a BigQuery: verifica e convalida.

Eseguire la migrazione di singoli carichi di lavoro

Quando pianifichi la migrazione di Snowflake, ti consigliamo di eseguire la migrazione dei seguenti carichi di lavoro singolarmente nel seguente ordine:

Migrazione dello schema

Inizia replicando gli schemi necessari dal tuo ambiente Snowflake in BigQuery. Ti consigliamo di utilizzare BigQuery Migration Service per eseguire la migrazione dello schema. BigQuery Migration Service supporta un'ampia gamma di pattern di progettazione di modello dei dati, come lo schema a stella o lo schema a fiocco di neve, il che elimina la necessità di aggiornare le pipeline di dati upstream per un nuovo schema. BigQuery Migration Service offre anche la migrazione automatica dello schema, incluse le funzionalità di estrazione e traduzione dello schema, per semplificare il processo di migrazione.

Esegui la migrazione delle query SQL

Per eseguire la migrazione delle query SQL, BigQuery Migration Service offre varie funzionalità di traduzione SQL per automatizzare la conversione delle query SQL Snowflake in SQL GoogleSQL, ad esempio il traduttore SQL batch per tradurre le query in blocco, il traduttore SQL interattivo per tradurre le singole query e l'API di traduzione SQL. Questi servizi di traduzione includono anche funzionalità avanzate di Gemini per semplificare ulteriormente il processo di migrazione delle query SQL.

Quando traduci le query SQL, rivedile attentamente per verificare che i tipi di dati e le strutture delle tabelle vengano gestiti correttamente. A questo scopo, ti consigliamo di creare un'ampia gamma di scenari di test con dati diversi. Poi esegui questi scenari di test su BigQuery per confrontare i risultati con quelli originali di Snowflake. Se ci sono differenze, analizza e correggi le query convertite.

Migrazione dei dati

Esistono diversi modi per configurare la pipeline di migrazione dei dati per trasferirli a BigQuery. In genere, queste pipeline seguono lo stesso pattern:

  1. Estrai i dati dall'origine:copia i file estratti dall'origine nell'area di staging nell'ambiente on-premise. Per ulteriori informazioni, consulta Migrazione dei data warehouse a BigQuery: estrazione dei dati di origine.

  2. Trasferisci i dati a un bucket Cloud Storage gestione temporanea: dopo aver terminato l'estrazione dei dati dall'origine, trasferiscili a un bucket gestione temporanea in Cloud Storage. A seconda della quantità di dati che stai trasferendo e della larghezza di banda di rete disponibile, hai diverse opzioni.

    È importante verificare che la posizione del set di dati BigQuery e dell'origine dati esterna o del bucket Cloud Storage si trovino nella stessa regione.

  3. Carica i dati dal bucket Cloud Storage in BigQuery: i dati si trovano ora in un bucket Cloud Storage. 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 ELT.

    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 workload EDW, consulta Processo di migrazione di schema e dati.

Per un elenco degli strumenti che supportano la migrazione dei dati Snowflake, vedi Strumenti di migrazione.

Per esempi end-to-end di configurazione di una pipeline di migrazione dei dati Snowflake, consulta Esempi di pipeline di migrazione Snowflake.

Ottimizzare lo schema e le query

Dopo la migrazione dello schema, puoi testare il rendimento e apportare ottimizzazioni in base ai risultati. Ad esempio, puoi introdurre il partizionamento per rendere più efficiente la gestione e l'esecuzione di query sui tuoi dati. Il partizionamento delle tabelle ti consente di migliorare le prestazioni delle query e il controllo dei costi eseguendo il partizionamento in base all'ora di importazione, al timestamp o all'intervallo di numeri interi. Per ulteriori informazioni, consulta Introduzione alle tabelle partizionate.

Le tabelle in cluster sono un'altra ottimizzazione dello schema. Puoi raggruppare le tabelle per organizzare i dati in base ai contenuti dello schema della tabella, migliorando le prestazioni delle query che utilizzano clausole di filtro o che aggregano dati. Per ulteriori informazioni, vedi Introduzione alle tabelle in cluster.

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 Tipi di dati. Puoi anche utilizzare strumenti di traduzione SQL, come il traduttore SQL interattivo, l'API di traduzione SQL o il traduttore SQL batch, per tradurre diversi dialetti SQL in GoogleSQL.

Per ulteriori informazioni sui tipi di dati supportati in BigQuery, consulta la pagina Tipi di dati GoogleSQL.

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

Strumenti di migrazione

Il seguente elenco descrive gli strumenti che puoi utilizzare per eseguire la migrazione dei dati da Snowflake a BigQuery. Per esempi di come questi strumenti possono essere utilizzati insieme in una pipeline di migrazione Snowflake, consulta Esempi di pipeline di migrazione Snowflake.

  • COPY INTO <location>: Utilizza questo comando in Snowflake per estrarre i dati da una tabella Snowflake direttamente in un bucket Cloud Storage specificato. Per un esempio end-to-end, consulta Snowflake to BigQuery (snowflake2bq) su GitHub.
  • Apache Sqoop: Per estrarre i dati da Snowflake in HDFS o Cloud Storage, invia 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.

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

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

Esempi di pipeline di migrazione Snowflake

Le sezioni seguenti mostrano esempi di come eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando tre processi diversi: ELT, ETL e strumenti partner.

Estrai, carica e trasforma

Puoi configurare un processo di estrazione, caricamento e trasformazione (ELT) con due metodi:

  • Utilizza una pipeline per estrarre i dati da Snowflake e caricarli in BigQuery
  • Estrai i dati da Snowflake utilizzando altri Google Cloud prodotti.

Utilizzare una pipeline per estrarre i dati da Snowflake

Per estrarre i dati da Snowflake e caricarli direttamente in Cloud Storage, utilizza lo strumento snowflake2bq.

Puoi quindi caricare i dati da Cloud Storage a BigQuery utilizzando uno dei seguenti strumenti:

Altri strumenti per estrarre dati da Snowflake

Puoi anche utilizzare i seguenti strumenti per estrarre i dati da Snowflake:

Altri strumenti per caricare dati in BigQuery

Puoi anche utilizzare i seguenti strumenti per caricare i dati in BigQuery:

Estrazione, trasformazione e caricamento

Se vuoi trasformare i dati prima di caricarli in BigQuery, prendi in considerazione i seguenti strumenti:

Strumenti dei partner per la migrazione

Esistono più fornitori specializzati nello spazio di migrazione EDW. Per un elenco dei partner principali e delle soluzioni fornite, consulta Partner BigQuery.

Tutorial sull'esportazione di Snowflake

Il seguente tutorial mostra un'esportazione di dati di esempio 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 di servizi professionali per la migrazione da Snowflake a BigQuery.Google Cloud

Prepararsi per l'esportazione

Puoi preparare i dati Snowflake per l'esportazione estraendoli in un bucket Cloud Storage o Amazon Simple Storage Service (Amazon S3) seguendo questi passaggi:

Cloud Storage

Questo tutorial prepara il file in formato PARQUET.

  1. Utilizza le istruzioni SQL di Snowflake per creare una specifica del formato di file denominato.

    create or replace file format NAMED_FILE_FORMAT
        type = 'PARQUET'

    Sostituisci NAMED_FILE_FORMAT con un nome per il formato del file. Ad esempio, my_parquet_unload_format.

  2. Crea un'integrazione con il comando CREATE STORAGE INTEGRATION.

    create storage integration INTEGRATION_NAME
        type = external_stage
        storage_provider = gcs
        enabled = true
        storage_allowed_locations = ('BUCKET_NAME')

    Sostituisci quanto segue:

    • INTEGRATION_NAME: un nome per l'integrazione dell'archiviazione. Ad esempio, gcs_int
    • BUCKET_NAME: il percorso del bucket Cloud Storage. Ad esempio, gcs://mybucket/extract/
  3. Recupera il account di servizio Cloud Storage per Snowflake con il comando DESCRIBE INTEGRATION.

    desc storage integration INTEGRATION_NAME;

    L'output è simile al seguente:

    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
    | 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@iam.gserviceaccount.com                 |                  |
    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
  4. Concedi all'account di servizio elencato come STORAGE_GCP_SERVICE_ACCOUNT l'accesso in lettura e scrittura al bucket specificato nel comando di integrazione dell'archiviazione. In questo esempio, concedi all'account di servizio service-account-id@ l'accesso in lettura e scrittura al bucket <var>UNLOAD_BUCKET</var>.

  5. Crea uno stage Cloud Storage esterno che faccia riferimento all'integrazione che hai creato in precedenza.

    create or replace stage STAGE_NAME
        url='UNLOAD_BUCKET'
        storage_integration = INTEGRATION_NAME
        file_format = NAMED_FILE_FORMAT;

    Sostituisci quanto segue:

    • STAGE_NAME: un nome per l'oggetto di staging Cloud Storage. Ad esempio, my_ext_unload_stage

Amazon S3

L'esempio seguente mostra come spostare i dati da una tabella Snowflake a un bucket Amazon S3:

  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 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 INTEGRATION_NAME
    type = external_stage
    storage_provider = s3
    enabled = true
    storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole'
    storage_allowed_locations = ('BUCKET_NAME')

    Sostituisci quanto segue:

    • INTEGRATION_NAME: un nome per l'integrazione dell'archiviazione. Ad esempio, s3_int
    • BUCKET_NAME: il percorso del bucket Amazon S3 in cui caricare i file. Ad esempio, s3://unload/files/
  2. Recupera l'utente AWS IAM con il comando DESCRIBE INTEGRATION.

    desc integration INTEGRATION_NAME;

    L'output è simile al seguente:

    +---------------------------+---------------+================================================================================+------------------+
    | 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. Crea un ruolo con il privilegio CREATE STAGE per lo schema e il privilegio USAGE per l'integrazione dell'archiviazione:

        CREATE role ROLE_NAME;  
        GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME;
        GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;

    Sostituisci ROLE_NAME con un nome per il ruolo. Ad esempio, myrole.

  4. Concedi all'utente AWS IAM le autorizzazioni per accedere al bucket Amazon S3 e crea uno stage esterno con il comando CREATE STAGE:

        USE SCHEMA mydb.public;
    
        create or replace stage STAGE_NAME
            url='BUCKET_NAME'
            storage_integration = INTEGRATION_NAMEt
            file_format = NAMED_FILE_FORMAT;

    Sostituisci quanto segue:

    • STAGE_NAME: un nome per l'oggetto di staging Cloud Storage. Ad esempio, my_ext_unload_stage

Esportare i dati di Snowflake

Dopo aver preparato i dati, puoi spostarli su Google Cloud. Utilizza il comando COPY INTO per copiare i dati dalla tabella del database Snowflake in un bucket Cloud Storage o Amazon S3 specificando l'oggetto di staging esterno, STAGE_NAME.

    copy into @STAGE_NAME/d1
    from TABLE_NAME;

Sostituisci TABLE_NAME con il nome della tabella del database Snowflake.

Come risultato di questo comando, i dati della tabella vengono copiati nell'oggetto di staging, che è collegato al bucket Cloud Storage o Amazon S3. Il file include il prefisso d1.

Altri metodi di esportazione

Per utilizzare Azure Blob Storage per le esportazioni di dati, segui i passaggi descritti in Scaricamento in Microsoft Azure. Poi, trasferisci i file esportati in Cloud Storage utilizzando Storage Transfer Service.

Prezzi

Quando pianifichi la migrazione di Snowflake, considera il costo del trasferimento dei dati, dell'archiviazione dei dati e dell'utilizzo dei servizi in BigQuery. Per ulteriori informazioni, vedi Prezzi.

Potrebbero essere addebitati costi per il traffico in uscita per lo spostamento dei dati da Snowflake o AWS. Potrebbero essere previsti costi aggiuntivi anche per il trasferimento di dati tra regioni o tra diversi cloud provider.

Passaggi successivi