Agende uma transferência do Snowflake
O conetor do Snowflake fornecido pelo Serviço de transferência de dados do BigQuery permite-lhe agendar e gerir tarefas de transferência automatizadas para migrar dados do Snowflake para o BigQuery através de listas de autorização de IPs públicos.
Vista geral
O conector do Snowflake envolve agentes de migração no Google Kubernetes Engine e aciona uma operação de carregamento do Snowflake para uma área de preparação no mesmo fornecedor de nuvem onde o Snowflake está alojado. Para contas do Snowflake alojadas na AWS, os dados são primeiro preparados no seu contentor do Amazon S3, que é depois transferido para o BigQuery com o Serviço de transferência de dados do BigQuery.
O diagrama seguinte mostra como os dados são transferidos de um armazém de dados do Snowflake alojado na AWS para o BigQuery.
Limitações
As transferências de dados feitas através do conetor do Snowflake estão sujeitas às seguintes limitações:
- As transferências de dados só são suportadas a partir de contas do Snowflake alojadas na AWS. As transferências de dados de contas do Snowflake alojadas no Google Cloud ou no Microsoft Azure não são suportadas.
- O conetor do Snowflake não suporta transferências de dados incrementais.
- O conetor do Snowflake só suporta transferências de tabelas num único esquema e base de dados do Snowflake. Para transferir dados de tabelas com várias bases de dados ou esquemas do Snowflake, pode configurar cada tarefa de transferência separadamente.
- A velocidade de carregamento de dados do Snowflake para o seu contentor do Amazon S3 está limitada pelo armazém de dados do Snowflake que escolheu para esta transferência.
Os dados são extraídos do Snowflake no formato de dados Parquet antes de serem carregados no BigQuery:
- Os seguintes tipos de dados Parquet não são suportados:
TIMESTAMP_TZ
,TIMESTAMP_LTZ
OBJECT
,VARIANT
,ARRAY
- Para mais informações, consulte o artigo Avalie os dados do Snowflake.
O seguinte tipo de dados Parquet não é suportado, mas pode ser convertido:
TIMESTAMP_NTZ
Use a configuração YAML de conversão de tipo global para substituir o comportamento predefinido de conversão de
DATETIME
paraTIMESTAMP
quando gera metadados e executa o motor de tradução.O YAML de configuração pode ter um aspeto semelhante ao seguinte exemplo:
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP
- Os seguintes tipos de dados Parquet não são suportados:
Antes de começar
Antes de configurar uma transferência do Snowflake, tem de realizar todos os passos indicados nesta secção. Segue-se uma lista de todos os passos necessários.
- Prepare o seu Google Cloud projeto
- Funções do BigQuery necessárias
- Prepare o seu contentor do Amazon S3
- Crie um utilizador do Snowflake com as autorizações necessárias
- Adicione políticas de rede
- Opcional: gere metadados e execute o motor de tradução
- Avalie o seu Snowflake para verificar se existem tipos de dados não suportados
- Recolha informações de transferência
Prepare o seu Google Cloud projeto
Crie e configure o seu Google Cloud projeto para uma transferência do Snowflake com os seguintes passos:
Crie um Google Cloud projeto ou selecione um projeto existente.
Verifique se concluiu 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 os seus dados. Não precisa de criar tabelas.
Funções do BigQuery necessárias
Para obter as autorizações de que precisa para criar uma transferência,
peça ao seu administrador que lhe conceda a função de IAM de administrador do BigQuery (roles/bigquery.admin
).
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para criar uma transferência. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para criar uma transferência:
-
bigquery.transfers.update
na conta de utilizador ou de serviço que cria a configuração de transferência -
bigquery.datasets.get
na conta de utilizador ou de serviço que cria a configuração de transferência -
bigquery.datasets.update
na conta de utilizador ou de serviço que cria a configuração de transferência
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Prepare o seu contentor do Amazon S3
Para concluir uma transferência de dados do Snowflake, tem de criar um contentor do Amazon S3 e, em seguida, configurá-lo para permitir o acesso de escrita a partir do Snowflake.
Crie um contentor do Amazon S3. O contentor 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 escreva dados no contentor do Amazon S3 como uma fase externa.
Para permitir o acesso de leitura no seu contentor do Amazon S3, também tem de fazer o seguinte:
Crie um utilizador do IAM da Amazon dedicado e conceda-lhe a política AmazonS3ReadOnlyAccess.
Crie um par de chaves de acesso da Amazon para o utilizador do IAM.
Crie um utilizador do Snowflake com as autorizações necessárias
Durante uma transferência do Snowflake, o conetor do Snowflake liga-se à sua conta do Snowflake através de uma ligação JDBC. Tem de criar um novo utilizador do Snowflake com uma função personalizada que só tenha os privilégios necessários para fazer 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 o seguinte:
MIGRATION_ROLE
: o nome da função personalizada que está a criarWAREHOUSE_NAME
: o nome do seu armazém de dadosDATABASE_NAME
: o nome da sua base de dados do SnowflakeSCHEMA_NAME
: o nome do seu esquema do SnowflakeTABLE_NAME
: o nome do Snowflake incluído nesta transferência de dadosSTORAGE_INTEGRATION_OBJECT_NAME
: o nome do seu objeto de integração de armazenamento do Snowflake.
Gere um par de chaves para autenticação
Devido à descontinuação das sessões iniciadas com palavra-passe de fator único pelo Snowflake, recomendamos que use o par de chaves para a autenticação.
Pode configurar um par de chaves gerando um par de chaves RSA encriptado ou não encriptado e, em seguida, atribuindo a chave pública a um utilizador do Snowflake. Para mais informações, consulte o artigo Configurar a autenticação de par de chaves.
Adicione políticas de rede
Para a conetividade pública, a conta do Snowflake permite a ligação pública com credenciais da base de dados por predefinição. No entanto, pode ter configurado regras ou políticas de rede que podem impedir a ligação do conetor do Snowflake à sua conta. Neste caso, tem de adicionar os endereços IP necessários à sua lista de autorizações.
A tabela seguinte é uma lista de endereços IP para as localizações regionais e multirregionais usadas para transferências públicas. Pode adicionar os endereços IP que correspondem apenas à localização do seu conjunto de dados ou pode adicionar todos os endereços IP indicados na tabela. Estes são endereços IP reservados pela 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 autorizaçõ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 ligação JDBC para se ligar à conta do Snowflake. - Crie uma política de rede com a regra de rede que criou anteriormente e o endereço IP da tabela seguinte.
Localizações regionais
Descrição da região | Nome da região | Endereços IP | |
---|---|---|---|
Americas | |||
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 |
|
Montréal | 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 |
|
Virgínia do Norte | 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 |
|
Madrid | 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 | |||
Deli | 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 |
|
Osaca | 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 |
|
Médio Oriente | |||
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 |
|
Telavive | 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 | |||
Joanesburgo | 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 |
Localizações multirregionais
Descrição de várias regiões | Nome da multirregião | Endereços IP |
---|---|---|
Centros de dados nos Estados-Membros 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 |
Centros de dados 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 centros de dados europe-west2
(Londres) nem europe-west6
(Zurique).
Gerar metadados e executar o motor de tradução
Pode ignorar esta secção se quiser que o conetor do Snowflake detete automaticamente o esquema nas suas tabelas do Snowflake durante uma transferência de dados do Snowflake.
No entanto, se quiser definir o seu esquema manualmente (por exemplo, se quiser substituir determinados atributos do esquema), pode fazê-lo seguindo os passos abaixo para gerar os metadados e executar o motor de tradução.
O conetor do Serviço de transferência de dados do BigQuery para o Snowflake usa o motor de tradução do serviço de migração do BigQuery para o mapeamento de esquemas quando migra tabelas do Snowflake para o BigQuery. Para concluir uma transferência de dados do Snowflake, primeiro, tem de gerar metadados para tradução e, em seguida, executar o motor de tradução:
- Execute o
dwh-migration-tool
para o Snowflake. Para mais informações, consulte o artigo Gere metadados para tradução e avaliação. - Carregue o ficheiro
metadata.zip
gerado para um contentor do Cloud Storage. O ficheirometadata.zip
é usado como entrada para o motor de tradução. Execute o serviço de tradução em lote, especificando o campo
target_types
comometadata
. Para mais informações, consulte o artigo Traduza consultas SQL com a API Translation.- Segue-se um exemplo de um 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
- Pode verificar o estado deste comando na página de tradução de SQL no BigQuery.
O resultado da tarefa de tradução em lote é armazenado em
gs://translation_target_base_uri/metadata/config/
.
Autorizações da conta de serviço necessárias
Numa transferência do Snowflake, é usada uma conta de serviço para ler os dados do resultado do motor de tradução no caminho do Cloud Storage especificado.
Tem de conceder à conta de serviço as autorizações storage.objects.get
e storage.objects.list
.
Recomendamos que a conta de serviço pertença ao mesmo Google Cloud projeto onde a configuração de transferência e o conjunto de dados de destino são criados. Se a conta de serviço estiver num Google Cloud projeto diferente do projeto que criou a transferência de dados do BigQuery, tem de ativar a autorização da conta de serviço entre projetos.
Para mais informações, consulte as autorizações e as funções de IAM do BigQuery.
Avalie os dados do Snowflake
O BigQuery escreve dados do Snowflake para o Cloud Storage como ficheiros Parquet. Os ficheiros Parquet não suportam os tipos de dados TIMESTAMP_TZ
e TIMESTAMP_LTZ
. Se os seus dados contiverem estes tipos, pode exportá-los para o
Amazon S3 como ficheiros CSV e, em seguida, importar os ficheiros CSV para o
BigQuery. Para mais informações, consulte o artigo Vista geral das transferências do Amazon S3.
Recolha 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 sua conta do Snowflake. Por exemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
. - O nome de utilizador e a chave privada associada com as autorizações adequadas para a sua base de dados do Snowflake. Pode ter apenas as autorizações necessárias para executar a transferência de dados.
- O URI do contentor do Amazon S3 que quer usar para a transferência e o par de chaves de acesso do utilizador da AWS. Recomendamos que configure uma política de ciclo de vida para este contentor a fim de evitar custos desnecessários.
- O URI do contentor do Cloud Storage onde armazenou os ficheiros de mapeamento de esquemas obtidos a partir do motor de tradução.
Configure uma transferência do Snowflake
Selecione uma das seguintes opções:
Consola
Aceda à página Transferências de dados na Google Cloud consola.
Clique em
Criar transferência.Na secção Tipo de origem, selecione Migração do Snowflake na lista Origem.
Na secção Nome da configuração da transferência, introduza um nome para a transferência, como
My migration
, no campo Nome a apresentar. O nome a apresentar pode ser qualquer valor que lhe permita identificar a transferência se precisar de a modificar mais tarde.Na secção Definições de destino, escolha o conjunto de dados que criou na lista Conjunto de dados.
Na secção Detalhes da origem de dados, faça o seguinte:
- Para o Identificador da conta, introduza um identificador exclusivo para a sua conta do Snowflake, que é uma combinação do nome da organização e do nome da conta. O identificador é o prefixo do URL da conta Snowflake e não o URL completo. Por exemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
. - Para Nome de utilizador, introduza o nome de utilizador do utilizador do Snowflake cujas credenciais e autorização são usadas para aceder à sua base de dados para transferir as tabelas do Snowflake. Recomendamos que use o utilizador que criou para esta transferência.
- Para Mecanismo de autorização, selecione um método de autenticação do utilizador do Snowflake. Para mais informações, consulte o artigo Gere um par de chaves para autenticação
- Para Palavra-passe, introduza a palavra-passe do utilizador do Snowflake. Este campo é obrigatório se tiver selecionado PASSWORD no campo Mecanismo de autenticação.
- Para Chave privada, introduza a chave privada associada à chave pública associada ao utilizador do Snowflake. Este campo é obrigatório se tiver selecionado KEY_PAIR no campo Mecanismo de autorização.
- Para A chave privada está encriptada, selecione este campo se a chave privada estiver encriptada com uma frase de acesso.
- Para Frase de acesso da chave privada, introduza a frase de acesso da chave privada encriptada. Este campo é obrigatório se tiver selecionado KEY_PAIR nos campos Mecanismo de autorização e A chave privada está encriptada.
- Para Warehouse, introduza um armazém que é usado para a execução desta transferência de dados.
- Para Conta de serviço, introduza uma conta de serviço a usar com esta
transferência de dados. A conta de serviço tem de ter as autorizações necessárias
storage.objects.list
estorage.objects.get
. - Para Base de dados, introduza o nome da base de dados do Snowflake que contém as tabelas incluídas nesta transferência de dados.
- Para Esquema, introduza o nome do esquema do Snowflake que contém as tabelas incluídas nesta transferência de dados.
Para Padrões de nomes de tabelas, especifique uma tabela a transferir introduzindo um nome ou um padrão que corresponda ao nome da tabela no esquema. Pode usar expressões regulares para especificar o padrão, por exemplo,
table1_regex;table2_regex
. O padrão deve seguir a sintaxe de expressão regular Java. Por exemplo,lineitem;ordertb
corresponde a tabelas com os nomeslineitem
eordertb
..*
corresponde a todas as tabelas.
Opcional: para o caminho do GCS de saída da tradução, especifique um caminho para a pasta do Cloud Storage que contém os ficheiros de mapeamento de esquemas do motor de tradução. Pode deixar este campo vazio para que o conetor do Snowflake detete automaticamente o seu esquema.
- O caminho deve seguir o formato
translation_target_base_uri/metadata/config/db/schema/
e tem de terminar com/
.
- O caminho deve seguir o formato
Para Nome do objeto de integração de armazenamento, introduza o nome do objeto de integração de armazenamento do Snowflake. Neste caso,
S3
.Para Fornecedor de nuvem, selecione
AWS
.Para URI do GCS, nome da conta de armazenamento do Azure, nome do contentor do Azure e SAS do Azure, deixe estes campos em branco.
Para o URI do Amazon S3, introduza o URI do contentor do S3 a usar como área de preparação.
Para o ID da chave de acesso e a chave de acesso secreta, introduza o par de chaves de acesso.
- Para o Identificador da conta, introduza um identificador exclusivo para a sua conta do Snowflake, que é uma combinação do nome da organização e do nome da conta. O identificador é o prefixo do URL da conta Snowflake e não o URL completo. Por exemplo,
Opcional: na secção Opções de notificação, faça o seguinte:
- Clique no botão para ativar as notificações por email. Quando ativa esta opção, o administrador da transferência recebe uma notificação por email quando uma execução de transferência falha.
- Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico. Esta opção configura notificações executadas pelo Pub/Sub para a transferência.
Clique em Guardar.
A Google Cloud consola apresenta todos os detalhes da configuração da transferência, incluindo um nome do recurso para esta transferência.
bq
Introduza o comando bq mk
e forneça a flag de criação de transferência
--transfer_config
. Os seguintes indicadores também são obrigatórios:
--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 o seguinte:
- project_id: o ID do seu Google Cloud projeto. Se
--project_id
não for especificado, é usado o projeto predefinido. - data_source: a origem de dados,
snowflake_migration
. - dataset: o conjunto de dados de destino do BigQuery para a configuração de transferência.
- name: o nome a apresentar da configuração de transferência. O nome da transferência pode ser qualquer valor que lhe permita identificar a transferência se precisar de a modificar mais tarde.
- service_account: (opcional) o nome da conta de serviço usado para autenticar a sua transferência. A conta de serviço deve ser propriedade do mesmo
project_id
usado para criar a transferência e deve ter todas as funções necessárias. - parameters: os parâmetros da configuração de transferência criada no formato JSON. Por exemplo:
--params='{"param":"param_value"}'
.
Os parâmetros necessários para uma configuração de transferência do Snowflake são:
account_identifier
: especifique um identificador exclusivo para a sua conta do Snowflake, que é uma combinação do nome da sua organização e do nome da conta. O identificador é o prefixo do URL da conta Snowflake e não o URL completo. Por exemplo,account_identifier.snowflakecomputing.com
.username
: especifique o nome de utilizador do utilizador do Snowflake cujas credenciais e autorização são usadas para aceder à sua base de dados para transferir as tabelas do Snowflake.auth_mechanism
: especifique o método de autenticação do utilizador do Snowflake. Os valores suportados sãoPASSWORD
eKEY_PAIR
. Para mais informações, consulte o artigo Gere um par de chaves para autenticação.password
: especifique a palavra-passe do utilizador do Snowflake. Este campo é obrigatório se tiver especificadoPASSWORD
no campoauth_mechanism
.private_key
: especifique a chave privada associada à chave pública associada ao utilizador do Snowflake. Este campo é obrigatório se tiver especificadoKEY_PAIR
no campoauth_mechanism
.is_private_key_encrypted
: especifiquetrue
se a chave privada estiver encriptada com uma frase de acesso.private_key_passphrase
: especifique a frase de acesso para a chave privada encriptada. Este campo é obrigatório se tiver especificadoKEY_PAIR
no campoauth_mechanism
e especificadotrue
no campois_private_key_encrypted
.warehouse
: especifique um armazém de dados que é usado para a execução desta transferência de dados.service_account
: especifique uma conta de serviço a usar com esta transferência de dados. A conta de serviço deve pertencer ao mesmo projeto Google Cloud onde a configuração de transferência e o conjunto de dados de destino são criados. A conta de serviço tem de ter as autorizações necessáriasstorage.objects.list
estorage.objects.get
.database
: especifique o nome da base de dados do Snowflake que contém as tabelas incluídas nesta transferência de dados.schema
: especifique o nome do esquema do Snowflake que contém as tabelas incluídas nesta transferência de dados.table_name_patterns
: especifique uma tabela a transferir introduzindo um nome ou um padrão que corresponda ao nome da tabela no esquema. Pode usar expressões regulares para especificar o padrão, por exemplotable1_regex;table2_regex
. O padrão deve seguir a sintaxe de expressão regular Java. Por exemplo,lineitem;ordertb
corresponde a tabelas com os nomeslineitem
eordertb
..*
corresponde a todas as tabelas.Também pode deixar este campo em branco para migrar todas as tabelas do esquema especificado.
translation_output_gcs_path
: (Opcional) especifique um caminho para a pasta do Cloud Storage que contém os ficheiros de mapeamento de esquemas do motor de tradução. Pode deixar este campo vazio para que o conetor do Snowflake detete automaticamente o seu esquema.- O caminho deve seguir o formato
gs://translation_target_base_uri/metadata/config/db/schema/
e tem de terminar com/
.
- O caminho deve seguir o formato
storage_integration_object_name
: especifique o nome do objeto de integração de armazenamento do Snowflake. Neste caso,S3
.cloud_provider
: especifiqueAWS
.amazon_s3_uri
: especifique o URI do contentor do S3 a usar como área de preparação.aws_access_key_id
: especifique o par de chaves de acesso.aws_secret_access_key
: especifique o par de chaves de acesso.
Por exemplo, o comando seguinte cria uma transferência do Snowflake denominada snowflake transfer config
com um conjunto de dados de destino denominado your_bq_dataset
e um projeto com o ID your_project_id
.
PARAMS='{ "account_identifier": "your_account_identifier", "auth_mechanism": "KEY_PAIR", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "private_key": "-----BEGIN PRIVATE KEY----- privatekey\nseparatedwith\nnewlinecharacters=-----END PRIVATE KEY-----", "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
.
Quotas e limites
O BigQuery tem uma quota de carregamento de 15 TB para cada tarefa de carregamento para cada tabela. Internamente, o Snowflake comprime os dados da tabela, pelo que o tamanho da tabela exportada é superior ao tamanho da tabela comunicado pelo Snowflake. Se planeia migrar uma tabela com mais de 15 TB, contacte dts-migration-preview-support@google.com.
Devido ao modelo de consistência do Amazon S3, é possível que alguns ficheiros não sejam incluídos na transferência para o BigQuery.
Preços
Para informações sobre os preços do Serviço de transferência de dados do BigQuery, consulte a página Preços.
- Se o armazém do Snowflake e o contentor do Amazon S3 estiverem em regiões diferentes, o Snowflake aplica custos de saída quando executa uma transferência de dados do Snowflake. Não existem cobranças de saída para transferências de dados do Snowflake se o data warehouse do Snowflake e o contentor do Amazon S3 estiverem na mesma região.
- Quando os dados são transferidos da AWS para o Google Cloud, são aplicados custos de saída entre nuvens.
O que se segue?
- Saiba mais acerca do Serviço de transferência de dados do BigQuery.
- Migre código SQL com a tradução de SQL em lote.