Tutorial sulla migrazione da Snowflake a BigQuery

Questo documento fornisce esempi e tutorial end-to-end per i diversi modi in cui puoi configurare una pipeline di migrazione da Snowflake a BigQuery.

Esempi di pipeline di migrazione Snowflake

Puoi eseguire la migrazione dei dati da Snowflake a BigQuery utilizzando tre processi diversi: ELT, ETL o utilizzando 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 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, valuta i seguenti strumenti:

Strumenti dei partner per la migrazione

Esistono diversi fornitori specializzati nella 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> di Snowflake. Per una procedura dettagliata passo passo che include esempi di codice, consulta lo strumento di servizi professionali per la migrazione da Snowflake a BigQueryGoogle 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 esterna di Cloud Storage.

    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 IAM AWS 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 IAM AWS 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 stage, 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.