Detecção e mapeamento de esquema para o Snowflake
Neste guia, mostramos como definir seu esquema ao transferir dados do Snowflake para o BigQuery. É possível usar o serviço de transferência de dados do BigQuery para detectar automaticamente o mapeamento de esquema e tipo de dados ou usar o mecanismo de tradução para definir manualmente o esquema e os tipos de dados.
Detecção de esquema padrão
O conector do Snowflake pode detectar automaticamente o esquema da tabela do Snowflake. Para usar a detecção automática de esquema, deixe o campo Caminho do GCS de saída da tradução em branco ao configurar uma transferência do Snowflake.
A lista a seguir mostra como o conector do Snowflake mapeia os tipos de dados do Snowflake para o BigQuery:
- Os seguintes tipos de dados são mapeados como
STRINGno BigQuery:TIMESTAMP_TZTIMESTAMP_LTZOBJECTVARIANTARRAY
- Os seguintes tipos de dados são mapeados como
TIMESTAMPno BigQuery:TIMESTAMP_NTZ
Todos os outros tipos de dados do Snowflake são mapeados diretamente para os tipos equivalentes no BigQuery.
Usar a saída do mecanismo de tradução para o esquema
Para definir seu esquema manualmente (por exemplo, para substituir determinados atributos do esquema), gere os metadados e execute o mecanismo de tradução com estas etapas:
Limitações
Os dados são extraídos do Snowflake no formato de dados Parquet antes de serem carregados no BigQuery:
- Os seguintes tipos de dados do Parquet não são aceitos:
TIMESTAMP_TZ,TIMESTAMP_LTZ- Para mais informações, consulte Avaliar dados do Snowflake.
Os seguintes tipos de dados Parquet não são compatíveis, mas podem ser convertidos:
TIMESTAMP_NTZOBJECT,VARIANT,ARRAY
Use o YAML de configuração de conversão de tipo global para substituir o comportamento padrão desses tipos de dados ao 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 json: VARCHAR
- Os seguintes tipos de dados do Parquet não são aceitos:
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-toolpara o Snowflake. Para mais informações, consulte Gerar metadados para tradução e avaliação. - Faça upload do arquivo
metadata.zipgerado 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_typescomometadata. 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.
Recomendamos que a conta de serviço pertença ao mesmo projeto Google Cloud em que a configuração de transferência e o conjunto de dados de destino são criados. Se a conta de serviço estiver em um projeto Google Cloud diferente do projeto que criou a transferência de dados do BigQuery, 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.