

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conectando-se a um data warehouse do Snowflake com AWS Schema Conversion Tool
<a name="CHAP_Source.Snowflake"></a>

Você pode usar AWS SCT para converter esquemas, objetos de código e código de aplicativo do Snowflake para o Amazon Redshift.

## Privilégios do Snowflake como um banco de dados de origem
<a name="CHAP_Source.Snowflake.Permissions"></a>

Você pode criar uma função com privilégios e conceder a essa função o nome de um usuário usando a função `SECURITYADMIN` e o contexto da sessão `SECURITYADMIN`.

O exemplo a seguir cria privilégios mínimos e os concede ao usuário `min_privs`. 

```
create role role_name;
grant role role_name to role sysadmin;
grant usage on database db_name to role role_name;
grant usage on schema db_name.schema_name to role role_name;             
grant usage on warehouse datawarehouse_name to role role_name;
grant monitor on database db_name to role role_name;
grant monitor on warehouse datawarehouse_name to role role_name;
grant select on all tables in schema db_name.schema_name to role role_name;
grant select on future tables in schema db_name.schema_name to role role_name;
grant select on all views in schema db_name.schema_name to role role_name;
grant select on future views in schema db_name.schema_name to role role_name;
grant select on all external tables in schema db_name.schema_name to role role_name;
grant select on future external tables in schema db_name.schema_name to role role_name;
grant usage on all sequences in schema db_name.schema_name to role role_name;
grant usage on future sequences in schema db_name.schema_name to role role_name;
grant usage on all functions in schema db_name.schema_name to role role_name;
grant usage on future functions in schema db_name.schema_name to role role_name;
grant usage on all procedures in schema db_name.schema_name to role role_name;
grant usage on future procedures in schema db_name.schema_name to role role_name;
create user min_privs password='real_user_password'  
DEFAULT_ROLE = role_name DEFAULT_WAREHOUSE = 'datawarehouse_name';
grant role role_name to user min_privs;
```

No exemplo anterior, substitua os espaços reservados conforme a seguir:
+ Substitua *`role_name`* pelo nome de uma função com privilégios somente leitura.
+ Substitua `db_name` pelo nome do banco de dados de origem.
+ Substitua `schema_name` pelo nome do esquema de origem.
+ Substitua *`datawarehousename`* pelo nome de um data warehouse necessário.
+ Substitua `min_privs` pelo nome de um usuário que tenha privilégios mínimos.

Os parâmetros `DEFAULT_ROLE` e `DEFAULT_WAREHOUSE` são sensíveis a maiúsculas e minúsculas.

## Como configurar o acesso seguro ao Amazon S3
<a name="CHAP_Source.Snowflake.IAM"></a>

As políticas de gerenciamento de segurança e acesso para um bucket do Amazon S3 permitem que o Snowflake acesse, leia e grave dados no bucket do S3. Você pode configurar o acesso seguro a um bucket privado do Amazon S3 usando o tipo de objeto `STORAGE INTEGRATION` do Snowflake. Um objeto de integração de armazenamento do Snowflake delega a responsabilidade de autenticação a uma entidade de gerenciamento de identidade e acesso do Snowflake.

Para obter mais informações, consulte [Como configurar uma integração de armazenamento do Snowflake para acessar o Amazon S3](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html) na documentação do Snowflake.

## Como se conectar ao Snowflake como origem
<a name="CHAP_Source.Snowflake.Connecting"></a>

Use o procedimento a seguir para conectar seu banco de dados de origem com a AWS Schema Conversion Tool. 

**Para se conectar a um banco de dados de origem do Snowflake**

1. No AWS Schema Conversion Tool, escolha **Adicionar fonte**. 

1. Escolha **Snowflake** e, em seguida, escolha **Avançar**. 

   A caixa de diálogo **Adicionar origem** é exibida.

1. Em **Nome da conexão**, insira um nome para o banco de dados. A AWS SCT exibe esse nome na árvore no painel esquerdo. 

1. Use as credenciais do banco de dados AWS Secrets Manager ou insira-as manualmente:
   + Para usar as credenciais do banco de dados do Secrets Manager, use as instruções a seguir:

     1. Em **Segredo da AWS **, escolha o nome do seu segredo.

     1. Escolha **Preencher** para preencher automaticamente todos os valores na caixa de diálogo de conexão do banco de dados do Secrets Manager.

     Para obter informações sobre o uso de credenciais de banco de dados do Secrets Manager, consulte a [Configurando AWS Secrets Manager no AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md).
   + Para inserir manualmente as informações de conexão do data warehouse do Snowflake de origem, use as instruções a seguir:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/SchemaConversionTool/latest/userguide/CHAP_Source.Snowflake.html)

1. Escolha **Testar conexão** para verificar se AWS SCT pode se conectar ao seu banco de dados de origem. 

1. Escolha **Conectar** para se conectar ao banco de dados de origem.

## Limitações do Snowflake como origem
<a name="CHAP_Source.Snowflake.Limitations"></a>

A seguir estão as limitações ao usar o Snowflake como fonte para: AWS SCT
+ Os identificadores de objeto devem ser exclusivos dentro do contexto do tipo de objeto e do objeto pai:  
**Banco de dados**  
Os identificadores do esquema devem ser exclusivos dentro de um banco de dados.  
**Esquemas**  
Os identificadores de objetos, como tabelas e visualizações, devem ser exclusivos em um esquema.  
**Tabelas/Visualizações**  
Os identificadores de colunas devem ser exclusivos em uma tabela.
+ O número máximo de tabelas para tipos de nó de cluster large e xlarge é 9.900. O número máximo de tabelas para tipos de nó de cluster 8xlarge é 100.000. O limite inclui tabelas temporárias, tanto definidas pelo usuário ou criadas pelo Amazon Redshift durante o processamento de consultas ou a manutenção do sistema. Para obter mais informações, consulte [Cotas do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) no *Guia de gerenciamento de clusters do Amazon Redshift*.
+ Para procedimentos armazenados, o número máximo de argumentos de entrada e saída é 32.

## Tipos de dados de origem do Snowflake
<a name="CHAP_Source.Snowflake.DataTypes"></a>

A seguir, você pode encontrar os tipos de dados de origem do Snowflake que são compatíveis com o uso AWS SCT e o mapeamento padrão para um destino do Amazon Redshift.


| Tipos de dados do Snowflake | Tipos de dados do Amazon Redshift | 
| --- | --- | 
|  NUMBER  |  NUMERIC(38)  | 
|  NUMBER(p)  |  Se p for =< 4, então SMALLINT Se p for => 5 e =< 9, então INTEGER Se p for => 10 e =< 18, então BIGINT Se p for => 19, então NUMERIC(p)   | 
|  NUMBER(p, 0)  |  Se p for =< 4, então SMALLINT Se p for => 5 e =< 9, então INTEGER Se p for => 10 e =< 18, então BIGINT Se p for => 19, então: NUMERIC(p,0)  | 
|  NUMBER(p, s)  |  Se p for => 1 e =< 38, e se s for => 1 e =< 37, então NUMERIC(p,s)   | 
|  FLOAT  | FLOAT | 
|  TEXT Caracteres Unicode de até 16.777.216 bytes; até 4 bytes por caractere.  |  VARCHAR(MAX)  | 
|  TEXT(p) Caracteres Unicode de até 65.535 bytes; até 4 bytes por caractere.  |  Se p for =< 65.535 então, VARCHAR(p)  | 
|  TEXT(p) Caracteres Unicode de até 16.777.216 bytes; até 4 bytes por caractere.  |  Se p for => 65.535 e =< 16.777.216 então, VARCHAR(MAX)  | 
|  BINARY Caracteres de byte único de até 8.388.608 bytes; 1 byte por caractere.  | VARCHAR(MAX) | 
|  BYNARY(p) Caracteres de byte único de até 65.535 bytes; 1 byte por caractere.  | VARCHAR(p) | 
|  BYNARY(p) Caracteres de byte único de até 8.388.608 bytes; 1 byte por caractere.  | VARCHAR(MAX) | 
|  BOOLEAN  | BOOLEAN | 
|  DATE  | DATE | 
|  TIME Valores de tempo entre 00:00:00 e 23:59:59.999999999.  | VARCHAR(18) | 
|  TIME(f) Valores de tempo entre 00:00:00 e 23:59:59.9(f).   | VARCHAR (n): 9 \$1 dt-attr-1 | 
|  TIMESTAMP\$1NTZ  | TIMESTAMP | 
|  TIMESTAMP\$1TZ  | TIMESTAMPTZ | 

## Configurações de conversão do Snowflake para o Amazon Redshift
<a name="CHAP_Source.Snowflake.ConversionSettings"></a>

**Para editar as configurações de conversão do Snowflake para o Amazon Redshift, escolha Configurações em e, AWS SCT em seguida, **escolha** Configurações de conversão.** Na lista superior, escolha **Snowflake** e, em seguida, escolha **Snowflake — Amazon Redshift**. AWS SCT exibe todas as configurações disponíveis para conversão do Snowflake para o Amazon Redshift.

As configurações AWS SCT de conversão do Snowflake para o Amazon Redshift incluem opções para o seguinte:
+ Para limitar o número de comentários com itens de ação no código convertido.

  Em **Adicionar comentários no código convertido para os itens de ação de severidade selecionada e superior**, escolha a severidade dos itens de ação. AWS SCT adiciona comentários no código convertido para itens de ação da severidade selecionada e superior.

  Por exemplo, para minimizar o número de comentários em seu código convertido, escolha **Somente erros**. Para incluir comentários para todos os itens de ação em seu código convertido, escolha **Todas as mensagens**.
+ Para definir o número máximo de tabelas que AWS SCT podem ser aplicadas ao seu cluster de destino do Amazon Redshift.

  Em **O número máximo de tabelas para o cluster de destino do Amazon Redshift**, escolha o número de tabelas que AWS SCT podem ser aplicadas ao seu cluster do Amazon Redshift.

  O Amazon Redshift tem cotas que limitam as tabelas de uso para diferentes tipos de nós de cluster. Se você escolher **Auto**, AWS SCT determinará o número de tabelas a serem aplicadas ao seu cluster de destino do Amazon Redshift, dependendo do tipo de nó. Opcionalmente, escolha o valor manualmente. Para obter mais informações, consulte “[Cotas e limites no Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html)” no *Guia de gerenciamento de clusters do Amazon Redshift*.

  AWS SCT converte todas as suas tabelas de origem, mesmo que isso seja mais do que o seu cluster do Amazon Redshift pode armazenar. AWS SCT armazena o código convertido em seu projeto e não o aplica ao banco de dados de destino. Se você atingir a cota de cluster do Amazon Redshift para as tabelas ao aplicar o código convertido, a AWS SCT exibirá uma mensagem de aviso. Além disso, AWS SCT aplica tabelas ao seu cluster de destino do Amazon Redshift até que o número de tabelas atinja o limite.
+ Para aplicar compactação às colunas da tabela do Amazon Redshift. Para fazer isso, selecione **Usar codificação de compressão**.

  AWS SCT atribui a codificação de compactação às colunas automaticamente usando o algoritmo padrão do Amazon Redshift. Para obter mais informações, consulte [Codificações de compactação](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html) no *Guia do desenvolvedor de banco de dados do Amazon Redshift*.

  Por padrão, o Amazon Redshift não aplica compactação a colunas definidas como chaves de classificação e distribuição. É possível alterar esse comportamento e aplicar compactação a essas colunas. Para fazer isso, selecione **Usar codificação de compactação para colunas KEY**. Você pode selecionar essa opção somente ao selecionar a opção **Usar codificação de compactação**.

## Configurações de otimização de conversão do Snowflake para o Amazon Redshift
<a name="CHAP_Source.Snowflake.ConversionOptimizationSettings"></a>

**Para editar as configurações de otimização de conversão do Snowflake para o Amazon Redshift, **escolha Configurações em e, AWS SCT em seguida, selecione** Configurações de conversão.** Na lista superior, escolha **Snowflake** e, em seguida, escolha **Snowflake: Amazon Redshift**. No painel esquerdo, escolha **Estratégias de otimização**. AWS SCT exibe as configurações de otimização de conversão para a conversão do Snowflake para o Amazon Redshift.

As configurações AWS SCT de otimização de conversão do Snowflake para o Amazon Redshift incluem opções para o seguinte:
+ Para trabalhar com otimização automática de tabelas. Para fazer isso, selecione **Usar o ajuste automático da tabela do Amazon Redshift**.

  A otimização automática de tabelas é um processo de autoajuste no Amazon Redshift que otimiza automaticamente o design de tabelas. Para obter mais informações, consulte [Como trabalhar com a otimização automática de tabelas](https://docs.aws.amazon.com/redshift/latest/dg/t_Creating_tables.html) no *Guia do desenvolvedor do banco de dados Amazon Redshift*.

  Para confiar somente na otimização automática da tabela, escolha **Nenhuma** para a **Estratégia inicial de seleção de chave**.
+ Para escolher chaves de classificação e distribuição usando sua estratégia.

  Você pode escolher chaves de classificação e distribuição usando metadados, informações estatísticas ou ambas as opções do Amazon Redshift. Para **Estratégia inicial de seleção de chave** na guia **Estratégias de otimização**, escolha uma das seguintes opções:
  + Use metadados, ignore informações estatísticas
  + Ignore metadados, use informações estatísticas
  + Use metadados e informações estatísticas

  Dependendo da opção escolhida, você pode selecionar estratégias de otimização. Em seguida, para cada estratégia, insira o valor (0-100). Esses valores definem o peso de cada estratégia. Usando esses valores de peso, a AWS SCT define como cada regra influencia na escolha das chaves de distribuição e classificação. Os valores padrão são baseados nas melhores práticas de AWS migração.

  Você pode definir o tamanho de tabelas pequenas para a estratégia **Localizar tabelas pequenas**. Em Contagem **mínima de linhas da tabela e Contagem** **máxima de linhas** da tabela, insira o número mínimo e máximo de linhas em uma tabela para defini-la como uma tabela pequena. AWS SCT aplica o estilo `ALL` de distribuição a tabelas pequenas. Nesse caso, uma cópia de toda a tabela é distribuída para cada nó.
+ Para configurar os detalhes da estratégia.

  Além de definir o peso de cada estratégia de otimização, você pode definir as configurações de otimização. Para fazer isso, escolha **Otimização de conversões**. 
  + Em **Limite de colunas da chave de classificação**, insira o número máximo de colunas na chave de classificação.
  + Em **Valor limite distorcido**, insira a porcentagem (0—100) de um valor distorcido para uma coluna. AWS SCT exclui colunas com o valor de inclinação maior que o limite da lista de candidatos para a chave de distribuição. AWS SCT define o valor distorcido de uma coluna como a proporção percentual entre o número de ocorrências do valor mais comum e o número total de registros.
  + Para as **N principais consultas da tabela do histórico de consultas**, insira o número (1-100) das consultas usadas com mais frequência para análise.
  + Em **Selecionar usuário de estatísticas**, escolha o usuário do banco de dados para o qual você deseja analisar as estatísticas de consulta.

  Além disso, na guia **Estratégias de otimização**, você pode definir o tamanho das tabelas pequenas para a estratégia **Localizar tabelas pequenas**. Em Contagem **mínima de linhas da tabela e Contagem** **máxima de linhas** da tabela, insira o número mínimo e máximo de linhas em uma tabela para considerá-la como uma tabela pequena. AWS SCT aplica o estilo `ALL` de distribuição a tabelas pequenas. Nesse caso, uma cópia de toda a tabela é distribuída para cada nó.