

# CREATE TABLE AS
<a name="create-table-as"></a>

Cria uma tabela preenchida com os resultados de uma consulta [SELECT](select.md). Para criar uma tabela vazia, use [CREATE TABLE](create-table.md). `CREATE TABLE AS` combina uma instrução DDL `CREATE TABLE` com uma instrução DML `SELECT` e, portanto, tecnicamente contém DDL e DML. Observe que, embora `CREATE TABLE AS` esteja agrupado aqui com outras instruções DDL, as consultas CTAS no Athena são tratadas como DML para fins de cotas de serviço. Para obter informações sobre as cotas de serviço do Athena, consulte [Service Quotas](service-limits.md).

**nota**  
Para instruções CTAS, a configuração esperada do proprietário do bucket não se aplica ao local da tabela de destino no Amazon S3. A configuração esperada do proprietário do bucket se aplica somente ao local de saída do Amazon S3 que você especificar para os resultados da consulta do Athena. Para ter mais informações, consulte [Especificar um local para resultados de consultas com uso do console do Athena](query-results-specify-location-console.md).

Para obter outras informações sobre `CREATE TABLE AS` que não fazem parte do escopo deste tópico de referência, consulte [Criar uma tabela com base em resultados de consultas (CTAS)](ctas.md).

**Topics**
+ [Resumo](#synopsis)
+ [Propriedades da tabela CTAS](#ctas-table-properties)
+ [Exemplos](#ctas-table-examples)

## Resumo
<a name="synopsis"></a>

```
CREATE TABLE table_name
[ WITH ( property_name = expression [, ...] ) ]
AS query
[ WITH [ NO ] DATA ]
```

Em que:

**COM ( property\$1name = expression [, ...] )**  
Uma lista de propriedades opcionais da tabela CTAS, algumas das quais são específicas do formato de armazenamento de dados. Consulte [Propriedades da tabela CTAS](#ctas-table-properties).

**consulta**  
A consulta [SELECT](select.md) que é usada para criar uma tabela.  
Se você planeja criar uma consulta com partições, especifique os nomes das colunas particionadas por último na lista de colunas na `SELECT` instrução.

**[ WITH [ NO ] DATA ]**  
Se `WITH NO DATA` for usado, uma tabela vazia com o mesmo esquema da tabela original será criada.

**nota**  
Para incluir cabeçalhos de coluna na saída do resultado da consulta, você pode usar uma consulta `SELECT` simples em vez de uma consulta CTAS. Você pode recuperar os resultados no local dos resultados da consulta ou baixá-los diretamente usando o console do Athena. Para ter mais informações, consulte [Trabalhar com resultados de consultas e consultas recentes](querying.md). 

## Propriedades da tabela CTAS
<a name="ctas-table-properties"></a>

Cada tabela CTAS no Athena tem uma lista de propriedades opcionais que você especifica usando `WITH (property_name = expression [, ...] )`. Para obter mais informações sobre como usar esses parâmetros, consulte [Exemplos de consultas CTAS](ctas-examples.md).

** `WITH (property_name = expression [, ...], )` **    
 `table_type = ['HIVE', 'ICEBERG']`   
Opcional. O padrão é `HIVE`. Especifica o tipo de tabela da tabela resultante.  
Exemplo:  

```
WITH (table_type ='ICEBERG')
```  
 `external_location = [location]`   
Como as tabelas do Iceberg não são externas, essa propriedade não se aplicará a elas. Para definir o local raiz de uma tabela do Iceberg em uma instrução CTAS, use a propriedade `location`, que será descrita posteriormente nesta seção.
Opcional. O local no qual o Athena salvará sua consulta CTAS no Amazon S3.  
Exemplo:  

```
 WITH (external_location ='s3://amzn-s3-demo-bucket/tables/parquet_table/')
```
O Athena não usa o mesmo caminho duas vezes para os resultados das consultas. Se você especificar o local manualmente, verifique se o local especificado no Amazon S3 não contém dados. O Athena nunca tenta excluir os dados. Para usar o mesmo local novamente, exclua os dados manualmente. Caso contrário, a consulta CTAS falhará.  
Se você executar uma consulta CTAS que especifica um `external_location` em um grupo de trabalho que [impõe um local para os resultados de consultas](workgroups-settings-override.md), a consulta falhará com uma mensagem de erro. Para ver o local dos resultados de consultas especificado para o grupo de trabalho, [consulte os detalhes do grupo de trabalho](viewing-details-workgroups.md).  
Se o grupo de trabalho substituir a configuração de local dos resultados das consultas do lado do cliente, o Athena criará sua tabela no seguinte local:  

```
s3://amzn-s3-demo-bucket/tables/query-id/
```
Se você não usar a propriedade `external_location` para especificar um local, e o grupo de trabalho não substituir as configurações do lado do cliente, o Athena usará a [configuração do lado do cliente](query-results-specify-location-console.md) de local dos resultados das consultas para criar sua tabela no seguinte local:  

```
s3://amzn-s3-demo-bucket/Unsaved-or-query-name/year/month/date/tables/query-id/
```  
 `is_external = [boolean]`   
Opcional. Indica se a tabela corresponde a uma tabela externa. O padrão é true. Para tabelas do Iceberg, deve ser definido como “false” (falso).  
Exemplo:  

```
WITH (is_external = false)
```  
 `location = [location]`   
Obrigatório para tabelas do Iceberg. Especifica o local raiz da tabela do Iceberg que será criada a partir dos resultados da consulta.  
Exemplo:  

```
WITH (location ='s3://amzn-s3-demo-bucket/tables/iceberg_table/')
```  
 `field_delimiter = [delimiter]`   
Opcionais e específicos para formatos de armazenamento físico de dados com base em texto. O delimitador de campo de caractere único para arquivos em CSV, TSV e de texto. Por exemplo, `WITH (field_delimiter = ',')`. Atualmente, os delimitadores de campo de vários caracteres não são permitidos em consultas CTAS. Se você não especificar um delimitador do campo, `\001` será usado por padrão.  
 `format = [storage_format]`   
O formato de armazenamento dos resultados de consultas CTAS, como `ORC`, `PARQUET`, `AVRO`, `JSON`, `ION` ou `TEXTFILE`. Para tabelas do Iceberg, os formatos permitidos são `ORC`, `PARQUET` e `AVRO`. Se for omitido, `PARQUET` é usado por padrão. O nome deste parâmetro, `format`, deve estar listado em minúsculas, ou sua consulta CTAS falhará.   
Exemplo:  

```
WITH (format = 'PARQUET')
```  
 `bucketed_by = ARRAY[ column_name[,…], bucket_count = [int] ]`   
Essa propriedade não se aplica para tabelas do Iceberg. Para tabelas do Iceberg, use o particionamento com transformação de bucket.
Uma lista matriz de buckets para dados do bucket. Se omitida, o Athena não armazenará os dados dessa consulta em bucket.  
 `bucket_count = [int]`   
Essa propriedade não se aplica para tabelas do Iceberg. Para tabelas do Iceberg, use o particionamento com transformação de bucket.
O número de buckets para armazenar seus dados em um bucket. Se omitido, o Athena não armazenará os dados em bucket. Exemplo:  

```
CREATE TABLE bucketed_table WITH (
  bucketed_by = ARRAY[column_name], 
  bucket_count = 30, format = 'PARQUET', 
  external_location ='s3://amzn-s3-demo-bucket/tables/parquet_table/'
) AS 
SELECT 
  * 
FROM 
  table_name
```  
 `partitioned_by = ARRAY[ col_name[,…] ]`   
Essa propriedade não se aplica para tabelas do Iceberg. Para usar transformações de partição para tabelas do Iceberg, use a propriedade `partitioning`, que será descrita posteriormente nesta seção.
Opcional. Uma lista matriz de colunas pela qual a tabela CTAS será particionada. Verifique se os nomes das colunas particionadas estão listados por último na lista de colunas da instrução `SELECT`.   
 `partitioning = ARRAY[partition_transform, ...]`   
Opcional. Especifica o particionamento da tabela do Iceberg que será criada. O Iceberg é compatível com uma ampla variedade de transformações e evoluções de partições. As transformações de partição estão resumidas na tabela a seguir.    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/create-table-as.html)
Exemplo:  

```
 WITH (partitioning = ARRAY['month(order_date)', 
                            'bucket(account_number, 10)', 
                            'country']))
```  
 `optimize_rewrite_min_data_file_size_bytes = [long]`   
Opcional. Configuração específica de otimização de dados. Arquivos menores que o valor especificado são incluídos para otimização. O padrão é 0,75 vezes o valor de `write_target_data_file_size_bytes`. Essa propriedade se aplica apenas a tabelas do Iceberg. Para ter mais informações, consulte [Otimizar tabelas do Iceberg](querying-iceberg-data-optimization.md).  
Exemplo:  

```
WITH (optimize_rewrite_min_data_file_size_bytes = 402653184)
```  
 `optimize_rewrite_max_data_file_size_bytes = [long]`   
Opcional. Configuração específica de otimização de dados. Arquivos maiores que o valor especificado são incluídos para otimização. O padrão é 1,8 vezes o valor de `write_target_data_file_size_bytes`. Essa propriedade se aplica apenas a tabelas do Iceberg. Para ter mais informações, consulte [Otimizar tabelas do Iceberg](querying-iceberg-data-optimization.md).  
Exemplo:  

```
WITH (optimize_rewrite_max_data_file_size_bytes = 966367641)
```  
 `optimize_rewrite_data_file_threshold = [int]`   
Opcional. Configuração específica de otimização de dados. Se houver menos arquivos de dados que exigem otimização do que o limite fornecido, os arquivos não serão regravados. Isso permite acumular mais arquivos de dados para produzir arquivos mais próximos do tamanho de destino e ignorar a computação desnecessária para gerar economia de custos. O padrão é 5. Essa propriedade se aplica apenas a tabelas do Iceberg. Para ter mais informações, consulte [Otimizar tabelas do Iceberg](querying-iceberg-data-optimization.md).  
Exemplo:  

```
WITH (optimize_rewrite_data_file_threshold = 5)
```  
 `optimize_rewrite_delete_file_threshold = [int]`   
Opcional. Configuração específica de otimização de dados. Se houver menos arquivos de exclusão associados a um arquivo de dados do que o limite, o arquivo de dados não será regravado. Isso permite acumular mais arquivos de exclusão para cada arquivo de dados a fim de gerar economia de custos. O padrão é 2. Essa propriedade se aplica apenas a tabelas do Iceberg. Para ter mais informações, consulte [Otimizar tabelas do Iceberg](querying-iceberg-data-optimization.md).  
Exemplo:  

```
WITH (optimize_rewrite_delete_file_threshold = 2)
```  
 `vacuum_min_snapshots_to_keep = [int]`   
Opcional. Configuração específica para vácuo. O número mínimo de snapshots mais recentes a serem retidos. O padrão é um. Essa propriedade se aplica apenas a tabelas do Iceberg. Para ter mais informações, consulte [VACUUM](vacuum-statement.md).  
A propriedade `vacuum_min_snapshots_to_keep` requer a versão 3 do mecanismo do Athena. 
Exemplo:  

```
WITH (vacuum_min_snapshots_to_keep = 1)
```  
 `vacuum_max_snapshot_age_seconds = [long]`   
Opcional. Configuração específica para vácuo. Um período, em segundos, que representa o tempo pelo qual os snapshots serão retidos. O padrão é 432 mil (5 dias). Essa propriedade se aplica apenas a tabelas do Iceberg. Para ter mais informações, consulte [VACUUM](vacuum-statement.md).  
A propriedade `vacuum_max_snapshot_age_seconds` requer a versão 3 do mecanismo do Athena. 
Exemplo:  

```
WITH (vacuum_max_snapshot_age_seconds = 432000)
```  
 `write_compression = [compression_format]`   
O tipo de compactação a ser usado para qualquer formato de armazenamento que permita que a compactação seja especificada. O valor `compression_format` especifica a compactação a ser usada quando os dados são gravados na tabela. Você pode especificar a compactação para os formatos de arquivo `TEXTFILE`, `JSON`, `PARQUET` e `ORC`.   
Por exemplo, se a propriedade `format` especificar `PARQUET` como o formato de armazenamento, o valor para `write_compression` especificará o formato de compactação para Parquet. Nesse caso, especificar um valor para `write_compression` é equivalente a especificar um valor para `parquet_compression`.   
Por exemplo, se a propriedade `format` especificar `ORC` como o formato de armazenamento, o valor para `write_compression` especificará o formato de compactação para ORC. Nesse caso, especificar um valor para `write_compression` é equivalente a especificar um valor para `orc_compression`.   
Não é possível especificar várias propriedades da tabela de formato de compactação na mesma consulta CTAS. Por exemplo, não é possível especificar `write_compression` e `parquet_compression` na mesma consulta. O mesmo se aplica a `write_compression` e `orc_compression`. Para obter mais informações sobre os tipos de compactação suportados para cada formato de arquivo, consulte [Usar compactação no Athena](compression-formats.md).  
 `orc_compression = [compression_format]`   
O tipo de compactação a ser usado para o formato de arquivo `ORC` quando dados `ORC` são gravados na tabela. Por exemplo, `WITH (orc_compression = 'ZLIB')`. As partes dentro do arquivo `ORC` (exceto o `ORC` Postscript) são compactadas usando a compactação que você especificar. Se não especificada, a compactação ZLIB será usada por padrão para `ORC`.  
Para consistência, recomendamos que você use a propriedade `write_compression` em vez de `orc_compression`. Use a propriedade `format` para especificar o formato de armazenamento como `ORC` e, em seguida, use a propriedade `write_compression` para especificar o formato de compactação que `ORC` usará.   
 `parquet_compression = [compression_format]`   
O tipo de compactação a ser usado para o formato de arquivo Parquet quando os dados do Parquet são gravados na tabela. Por exemplo, `WITH (parquet_compression = 'SNAPPY')`. Essa compactação é aplicada a blocos de colunas em arquivos Parquet. Se não especificada, a compactação GZIP será usada por padrão para Parquet.  
Para consistência, recomendamos que você use a propriedade `write_compression` em vez de `parquet_compression`. Use a propriedade `format` para especificar o formato de armazenamento como `PARQUET` e, em seguida, use a propriedade `write_compression` para especificar o formato de compactação que `PARQUET` usará.   
 `compression_level = [compression_level]`   
O nível de compressão a ser usado. Essa propriedade se aplica apenas à compressão ZSTD. Os valores possíveis são de 1 a 22. O valor padrão é 3. Para ter mais informações, consulte [Usar níveis de compactação ZSTD](compression-support-zstd-levels.md).

## Exemplos
<a name="ctas-table-examples"></a>

Para obter exemplos de consultas CTAS, consulte os seguintes recursos.
+  [Exemplos de consultas CTAS](ctas-examples.md) 
+  [Usar CTAS e INSERT INTO para ETL e análise de dados](ctas-insert-into-etl.md) 
+  [Use CTAS statements with Amazon Athena to reduce cost and improve performance](https://aws.amazon.com/blogs/big-data/using-ctas-statements-with-amazon-athena-to-reduce-cost-and-improve-performance/) (Usar instruções CTAS com o Amazon Athena para reduzir custos e melhorar a performance) 
+  [Usar CTAS e INSERT INTO para resolver o limite de 100 partições](ctas-insert-into.md) 