Tutoriais de migração do Snowflake para o BigQuery
Este documento oferece exemplos e tutoriais completos para 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 dados do Snowflake para o BigQuery usando três processos diferentes: ELT, ETL ou ferramentas de parceiros.
Extrair, carregar e transformar
É 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 carregar os dados no BigQuery
- Extrair dados do Snowflake usando outros Google Cloud produtos.
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:
- O conector do Serviço de transferência de dados do BigQuery para Cloud Storage
- O comando
LOADusando a ferramenta de linha de comando bq - Bibliotecas de cliente da API BigQuery
Outras ferramentas para extrair dados do Snowflake
Também é possível usar as seguintes ferramentas para extrair dados do Snowflake:
- Dataflow
- Cloud Data Fusion
- Managed Service for Apache Spark
- Conector do Apache Spark para BigQuery
- Conector do Snowflake para Apache Spark
- Conector do Hadoop para BigQuery
- O driver JDBC do Snowflake e do Sqoop para extrair dados do Snowflake para o Cloud Storage:
Outras ferramentas para carregar dados no BigQuery
Também é possível usar as seguintes ferramentas para carregar dados no BigQuery:
- Dataflow
- Cloud Data Fusion
- Managed Service for Apache Spark
- Dataprep by Trifacta
Extrair, transformar e carregar
Se você quiser transformar os dados antes de carregá-los no BigQuery, considere as seguintes ferramentas:
- Dataflow
- Clone o código do modelo JDBC para BigQuery e modifique o modelo para adicionar transformações do Apache Beam .
- Cloud Data Fusion
- Crie um pipeline reutilizável e transforme seus dados usando os plug-ins do CDAP.
- Managed Service for Apache Spark
- Transforme seus dados usando Spark SQL ou um código personalizado em qualquer uma das linguagens Spark compatíveis, como Scala, Java, Python ou R.
Ferramentas de parceiros para migração
Há vários fornecedores especializados no espaço de migração de EDW. Para conferir 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 COPY INTO <location> comando do Snowflake.
Para um processo passo a passo detalhado que inclua exemplos de código, consulte
a Google Cloud ferramenta de serviços profissionais do Snowflake para BigQuery
Preparar para exportação
É possível preparar os dados do Snowflake para exportação extraindo-os para um bucket do Cloud Storage ou do Amazon Simple Storage Service (Amazon S3) com as seguintes etapas:
Cloud Storage
Este tutorial prepara o arquivo no formato PARQUET.
Use as instruções SQL do Snowflake para criar uma especificação de formato de arquivo nomeada (link em inglês).
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
Substitua
NAMED_FILE_FORMATpor um nome para o formato do arquivo. Por exemplo,my_parquet_unload_format.Crie uma integração com o
CREATE STORAGE INTEGRATIONcomando.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_intBUCKET_NAME: o caminho para o bucket do Cloud Storage. Por exemplo,gcs://mybucket/extract/
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á assim:
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | 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 | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Conceda à conta de serviço listada como
STORAGE_GCP_SERVICE_ACCOUNTacesso de leitura e gravação ao bucket especificado no comando de integração de armazenamento. Neste exemplo, conceda à conta de serviçoservice-account-id@acesso de leitura e gravação ao bucket<var>UNLOAD_BUCKET</var>.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:
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
CREATE STORAGE INTEGRATIONcomando: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_intBUCKET_NAME: o caminho para o bucket do Amazon S3 em que os arquivos serão carregados. Por exemplo,s3://unload/files/
Recupere o usuário do IAM da AWS com o comando
DESCRIBE INTEGRATION.desc integration INTEGRATION_NAME;
O resultado será assim:
+---------------------------+---------------+================================================================================+------------------+ | 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=
| | +---------------------------+---------------+================================================================================+------------------+ Crie um papel que tenha o privilégio
CREATE STAGEpara o esquema e o privilégioUSAGEpara 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_NAMEpor um nome para o papel. Por exemplo,myrole.Conceda as permissões de usuário do IAM da AWS para acessar o bucket do Amazon S3 e criar um estágio externo com o
CREATE STAGEcomando: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, é possível 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 Armazenamento de Blobs do Azure 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.