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.

O fluxo de dados durante uma migração do Snowflake 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:
    • 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 para TIMESTAMP 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
      

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.

  1. Prepare o seu Google Cloud projeto
  2. Funções do BigQuery necessárias
  3. Prepare o seu contentor do Amazon S3
  4. Crie um utilizador do Snowflake com as autorizações necessárias
  5. Adicione políticas de rede
  6. Opcional: gere metadados e execute o motor de tradução
  7. Avalie o seu Snowflake para verificar se existem tipos de dados não suportados
  8. 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:

  1. Crie um Google Cloud projeto ou selecione um projeto existente.

  2. Verifique se concluiu todas as ações necessárias para ativar o Serviço de transferência de dados do BigQuery.

  3. 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.

  1. Crie um contentor do Amazon S3. O contentor do Amazon S3 é usado para preparar os dados antes de serem carregados no BigQuery.

  2. 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:

  1. Crie um utilizador do IAM da Amazon dedicado e conceda-lhe a política AmazonS3ReadOnlyAccess.

  2. 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 criar
  • WAREHOUSE_NAME: o nome do seu armazém de dados
  • DATABASE_NAME: o nome da sua base 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.

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:

  1. 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.
  2. 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:

  1. Execute o dwh-migration-tool para o Snowflake. Para mais informações, consulte o artigo Gere metadados para tradução e avaliação.
  2. Carregue o ficheiro metadata.zip gerado para um contentor do Cloud Storage. O ficheiro metadata.zip é usado como entrada para o motor de tradução.
  3. Execute o serviço de tradução em lote, especificando o campo target_types como metadata. 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:

Configure uma transferência do Snowflake

Selecione uma das seguintes opções:

Consola

  1. Aceda à página Transferências de dados na Google Cloud consola.

    Aceda a Transferências de dados

  2. Clique em Criar transferência.

  3. Na secção Tipo de origem, selecione Migração do Snowflake na lista Origem.

  4. 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.

  5. Na secção Definições de destino, escolha o conjunto de dados que criou na lista Conjunto de dados.

  6. Na secção Detalhes da origem de dados, faça o seguinte:

    1. 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.
    2. 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.
    3. 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
    4. 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.
    5. 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.
    6. Para A chave privada está encriptada, selecione este campo se a chave privada estiver encriptada com uma frase de acesso.
    7. 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.
    8. Para Warehouse, introduza um armazém que é usado para a execução desta transferência de dados.
    9. 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 e storage.objects.get.
    10. 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.
    11. Para Esquema, introduza o nome do esquema do Snowflake que contém as tabelas incluídas nesta transferência de dados.
    12. 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 nomes lineitem e ordertb.
      • .* corresponde a todas as tabelas.
    13. 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 /.
    14. Para Nome do objeto de integração de armazenamento, introduza o nome do objeto de integração de armazenamento do Snowflake. Neste caso, S3.

    15. Para Fornecedor de nuvem, selecione AWS.

    16. 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.

    17. Para o URI do Amazon S3, introduza o URI do contentor do S3 a usar como área de preparação.

    18. Para o ID da chave de acesso e a chave de acesso secreta, introduza o par de chaves de acesso.

  7. Opcional: na secção Opções de notificação, faça o seguinte:

    1. 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.
    2. 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.
  8. Clique em Guardar.

  9. 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ão PASSWORD e KEY_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 especificado PASSWORD no campo auth_mechanism.
  • private_key : especifique a chave privada associada à chave pública associada ao utilizador do Snowflake. Este campo é obrigatório se tiver especificado KEY_PAIR no campo auth_mechanism.
  • is_private_key_encrypted : especifique true 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 especificado KEY_PAIR no campo auth_mechanism e especificado true no campo is_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árias storage.objects.list e storage.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 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 nomes lineitem e ordertb.
    • .* 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 /.
  • storage_integration_object_name: especifique o nome do objeto de integração de armazenamento do Snowflake. Neste caso, S3.

  • cloud_provider: especifique AWS.

  • 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?