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:
- O conector do serviço de transferência de dados do BigQuery para o 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
Você também pode usar as seguintes ferramentas para extrair dados do Snowflake:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Conector do Apache Spark BigQuery
- Conector do Snowflake para Apache Spark
- Conector do Hadoop do 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
- Dataproc
- 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 plug-ins do CDAP.
- Dataproc
- Transforme os dados usando o 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 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.
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_FORMATpor um nome para o formato de arquivo. Por exemplo,my_parquet_unload_format.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_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á 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 | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Conceda à conta de serviço listada como
STORAGE_GCP_SERVICE_ACCOUNTacesso de leitura e gravação ao bucket especificado no comando de integração do 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 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_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 INTEGRATIONdesc 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=
| | +---------------------------+---------------+================================================================================+------------------+ Crie uma função com 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 a função. Por exemplo,myrole.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.