Tutoriais de migração do Snowflake para o BigQuery

Este documento fornece exemplos e tutoriais completos sobre as diferentes maneiras de configurar um pipeline de migração do Snowflake para o BigQuery.

Exemplos de pipeline de migração do Snowflake

É possível migrar seus dados do Snowflake para o BigQuery usando três processos diferentes: ELT, ETL ou ferramentas de parceiros.

Extração, carregamento e transformação

É possível configurar um processo de extração, carregamento e transformação (ELT) com dois métodos:

  • Usar um pipeline para extrair dados do Snowflake e carregá-los no BigQuery
  • Extraia dados do Snowflake usando outros produtos Google Cloud .

Usar um pipeline para extrair dados do Snowflake

Para extrair dados do Snowflake e carregar diretamente no Cloud Storage, use a ferramenta snowflake2bq.

Em seguida, carregue os dados do Cloud Storage para o BigQuery usando uma das seguintes ferramentas:

Outras ferramentas para extrair dados do Snowflake

Você também pode usar as seguintes ferramentas para extrair dados do Snowflake:

Outras ferramentas para carregar dados no BigQuery

Também é possível usar as seguintes ferramentas para carregar dados no BigQuery:

Extrair, transformar e carregar

Se você quiser transformar os dados antes de carregá-los no BigQuery, considere as seguintes ferramentas:

Ferramentas de parceiros para migração

Há vários fornecedores especializados no espaço de migração de EDW. Para ver uma lista dos principais parceiros e das soluções que eles oferecem, consulte Parceiros do BigQuery.

Tutorial de exportação do Snowflake

O tutorial a seguir mostra um exemplo de exportação de dados do Snowflake para o BigQuery que usa o comando COPY INTO <location> do Snowflake. Para um processo passo a passo detalhado que inclua exemplos de código, consulte a ferramenta de serviços profissionais doGoogle Cloud Snowflake para BigQuery.

Preparar para exportação

Para preparar os dados do Snowflake para uma exportação, extraia-os para um bucket do Cloud Storage ou do Amazon Simple Storage Service (Amazon S3) seguindo estas etapas:

Cloud Storage

Este tutorial prepara o arquivo no formato PARQUET.

  1. Use instruções SQL do Snowflake para criar uma especificação de formato de arquivo nomeada.

    create or replace file format NAMED_FILE_FORMAT
        type = 'PARQUET'

    Substitua NAMED_FILE_FORMAT por um nome para o formato de arquivo. Por exemplo, my_parquet_unload_format.

  2. Crie uma integração com o comando CREATE STORAGE INTEGRATION.

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

    Substitua:

    • INTEGRATION_NAME: um nome para a integração de armazenamento. Por exemplo, gcs_int
    • BUCKET_NAME: o caminho para o bucket do Cloud Storage. Por exemplo, gcs://mybucket/extract/
  3. Recupere a conta de serviço do Cloud Storage para o Snowflake com o comando DESCRIBE INTEGRATION.

    desc storage integration INTEGRATION_NAME;

    O resultado será o seguinte:

    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
    | 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. Conceda à conta de serviço listada como STORAGE_GCP_SERVICE_ACCOUNT acesso de leitura e gravação ao bucket especificado no comando de integração do armazenamento. Neste exemplo, conceda à conta de serviço service-account-id@ acesso de leitura e gravação ao bucket <var>UNLOAD_BUCKET</var>.

  5. Crie um estágio externo do Cloud Storage que faça referência à integração criada anteriormente.

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

    Substitua:

    • STAGE_NAME: um nome para o objeto de estágio do Cloud Storage. Por exemplo, my_ext_unload_stage

Amazon S3

O exemplo a seguir mostra como mover dados de uma tabela do Snowflake para um bucket do Amazon S3:

  1. No Snowflake, configure um objeto de integração de armazenamento para permitir que o Snowflake grave em um bucket do Amazon S3 referenciado em um estágio externo do Cloud Storage.

    Nesta etapa, é necessário configurar permissões de acesso no bucket do Amazon S3, criar o papel do IAM da Amazon Web Services (AWS) e criar uma integração de armazenamento no Snowflake com o 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')

    Substitua:

    • INTEGRATION_NAME: um nome para a integração de armazenamento. Por exemplo, s3_int
    • BUCKET_NAME: o caminho para o bucket do Amazon S3 em que os arquivos serão carregados. Por exemplo, s3://unload/files/
  2. Recupere o usuário do IAM da AWS com o comando DESCRIBE INTEGRATION

    desc integration INTEGRATION_NAME;

    O resultado será o seguinte:

    +---------------------------+---------------+================================================================================+------------------+
    | 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. Crie uma função com o privilégio CREATE STAGE para o esquema e o privilégio USAGE para a integração de armazenamento:

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

    Substitua ROLE_NAME por um nome para a função. Por exemplo, myrole.

  4. Conceda as permissões de usuário do IAM da AWS para acessar o bucket do Amazon S3 e crie um estágio externo com o 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;

    Substitua:

    • STAGE_NAME: um nome para o objeto de estágio do Cloud Storage. Por exemplo, my_ext_unload_stage

Exportar dados do Snowflake

Depois de preparar os dados, você pode movê-los para Google Cloud. Use o comando COPY INTO para copiar dados da tabela do banco de dados do Snowflake para um bucket do Cloud Storage ou do Amazon S3 especificando o objeto de estágio externo, STAGE_NAME.

    copy into @STAGE_NAME/d1
    from TABLE_NAME;

Substitua TABLE_NAME pelo nome da tabela do banco de dados do Snowflake.

Como resultado desse comando, os dados da tabela são copiados para o objeto de estágio, que está vinculado ao bucket do Cloud Storage ou do Amazon S3. O arquivo inclui o prefixo d1.

Outros métodos de exportação

Para usar o Azure Blob Storage nas exportações de dados, siga as etapas detalhadas em Como descarregar no Microsoft Azure. Em seguida, transfira os arquivos exportados para o Cloud Storage usando o Serviço de transferência do Cloud Storage.