Programar uma transferência do Snowflake
Com o conector do Snowflake fornecido pelo serviço de transferência de dados do BigQuery, é possível programar e gerenciar jobs de transferência automatizados para migrar dados do Snowflake para o BigQuery usando listas de permissão de IP público.
Visão geral
O conector do Snowflake usa agentes de migração no Google Kubernetes Engine e aciona uma operação de carregamento do Snowflake para uma área de preparo no mesmo provedor de nuvem em que o Snowflake está hospedado. Para contas do Snowflake hospedadas na AWS, os dados são primeiro armazenados em um bucket do Amazon S3, que é transferido para o BigQuery com o serviço de transferência de dados do BigQuery.
O diagrama a seguir mostra como os dados são transferidos de um data warehouse do Snowflake hospedado na AWS para o BigQuery.
Limitações
As transferências de dados feitas com o conector do Snowflake estão sujeitas às seguintes limitações:
- As transferências de dados só são compatíveis com contas do Snowflake hospedadas na AWS. As transferências de dados de contas do Snowflake hospedadas no Google Cloud ou no Microsoft Azure não são compatíveis.
- O conector do Snowflake não é compatível com transferências de dados incrementais.
- O conector do Snowflake só aceita transferências de tabelas em um único banco de dados e esquema do Snowflake. Para transferir de tabelas com vários bancos de dados ou esquemas do Snowflake, configure cada job de transferência separadamente.
- A velocidade de carregamento de dados do Snowflake para seu bucket do Amazon S3 é limitada pelo data warehouse do Snowflake escolhido para essa transferência.
Os dados são extraídos do Snowflake no formato Parquet antes de serem carregados no BigQuery:
- Os seguintes tipos de dados do Parquet não são aceitos:
TIMESTAMP_TZ
,TIMESTAMP_LTZ
OBJECT
,VARIANT
,ARRAY
- Para mais informações, consulte Avaliar dados do Snowflake.
O tipo de dados Parquet a seguir não é compatível, mas pode ser convertido:
TIMESTAMP_NTZ
Use o YAML de configuração de conversão de tipo global para substituir o comportamento padrão da conversão de
DATETIME
paraTIMESTAMP
ao gerar metadados e executar o mecanismo de tradução.A configuração YAML pode ser semelhante ao exemplo a seguir:
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP
- Os seguintes tipos de dados do Parquet não são aceitos:
Antes de começar
Antes de configurar uma transferência do Snowflake, siga todas as etapas listadas nesta seção. Confira a seguir uma lista de todas as etapas necessárias.
- Preparar o Google Cloud projeto
- Papéis obrigatórios do BigQuery
- Preparar o bucket do Amazon S3
- Crie um usuário do Snowflake com as permissões necessárias
- Adicionar políticas de rede
- Gerar metadados e executar o mecanismo de tradução
- Avalie o Snowflake para identificar tipos de dados incompatíveis
- Coletar informações de transferência
Preparar seu projeto do Google Cloud
Crie e configure seu projeto Google Cloud para uma transferência do Snowflake com estas etapas:
Crie um Google Cloud projeto ou selecione um projeto atual.
Verifique se você realizou todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
Crie um conjunto de dados do BigQuery para armazenar seus dados. Não é necessário criar tabelas.
Papéis obrigatórios do BigQuery
Para receber as permissões necessárias para criar uma transferência,
peça ao administrador para conceder a você o papel do IAM
Administrador do BigQuery (roles/bigquery.admin
).
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar uma transferência. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar uma transferência:
-
bigquery.transfers.update
na conta de usuário ou de serviço que está criando a configuração de transferência -
bigquery.datasets.get
na conta de usuário ou de serviço que está criando a configuração de transferência -
bigquery.datasets.update
na conta de usuário ou de serviço que está criando a configuração de transferência
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Preparar o bucket do Amazon S3
Para concluir uma transferência de dados do Snowflake, crie um bucket do Amazon S3 e configure-o para permitir acesso de gravação do Snowflake.
Crie um bucket do Amazon S3. O bucket do Amazon S3 é usado para preparar os dados antes de serem carregados no BigQuery.
Crie e configure um objeto de integração de armazenamento do Snowflake para permitir que o Snowflake grave dados no bucket do Amazon S3 como um estágio externo.
Para permitir o acesso de leitura ao bucket do Amazon S3, faça o seguinte:
Crie um usuário do IAM da Amazon dedicado e conceda a ele a política AmazonS3ReadOnlyAccess.
Crie um par de chaves de acesso da Amazon para o usuário do IAM.
Criar um usuário do Snowflake com as permissões necessárias
Durante uma transferência do Snowflake, o conector do Snowflake se conecta à sua conta usando uma conexão JDBC. Crie um usuário do Snowflake com uma função personalizada que tenha apenas os privilégios necessários para realizar a transferência de dados:
// Create and configure new role, MIGRATION_ROLE GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON DATABASE DATABASE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON SCHEMA DATABASE_NAME.SCHEMA_NAME TO ROLE MIGRATION_ROLE; // You can modify this to give select permissions for all tables in a schema GRANT SELECT ON TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON STORAGE_INTEGRATION_OBJECT_NAME TO ROLE MIGRATION_ROLE;
Substitua:
MIGRATION_ROLE
: o nome da função personalizada que você está criandoWAREHOUSE_NAME
: o nome do seu data warehouseDATABASE_NAME
: o nome do banco de dados do Snowflake.SCHEMA_NAME
: o nome do seu esquema do Snowflake.TABLE_NAME
: o nome do Snowflake incluído nesta transferência de dados.STORAGE_INTEGRATION_OBJECT_NAME
: o nome do seu objeto de integração de armazenamento do Snowflake.
Adicionar políticas de rede
Para conectividade pública, a conta do Snowflake permite a conexão pública com credenciais de banco de dados por padrão. No entanto, talvez você tenha configurado regras ou políticas de rede que podem impedir que o conector do Snowflake se conecte à sua conta. Nesse caso, adicione os endereços IP necessários à lista de permissões.
A tabela a seguir é uma lista de endereços IP para os locais regionais e multirregionais usados em transferências públicas. Você pode adicionar os endereços IP que correspondem apenas à localização do seu conjunto de dados ou todos os endereços IP listados na tabela. São endereços IP reservados pelo Google para transferências de dados do serviço de transferência de dados do BigQuery.
Para adicionar um endereço IP a uma lista de permissões, faça o seguinte:
- Crie uma regra de rede com
type
=IPV4
. O serviço de transferência de dados do BigQuery usa uma conexão JDBC para se conectar à conta do Snowflake. - Crie uma política de rede com a regra de rede que você criou antes e o endereço IP da tabela a seguir.
Locais regionais
Descrição da região | Nome da região | Endereços IP | |
---|---|---|---|
América | |||
Columbus, Ohio | us-east5 |
34.162.72.184 34.162.173.185 34.162.205.205 34.162.81.45 34.162.182.149 34.162.59.92 34.162.157.190 34.162.191.145 |
|
Dallas | us-south1 |
34.174.172.89 34.174.40.67 34.174.5.11 34.174.96.109 34.174.148.99 34.174.176.19 34.174.253.135 34.174.129.163 |
|
Iowa | us-central1 |
34.121.70.114 34.71.81.17 34.122.223.84 34.121.145.212 35.232.1.105 35.202.145.227 35.226.82.216 35.225.241.102 |
|
Las Vegas | us-west4 |
34.125.53.201 34.125.69.174 34.125.159.85 34.125.152.1 34.125.195.166 34.125.50.249 34.125.68.55 34.125.91.116 |
|
Los Angeles | us-west2 |
35.236.59.167 34.94.132.139 34.94.207.21 34.94.81.187 34.94.88.122 35.235.101.187 34.94.238.66 34.94.195.77 |
|
México | northamerica-south1 |
34.51.6.35 34.51.7.113 34.51.12.83 34.51.10.94 34.51.11.219 34.51.11.52 34.51.2.114 34.51.15.251 |
|
Montreal | northamerica-northeast1 |
34.95.20.253 35.203.31.219 34.95.22.233 34.95.27.99 35.203.12.23 35.203.39.46 35.203.116.49 35.203.104.223 |
|
Norte da Virgínia | us-east4 |
35.245.95.250 35.245.126.228 35.236.225.172 35.245.86.140 35.199.31.35 35.199.19.115 35.230.167.48 35.245.128.132 35.245.111.126 35.236.209.21 |
|
Oregon | us-west1 |
35.197.117.207 35.199.178.12 35.197.86.233 34.82.155.140 35.247.28.48 35.247.31.246 35.247.106.13 34.105.85.54 |
|
Salt Lake City | us-west3 |
34.106.37.58 34.106.85.113 34.106.28.153 34.106.64.121 34.106.246.131 34.106.56.150 34.106.41.31 34.106.182.92 |
|
São Paulo | southamerica-east1 |
35.199.88.228 34.95.169.140 35.198.53.30 34.95.144.215 35.247.250.120 35.247.255.158 34.95.231.121 35.198.8.157 |
|
Santiago | southamerica-west1 |
34.176.188.48 34.176.38.192 34.176.205.134 34.176.102.161 34.176.197.198 34.176.223.236 34.176.47.188 34.176.14.80 |
|
Carolina do Sul | us-east1 |
35.196.207.183 35.237.231.98 104.196.102.222 35.231.13.201 34.75.129.215 34.75.127.9 35.229.36.137 35.237.91.139 |
|
Toronto | northamerica-northeast2 |
34.124.116.108 34.124.116.107 34.124.116.102 34.124.116.80 34.124.116.72 34.124.116.85 34.124.116.20 34.124.116.68 |
|
Europa | |||
Bélgica | europe-west1 |
35.240.36.149 35.205.171.56 34.76.234.4 35.205.38.234 34.77.237.73 35.195.107.238 35.195.52.87 34.76.102.189 |
|
Berlim | europe-west10 |
34.32.28.80 34.32.31.206 34.32.19.49 34.32.33.71 34.32.15.174 34.32.23.7 34.32.1.208 34.32.8.3 |
|
Finlândia | europe-north1 |
35.228.35.94 35.228.183.156 35.228.211.18 35.228.146.84 35.228.103.114 35.228.53.184 35.228.203.85 35.228.183.138 |
|
Frankfurt | europe-west3 |
35.246.153.144 35.198.80.78 35.246.181.106 35.246.211.135 34.89.165.108 35.198.68.187 35.242.223.6 34.89.137.180 |
|
Londres | europe-west2 |
35.189.119.113 35.189.101.107 35.189.69.131 35.197.205.93 35.189.121.178 35.189.121.41 35.189.85.30 35.197.195.192 |
|
Madri | europe-southwest1 |
34.175.99.115 34.175.186.237 34.175.39.130 34.175.135.49 34.175.1.49 34.175.95.94 34.175.102.118 34.175.166.114 |
|
Milão | europe-west8 |
34.154.183.149 34.154.40.104 34.154.59.51 34.154.86.2 34.154.182.20 34.154.127.144 34.154.201.251 34.154.0.104 |
|
Países Baixos | europe-west4 |
35.204.237.173 35.204.18.163 34.91.86.224 34.90.184.136 34.91.115.67 34.90.218.6 34.91.147.143 34.91.253.1 |
|
Paris | europe-west9 |
34.163.76.229 34.163.153.68 34.155.181.30 34.155.85.234 34.155.230.192 34.155.175.220 34.163.68.177 34.163.157.151 |
|
Estocolmo | europe-north2 |
34.51.133.48 34.51.136.177 34.51.128.140 34.51.141.252 34.51.139.127 34.51.142.55 34.51.134.218 34.51.138.9 |
|
Turim | europe-west12 |
34.17.15.186 34.17.44.123 34.17.41.160 34.17.47.82 34.17.43.109 34.17.38.236 34.17.34.223 34.17.16.47 |
|
Varsóvia | europe-central2 |
34.118.72.8 34.118.45.245 34.118.69.169 34.116.244.189 34.116.170.150 34.118.97.148 34.116.148.164 34.116.168.127 |
|
Zurique | europe-west6 |
34.65.205.160 34.65.121.140 34.65.196.143 34.65.9.133 34.65.156.193 34.65.216.124 34.65.233.83 34.65.168.250 |
|
Ásia-Pacífico | |||
Délhi | asia-south2 |
34.126.212.96 34.126.212.85 34.126.208.224 34.126.212.94 34.126.208.226 34.126.212.232 34.126.212.93 34.126.212.206 |
|
Hong Kong | asia-east2 |
34.92.245.180 35.241.116.105 35.220.240.216 35.220.188.244 34.92.196.78 34.92.165.209 35.220.193.228 34.96.153.178 |
|
Jacarta | asia-southeast2 |
34.101.79.105 34.101.129.32 34.101.244.197 34.101.100.180 34.101.109.205 34.101.185.189 34.101.179.27 34.101.197.251 |
|
Melbourne | australia-southeast2 |
34.126.196.95 34.126.196.106 34.126.196.126 34.126.196.96 34.126.196.112 34.126.196.99 34.126.196.76 34.126.196.68 |
|
Mumbai | asia-south1 |
34.93.67.112 35.244.0.1 35.200.245.13 35.200.203.161 34.93.209.130 34.93.120.224 35.244.10.12 35.200.186.100 |
|
Osaka | asia-northeast2 |
34.97.94.51 34.97.118.176 34.97.63.76 34.97.159.156 34.97.113.218 34.97.4.108 34.97.119.140 34.97.30.191 |
|
Seul | asia-northeast3 |
34.64.152.215 34.64.140.241 34.64.133.199 34.64.174.192 34.64.145.219 34.64.136.56 34.64.247.158 34.64.135.220 |
|
Singapura | asia-southeast1 |
34.87.12.235 34.87.63.5 34.87.91.51 35.198.197.191 35.240.253.175 35.247.165.193 35.247.181.82 35.247.189.103 |
|
Sydney | australia-southeast1 |
35.189.33.150 35.189.38.5 35.189.29.88 35.189.22.179 35.189.20.163 35.189.29.83 35.189.31.141 35.189.14.219 |
|
Taiwan | asia-east1 |
35.221.201.20 35.194.177.253 34.80.17.79 34.80.178.20 34.80.174.198 35.201.132.11 35.201.223.177 35.229.251.28 35.185.155.147 35.194.232.172 |
|
Tóquio | asia-northeast1 |
34.85.11.246 34.85.30.58 34.85.8.125 34.85.38.59 34.85.31.67 34.85.36.143 34.85.32.222 34.85.18.128 34.85.23.202 34.85.35.192 |
|
Oriente Médio | |||
Damã | me-central2 |
34.166.20.177 34.166.10.104 34.166.21.128 34.166.19.184 34.166.20.83 34.166.18.138 34.166.18.48 34.166.23.171 |
|
Doha | me-central1 |
34.18.48.121 34.18.25.208 34.18.38.183 34.18.33.25 34.18.21.203 34.18.21.80 34.18.36.126 34.18.23.252 |
|
Tel Aviv | me-west1 |
34.165.184.115 34.165.110.74 34.165.174.16 34.165.28.235 34.165.170.172 34.165.187.98 34.165.85.64 34.165.245.97 |
|
África | |||
Johannesburgo | africa-south1 |
34.35.11.24 34.35.10.66 34.35.8.32 34.35.3.248 34.35.2.113 34.35.5.61 34.35.7.53 34.35.3.17 |
Locais multirregionais
Descrição multirregional | Nome multirregional | Endereços IP |
---|---|---|
Data centers dentro de estados membro da União Europeia1 | EU |
34.76.156.158 34.76.156.172 34.76.136.146 34.76.1.29 34.76.156.232 34.76.156.81 34.76.156.246 34.76.102.206 34.76.129.246 34.76.121.168 |
Data centers nos Estados Unidos | US |
35.185.196.212 35.197.102.120 35.185.224.10 35.185.228.170 35.197.5.235 35.185.206.139 35.197.67.234 35.197.38.65 35.185.202.229 35.185.200.120 |
1 Os dados localizados na multirregião EU
não são armazenados nos data centers europe-west2
(Londres) ou europe-west6
(Zurique).
Gerar metadados e executar o mecanismo de tradução
O conector do serviço de transferência de dados do BigQuery para Snowflake usa o mecanismo de tradução do serviço de migração do BigQuery para mapeamento de esquema ao migrar tabelas do Snowflake para o BigQuery. Para concluir uma transferência de dados do Snowflake, primeiro gere metadados para tradução e execute o mecanismo de tradução:
- Execute o
dwh-migration-tool
para o Snowflake. Para mais informações, consulte Gerar metadados para tradução e avaliação. - Faça upload do arquivo
metadata.zip
gerado para um bucket do Cloud Storage. O arquivometadata.zip
é usado como entrada para o mecanismo de tradução. Execute o serviço de tradução em lote, especificando o campo
target_types
comometadata
. Para mais informações, consulte Traduzir consultas SQL com a API Translation.- Confira um exemplo de comando para executar uma tradução em lote para o Snowflake:
curl -d "{ \"name\": \"sf_2_bq_translation\", \"displayName\": \"Snowflake to BigQuery Translation\", \"tasks\": { string: { \"type\": \"Snowflake2BigQuery_Translation\", \"translation_details\": { \"target_base_uri\": \"gs://sf_test_translation/output\", \"source_target_mapping\": { \"source_spec\": { \"base_uri\": \"gs://sf_test_translation/input\" } }, \"target_types\": \"metadata\", } } }, }" \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
- É possível verificar o status desse comando na página de tradução de SQL no BigQuery.
A saída do job de tradução em lote é armazenada em
gs://translation_target_base_uri/metadata/config/
.
Permissões necessárias da conta de serviço
Em uma transferência do Snowflake, uma conta de serviço é usada para ler
dados da saída do mecanismo de tradução no caminho especificado do Cloud Storage.
Você precisa conceder à conta de serviço as permissões storage.objects.get
e
storage.objects.list
.
Se a conta de serviço for de um projeto Google Cloud diferente do projeto que criou a transferência de dados do BigQuery, também será necessário ativar a autorização de conta de serviço entre projetos.
Para mais informações, consulte Papéis e permissões do BigQuery IAM.
Avaliar dados do Snowflake
O BigQuery grava dados do Snowflake no Cloud Storage como arquivos Parquet. Os arquivos Parquet não são compatíveis com os tipos de dados TIMESTAMP_TZ
e TIMESTAMP_LTZ
. Se os dados tiverem esses tipos, exporte-os para o Amazon S3 como arquivos CSV e importe-os para o BigQuery. Para mais informações, consulte Visão geral das transferências do Amazon S3.
Coletar informações de transferência
Reúna as informações necessárias para configurar a migração com o serviço de transferência de dados do BigQuery:
- O identificador da sua conta do Snowflake, que é o prefixo no URL da conta. Por exemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
- O nome de usuário e a senha de um usuário com as permissões adequadas para seu banco de dados do Snowflake. Ele só precisa ter as permissões necessárias para executar a transferência de dados.
- O URI do bucket do Amazon S3 que você quer usar para a transferência e o par de chaves de acesso do usuário da AWS. Recomendamos que você configure uma política de ciclo de vida para esse bucket, evitando cobranças desnecessárias.
- O URI do bucket do Cloud Storage em que você armazenou os arquivos de mapeamento de esquema obtidos do mecanismo de tradução.
Configurar uma transferência do Snowflake
Selecione uma das seguintes opções:
Console
Acesse a página "Transferências de dados" no console Google Cloud .
Clique em
Criar transferência.Na seção Tipo de origem, selecione Migração do Snowflake na lista Origem.
Na seção Nome da configuração de transferência, insira um nome para a transferência, como
My migration
, no campo Nome de exibição. Esse nome pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la no futuro.Na seção Configurações de destino, escolha o conjunto de dados criado, na lista Conjunto de dados.
Na seção Detalhes da fonte de dados, faça o seguinte:
- Em Identificador da conta, insira um identificador exclusivo para sua conta do Snowflake, que é uma combinação do nome da organização e da conta. O identificador é o prefixo do URL da conta do Snowflake, não o URL completo. Por exemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
. - Em Nome de usuário, insira o nome de usuário do usuário do Snowflake cujas credenciais e autorização são usadas para acessar seu banco de dados e transferir as tabelas do Snowflake. Recomendamos usar o usuário que você criou para essa transferência.
- Em Senha, insira a senha do usuário do Snowflake.
- Em Armazém, insira um armazém usado para a execução dessa transferência de dados.
- Em Conta de serviço, insira uma conta de serviço para usar com essa
transferência de dados. A conta de serviço precisa pertencer ao mesmo
projetoGoogle Cloud em que a configuração de transferência e o conjunto de dados de destino
são criados. A conta de serviço precisa ter as permissões necessárias
storage.objects.list
estorage.objects.get
. - Em Banco de dados, insira o nome do banco de dados do Snowflake que contém as tabelas incluídas nesta transferência de dados.
- Em Esquema, insira o nome do esquema do Snowflake que contém as tabelas incluídas nesta transferência de dados.
Em Padrões de nome da tabela, especifique uma tabela para transferir inserindo um nome ou um padrão que corresponda ao nome da tabela no esquema. Você pode usar expressões regulares para especificar o padrão, por exemplo,
table1_regex;table2_regex
. Esse padrão precisa seguir a sintaxe da expressão regular do Java. Por exemplo,lineitem;ordertb
corresponde às tabelas chamadaslineitem
eordertb
..*
corresponde a todas as tabelas.
Em Caminho do GCS de saída da tradução, especifique um caminho para a pasta do Cloud Storage que contém os arquivos de mapeamento de esquema do mecanismo de tradução.
- O caminho precisa seguir o formato
gs:/translation_target_base_uri/metadata/config/db/schema/
e terminar com/
.
- O caminho precisa seguir o formato
Em Nome do objeto de integração de armazenamento, insira o nome do objeto de integração de armazenamento do Snowflake. Nesse caso,
S3
.Em Provedor de nuvem, selecione
AWS
.Em URI do GCS, nome da conta de armazenamento do Azure, nome do contêiner do Azure, SAS do Azure, deixe esses campos em branco.
Em URI do Amazon S3, insira o URI do bucket do S3 que será usado como área de preparo.
Em ID da chave de acesso e Chave de acesso secreta, insira o par de chaves de acesso.
- Em Identificador da conta, insira um identificador exclusivo para sua conta do Snowflake, que é uma combinação do nome da organização e da conta. O identificador é o prefixo do URL da conta do Snowflake, não o URL completo. Por exemplo,
Opcional: na seção Opções de notificação, faça o seguinte:
- Clique no botão para ativar as notificações por e-mail. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail se uma execução de transferência falhar.
- Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Pub/Sub da sua transferência.
Clique em Salvar.
O console do Google Cloud mostra todos os detalhes da configuração da transferência, incluindo um Nome de recurso para ela.
bq
Digite o comando bq mk
e forneça a sinalização de criação da transferência --transfer_config
. As sinalizações abaixo também são obrigatórias:
--project_id
--data_source
--target_dataset
--display_name
--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters'
Substitua:
- project_id: o ID do projeto do Google Cloud . Se
--project_id
não for especificado, o projeto padrão será usado. - data_source: a fonte de dados,
snowflake_migration
. - dataset: o conjunto de dados de destino do BigQuery para a configuração de transferência.
- name: o nome de exibição da configuração de transferência. O nome da transferência pode ser qualquer valor que permita identificá-la facilmente, caso precise modificá-la mais tarde.
- service_account: (opcional) o nome da conta de serviço usado para
autenticar a transferência. A conta de serviço precisa pertencer ao mesmo
project_id
usado para criar a transferência e ter todas as funções necessárias. - parameters é o parâmetro da configuração de transferência criada no formato JSON. Por exemplo,
--params='{"param":"param_value"}'
.
Os parâmetros necessários em uma configuração de transferência do Snowflake são:
account_identifier
: um identificador exclusivo da sua conta do Snowflake, que é uma combinação do nome da organização e da conta. O identificador é o prefixo do URL da conta do Snowflake, não o URL completo. Por exemplo,account_identifier.snowflakecomputing.com
.username
: o nome de usuário do usuário do Snowflake cujas credenciais e autorização são usadas para acessar seu banco de dados e transferir as tabelas do Snowflake.password
: insira a senha do usuário do Snowflake.warehouse
: insira um data warehouse usado para a execução dessa transferência de dados.service_account
: insira uma conta de serviço para usar com essa transferência de dados. A conta de serviço precisa pertencer ao mesmo projeto Google Cloud em que a configuração de transferência e o conjunto de dados de destino foram criados. A conta de serviço precisa ter as permissões necessáriasstorage.objects.list
estorage.objects.get
.database
: insira o nome do banco de dados do Snowflake que contém as tabelas incluídas nesta transferência de dados.schema
: insira o nome do esquema do Snowflake que contém as tabelas incluídas nesta transferência de dados.table_name_patterns
: especifique uma tabela para transferir inserindo um nome ou um padrão que corresponda ao nome da tabela no esquema. Você pode usar expressões regulares para especificar o padrão, por exemplo,table1_regex;table2_regex
. Esse padrão precisa seguir a sintaxe da expressão regular do Java. Por exemplo,lineitem;ordertb
corresponde às tabelas chamadaslineitem
eordertb
..*
corresponde a todas as tabelas.Também é possível deixar esse campo em branco para migrar todas as tabelas do esquema especificado.
translation_output_gcs_path
: especifique um caminho para a pasta do Cloud Storage que contém os arquivos de mapeamento de esquema do mecanismo de tradução.- O caminho precisa seguir o formato
gs:/translation_target_base_uri/metadata/config/db/schema/
e terminar com/
.
- O caminho precisa seguir o formato
storage_integration_object_name
: insira o nome do objeto de integração de armazenamento do Snowflake. Nesse caso,S3
.cloud_provider
: insiraAWS
.amazon_s3_uri
: insira o URI do bucket do S3 para usar como uma área de preparo.aws_access_key_id
: insira o par de chaves de acesso.aws_secret_access_key
: insira o par de chaves de acesso.
Por exemplo, o comando a seguir cria uma transferência do Snowflake
chamada snowflake transfer config
com um conjunto de dados de destino chamado
your_bq_dataset
e um projeto com o ID your_project_id
.
PARAMS='{ "account_identifier": "your_account_identifier", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "password": "your_sf_password", "schema": "your_snowflake_schema", "service_account": "your_service_account", "storage_integration_object_name": "your_storage_integration_object", "staging_s3_uri": "s3://your/s3/bucket/uri", "table_name_patterns": ".*", "translation_output_gcs_path": "gs://sf_test_translation/output/metadata/config/database_name/schema_name/", "username": "your_sf_username", "warehouse": "your_warehouse" }' bq mk --transfer_config \ --project_id=your_project_id \ --target_dataset=your_bq_dataset \ --display_name='snowflake transfer config' \ --params="$PARAMS" \ --data_source=snowflake_migration
API
Use o método projects.locations.transferConfigs.create
e forneça uma instância do recurso TransferConfig
.
Cotas e limites
O BigQuery tem uma cota de carregamento de 15 TB para cada job de carregamento de cada tabela. Internamente, o Snowflake compacta os dados da tabela. Portanto, o tamanho da tabela exportada é maior do que o informado pelo Snowflake. Se você planeja migrar uma tabela com mais de 15 TB, entre em contato com dts-migration-preview-support@google.com.
Devido ao modelo de consistência do Amazon S3, é possível que alguns arquivos não sejam incluídos na transferência para o BigQuery.
Preços
Para mais informações sobre os preços do serviço de transferência de dados do BigQuery, consulte a página "Preços".
- Se o data warehouse do Snowflake e o bucket do Amazon S3 estiverem em regiões diferentes, o Snowflake vai aplicar cobranças de saída ao executar uma transferência de dados do Snowflake. Não há cobranças de saída para transferências de dados do Snowflake se o data warehouse do Snowflake e o bucket do Amazon S3 estiverem na mesma região.
- Quando os dados são transferidos da AWS para o Google Cloud, são aplicadas cobranças de saída entre nuvens.
A seguir
- Saiba mais sobre o serviço de transferência de dados do BigQuery.
- Migrar o código SQL com a translação de SQL em lote.