

# Usar o AWS Glue Data Catalog para se conectar aos seus dados
<a name="data-sources-glue"></a>

O Athena usa o AWS Glue Data Catalog para armazenar metadados, como nomes de tabela e de coluna para se conectar aos dados armazenados no Amazon S3. Essas informações de metadados tornam-se os bancos de dados, as tabelas e as visualizações que são exibidas no editor de consultas do Athena.

Ao usar o Athena com o AWS Glue Data Catalog, é possível usar o AWS Glue para criar bancos de dados e tabelas (esquema) para serem consultados no Athena ou usar o Athena para criar um esquema e usá-lo no AWS Glue e nos serviços relacionados. 

Para definir informações de esquema para o AWS Glue, você pode usar um formulário no console do Athena, usar o editor de consultas no Athena ou criar um crawler do AWS Glue no console do AWS Glue. Os crawlers do AWS Glue inferem automaticamente o esquema de banco de dados e tabela dos seus dados do Amazon S3. Usar um formulário oferece mais personalização. Escrever suas próprias instruções `CREATE TABLE` exige mais esforço, mas oferece mais controle. Para obter mais informações, consulte [CREATE TABLE](create-table.md).

## Recursos adicionais
<a name="glue-additional-resources"></a>
+ Para obter mais informações sobre o AWS Glue Data Catalog, consulte [Data Catalog e crawlers no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) no *Guia do desenvolvedor do AWS Glue*.
+ Para ver um artigo ilustrativo que mostra como usar o AWS Glue e o Athena para processar dados XML, consulte [Process and analyze highly nested and large XML files using AWS Glue and Amazon Athena](https://aws.amazon.com/blogs/big-data/process-and-analyze-highly-nested-and-large-xml-files-using-aws-glue-and-amazon-athena/) no blog do AWS Big Data.
+ São feitas cobranças separadas pelo uso do AWS Glue. Para obter mais informações, consulte [Preços do AWS Glue](https://aws.amazon.com/glue/pricing).

**Topics**
+ [Recursos adicionais](#glue-additional-resources)
+ [Registrar e usar catálogos de dados no Athena](gdc-register.md)
+ [Registrar um catálogo de dados de outra conta](data-sources-glue-cross-account.md)
+ [Controlar o acesso a catálogos de dados com políticas do IAM](datacatalogs-iam-policy.md)
+ [Usar um formulário no console do Athena para adicionar uma tabela do AWS Glue](data-sources-glue-manual-table.md)
+ [Usar um crawler para adicionar uma tabela](schema-crawlers.md)
+ [Otimizar consultas com indexação e filtragem de partições do AWS Glue](glue-best-practices-partition-index.md)
+ [Usar a AWS CLI para recriar um banco de dados do AWS Glue e suas tabelas](glue-recreate-db-and-tables-cli.md)
+ [Criação de tabelas para trabalhos de ETL](schema-classifier.md)
+ [Trabalhar com dados CSV no AWS Glue](schema-csv.md)
+ [Trabalhar com dados geoespaciais no AWS Glue](schema-geospatial.md)

# Registrar e usar catálogos de dados no Athena
<a name="gdc-register"></a>

O Athena é compatível com a montagem e conexão com vários catálogos de dados. 
+ Você pode montar dados do Amazon Redshift no AWS Glue Data Catalog e consultá-los no Athena sem precisar copiar ou mover dados. Para obter mais informações, consulte [Bringing Amazon Redshift data into the AWS Glue Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-namespaces-datacatalog.html).
+  Conecte o AWS Glue Data Catalog a fontes de dados externas usando conexões do AWS Glue e crie catálogos federados para gerenciar centralmente as permissões aos dados com controle de acesso refinado usando o Lake Formation. Para obter mais informações, consulte [Registrar sua conexão como um Glue Data Catalog](register-connection-as-gdc.md).
+ Crie catálogos com base em buckets de tabela do Amazon S3 e use o Lake Formation para gerenciar centralmente as permissões de acesso e restringir o acesso do usuário aos objetos dentro do bucket de tabela. Para obter mais informações, consulte [Working with Amazon S3 Tables and table buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables.html) no Guia do usuário do Amazon S3.

**nota**  
Para qualquer catálogo do Glue, você só pode registrar um catálogo de vários níveis, como `123412341234:my_catalog/my_child`. Você não pode registrar um catálogo de nível único como `123412341234:linkcontainer` ou `my_catalog`. Catálogos de nível único só podem ser consultados usando o catálogo de dados Glue diretamente na consulta do Athena. Para obter mais informações, consulte [Consultar catálogos de dados do AWS Glue no Athena](gdc-register-query-the-data-source.md). 

**Topics**
+ [Registrar catálogos de dados do Redshift no Athena](gdc-register-rs.md)
+ [Registrar catálogos federados no Athena](gdc-register-federated.md)
+ [Registrar catálogos de buckets de tabela do S3 e consultar tabelas no Athena](gdc-register-s3-table-bucket-cat.md)
+ [Consultar catálogos de dados do AWS Glue no Athena](gdc-register-query-the-data-source.md)

# Registrar catálogos de dados do Redshift no Athena
<a name="gdc-register-rs"></a>

O Athena pode ler e gravar dados armazenados em clusters do Redshift ou namespaces com tecnologia sem servidor registrados no AWS Glue Data Catalog. Isso funciona em conjunto com o AWS Lake Formation, que fornece segurança e governança centralizadas, garantindo que o acesso aos dados seja gerenciado de modo consistente em diferentes mecanismos de consulta e mantendo controles de acesso refinados para os dados compartilhados do Redshift.

## Considerações e limitações
<a name="gdc-register-rs-considerations-and-limitations"></a>
+ **Visões materializadas**: as visões materializadas do Amazon Redshift podem ser consultadas no Athena, mas não há compatibilidade com a criação de visões materializadas usando o Athena ou o Spark.
+ Não há compatibilidade com as operações de DDL, incluindo a definição da configuração do AWS Glue Data Catalog e as operações nas tabelas de armazenamento gerenciado do Amazon Redshift.

## Pré-requisitos
<a name="gdc-register-rs-prerequisites"></a>

Antes que você possa consultar um catálogo de dados do AWS Glue pelo Athena, conclua as seguintes tarefas:

1. Crie e registre um cluster do Amazon Redshift ou namespace com tecnologia sem servidor no AWS Glue Data Catalog. Para obter mais informações, consulte [Registering a cluster to the AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/mgmt/register-cluster.html) ou [Registering namespaces to the AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless_datasharing-register-namespace.html) no Guia de gerenciamento do Amazon Redshift.

1. Crie um catálogo de dados do AWS Lake Formation usando o namespace registrado. Para obter mais informações, consulte [Creating Amazon Redshift federated catalogs](https://docs.aws.amazon.com/lake-formation/latest/dg/create-ns-catalog.html) no Guia do desenvolvedor do AWS Lake Formation.

1. (Opcional) Use o Lake Formation para definir controles de acesso refinados no catálogo. Para obter mais informações, consulte [Bringing your data into the AWS Glue Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/bring-your-data-overview.html) no Guia do desenvolvedor do AWS Lake Formation.

## Registrar um catálogo de dados do Redshift com o console do Athena
<a name="gdc-register-rs-console-steps"></a>

Para registrar um catálogo de dados do Redshift no console do Athena, execute as etapas a seguir.

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. No painel de navegação, escolha **Fontes de dados e catálogos**.

1. Na página **Fontes de dados e catálogos**, escolha **Criar fonte de dados**.

1. Em **Escolher uma fonte de dados**, escolha **Amazon S3 - AWS Glue Data Catalog**.

1. Na seção **AWS Glue Data Catalog**, em **Conta da fonte de dados**, escolha **AWS Glue Data Catalog nesta conta**.

1. Em **Criar uma tabela ou registrar um catálogo**, escolha **Registrar um novo catálogo do AWS Glue**.

1. Na seção **Detalhes da fonte de dados**, em **Nome da fonte de dados**, insira o nome que deseja usar para especificar a fonte de dados em suas consultas SQL ou use o nome padrão gerado.

1. Em **Catálogo**, escolha **Procurar** para pesquisar uma lista de catálogos do AWS Glue na mesma conta. Se você não encontrar nenhum catálogo existente, crie um no [console do AWS Glue](https://console.aws.amazon.com/glue/). 

1. Na caixa de diálogo **Procurar catálogos do AWS Glue**, selecione o catálogo que deseja usar e selecione **Escolher**.

1. (Opcional) Em **Tags**, adicione pares de chave/valor que queira associar à fonte de dados.

1. Escolha **Próximo**.

1. Na página **Revisar e criar**, verifique se as informações inseridas estão corretas e selecione **Criar fonte de dados**.

# Registrar catálogos federados no Athena
<a name="gdc-register-federated"></a>

Após criar conexões com fontes de dados federadas, você poderá registrá-las como catálogos de dados federados para simplificar a descoberta de dados e gerenciar o acesso aos dados com permissões refinadas usando o Lake Formation. Para obter mais informações, consulte [Registrar sua conexão como um Glue Data Catalog](register-connection-as-gdc.md).

## Considerações e limitações
<a name="gdc-register-federated-consideration"></a>
+ Não há compatibilidade com operações de DDL em catálogos federados. 
+ É possível registrar os seguintes conectores para integração com o AWS Glue a fim de oferecer um controle de acesso refinado:
  + [Azure Data Lake Storage](connectors-adls-gen2.md)
  + [Azure Synapse](connectors-azure-synapse.md)
  + [BigQuery](connectors-bigquery.md)
  + [CMDB](connectors-cmdb.md)
  + [Db2](connectors-ibm-db2.md)
  + [Db2 iSeries](connectors-ibm-db2-as400.md)
  + [DocumentDB](connectors-docdb.md)
  + [DynamoDB](connectors-dynamodb.md)
  + [Google Cloud Storage](connectors-gcs.md)
  + [HBase](connectors-hbase.md)
  + [MySQL](connectors-mysql.md)
  + [OpenSearch](connectors-opensearch.md)
  + [Oracle](connectors-oracle.md)
  + [PostgreSQL](connectors-postgresql.md)
  + [Redshift](connectors-redshift.md)
  + [SAP HANA](connectors-sap-hana.md)
  + [Snowflake](connectors-snowflake.md)
  + [do SQL Server](connectors-microsoft-sql-server.md)
  + [Timestream](connectors-timestream.md)
  + [TPC-DS](connectors-tpcds.md)
+ Quando você cria um link de recurso para a federação de conexões do Glue, o nome do [link de recurso](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html) precisa ser igual ao nome do banco de dados do produtor.
+ Atualmente, somente nomes de tabelas e colunas em minúsculas são reconhecidos, mesmo que a fonte de dados não diferencie maiúsculas de minúsculas.

# Registrar catálogos de buckets de tabela do S3 e consultar tabelas no Athena
<a name="gdc-register-s3-table-bucket-cat"></a>

Os buckets de tabela do Amazon S3 são um tipo de bucket no Amazon S3 criado especificamente para armazenar dados tabulares nas tabelas do Apache Iceberg. Os buckets de tabela automatizam as tarefas de gerenciamento de tabelas, como compactação, gerenciamento de snapshots e coleta de resíduos, para otimizar continuamente o desempenho das consultas e minimizar os custos. Se você está apenas começando ou tem milhares de tabelas em seu ambiente do Iceberg, os buckets de tabela simplificam os data lakes em qualquer escala. Para obter mais informações, consulte [Buckets de tabela](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

## Considerações e limitações
<a name="gdc-register-s3-table-consideration"></a>
+ Todas as operações de DDL aceitas em tabelas do Iceberg são compatíveis com tabelas do S3, com as seguintes exceções:
  + Não há suporte a `ALTER TABLE RENAME`, `CREATE VIEW` e `ALTER DATABASE`.
  + `OPTIMIZE` e `VACUUM`: é possível gerenciar a compactação e o gerenciamento de snapshots no S3. Para obter mais informações, consulte a [documentação de manutenção de tabelas do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html).
+ Não há suporte a consultas de DDL em tabelas do S3 registradas como fontes de dados do Athena.
+ Não há suporte à reutilização de resultados de consultas.
+ Em grupos de trabalho com criptografia SSE-KMS, CSE-KMS ativada, não é possível executar operações de gravação como `INSERT`, `UPDATE`, `DELETE` ou `MERGE` em tabelas do S3.
+ Em grupos de trabalho com a opção S3 Requester Pays ativada, não é possível executar operações de DML em tabelas do S3.

## Consultar tabelas do S3 via Athena
<a name="gdc-register-s3-table-prereq-setup"></a>

**Conclua estas etapas obrigatórias antes de consultar tabelas do S3 no Athena**

1. Crie um bucket de tabela do S3. Para obter mais informações, consulte [Creating a table bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html) no Guia do usuário do Amazon Simple Storage Service. 

1. Certifique-se de que a integração de seus buckets com o AWS Glue Data Catalog seja bem-sucedida. Para obter as permissões necessárias e as etapas de configuração, consulte [Prerequisites for S3 Tables integration](https://docs.aws.amazon.com/glue/latest/dg/s3tables-catalog-prerequisites.html) (Pré-requisitos para a integração do Tabelas do S3) e [Enabling S3 Tables integration with Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/enable-s3-tables-catalog-integration.html) (Como habilitar a integração do Tabelas do S3 com o Glue Data Catalog) no Guia do desenvolvedor do AWS Glue.

1. Para a entidade principal que você usa para executar consultas com o Athena, conceda permissões no catálogo do Tabelas do S3 usando uma das seguintes abordagens: 

   **Opção 1: usar permissões do IAM**

   Ao usar o controle de acesso do IAM, sua entidade principal precisa de permissões tanto nos recursos AWS Glue Data Catalog quanto nos recursos do Tabelas do Amazon S3.

   A lista a seguir contém todas as permissões `s3tables` necessárias para realizar qualquer operação DDL ou DML compatível com suas Tabelas do S3 no Athena:
   + `s3tables:GetTableBucket`
   + `s3tables:GetNamespace`
   + `s3tables:GetTable`
   + `s3tables:GetTableData`
   + `s3tables:PutTableData`
   + `s3tables:ListNamespaces`
   + `s3tables:ListTables`
   + `s3tables:DeleteNamespace`
   + `s3tables:DeleteTable`
   + `s3tables:CreateNamespace`
   + `s3tables:CreateTable`
   + `s3tables:UpdateTableMetadataLocation`

   Aplique essas permissões a recursos específicos do bucket do Tabelas do S3 e do recursos do Tabelas do S3 ou use `*` como recurso para conceder acesso a todos os buckets e tabelas da sua conta. Essas permissões podem ser combinadas com a política gerenciada [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html) para permitir a funcionalidade completa.

   **Opção 2: usar as permissões do Lake Formation**

   Alternativamente, para habilitar o controle de acesso granular, você pode conceder permissões ao Lake Formation no catálogo do Tabelas do S3, seja por meio do console do Lake Formation ou AWS CLI. Isso requer o registro dos seus buckets da tabela do S3 como um local de dados do Lake Formation. Para obter mais informações, consulte [Criar um catálogo do Tabelas do Amazon S3 no AWS Glue Data Catalog](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) no Guia do Desenvolvedor do Lake Formation.

------
#### [ Console de gerenciamento da AWS ]

   1. Abra o console do AWS Lake Formation em [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) e acesse como administrador do data lake. Para obter mais informações sobre como criar um administrador de data lake, consulte [Create a data lake administrator](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin).

   1. No painel de navegação, escolha **Permissões de dados** e **Conceder**. 

   1. Na página **Conceder Permissões**, em **Entidades principais**, escolha a entidade principal que deseja usar para enviar uma consulta do Athena.

   1. Em **Tags do LF ou recursos de catálogo**, escolha **Recursos do catálogo de dados nomeados**.

   1. Em **Catálogos**, escolha um catálogo de dados do Glue que você criou com base na integração do seu bucket de tabela. Por exemplo, *<accoundID>*:s3tablescatalog/*amzn-s3-demo-bucket*.

   1. Em **Permissões de catálogo**, escolha **Super**.

   1. Selecione **Conceder**.

------
#### [ AWS CLI ]

   Execute o comando a seguir com o perfil de administrador do data lake do Lake Formation para conceder acesso à entidade principal que você usa para enviar consultas do Athena. 

   ```
   aws lakeformation grant-permissions \
   --region <region (Example,us-east-1)> \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "<user or role ARN (Example, arn:aws:iam::<Account ID>:role/ExampleRole>"
       },
       "Resource": {
           "Catalog": {
               "Id":"<Account ID>:s3tablescatalog/amzn-s3-demo-bucket"
           }
       },
       "Permissions": ["ALL"]
   }'
   ```

------

**Enviar consultas para tabelas do S3**

1. Envie uma consulta `CREATE DATABASE` do Athena com o usuário/perfil concedido acima. Neste exemplo, `s3tablescatalog` é o Catálogo de Dados do Glue principal criado com base na integração e ` s3tablescatalog/amzn-s3-demo-bucket` o Catálogo de Dados do Glue secundário criado para cada bucket de tabela do S3. Há duas maneiras de fazer a consulta.

------
#### [ Option 1 ]

   Especifique o Catálogo de Dados do Glue secundário (`s3tablescatalog/amzn-s3-demo-bucket`) diretamente do console ou AWS CLI.

   **Usar o Console de gerenciamento da AWS**

   1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

   1. No painel de navegação à esquerda, em **Nome da fonte de dados**, escolha **AwsDataCatalog**.

   1. Em **Catálogo**, escolha **s3tablescatalog/*amzn-s3-demo-bucket***.

   1. No editor de consultas, insira uma consulta, como `CREATE DATABASE test_namespace`.

   **Usar o AWS CLI**

   Execute o comando a seguir.

   ```
   aws athena start-query-execution \ 
   --query-string 'CREATE DATABASE `test_namespace`' \ 
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket"}' \
   --work-group "primary"
   ```

------
#### [ Option 2 ]

   Crie o catálogo de dados do Athena com base no Catálogo de Dados do Glue secundário no console do Athena e especifique-o como um catálogo na consulta. Para obter mais informações, consulte [Registrar catálogos de buckets de tabelas do S3 como fontes de dados do Athena](#gdc-register-s3-table-console-steps).

------

1. Com o banco de dados que você criou na etapa anterior, use `CREATE TABLE` para criar uma tabela. O exemplo a seguir cria uma tabela no banco de dados *`test_namespace`* que você criou anteriormente no catálogo `s3tablescatalog/amzn-s3-demo-bucket` do Glue.

------
#### [ Console de gerenciamento da AWS ]

   1. No painel de navegação à esquerda, em **Nome da fonte de dados**, escolha **AwsDataCatalog**.

   1. Em **Catálogo**, escolha **s3tablescatalog/*amzn-s3-demo-bucket***.

   1. Em **Banco de dados**, escolha **test\$1namespace**.

   1. No editor de consultas, execute a consulta a seguir.

      ```
      CREATE TABLE daily_sales (
              sale_date date,
              product_category
              string, sales_amount double)
      PARTITIONED BY (month(sale_date))
      TBLPROPERTIES ('table_type' = 'iceberg')
      ```

------
#### [ AWS CLI ]

   Execute o comando a seguir.

   ```
   aws athena start-query-execution \
   --query-string "CREATE TABLE daily_sales (
           sale_date date,
           product_category
           string, sales_amount double)
   PARTITIONED BY (month(sale_date))
   TBLPROPERTIES ('table_type' = 'iceberg')" \
   --query-execution-context '{"Catalog": "s3tablescatalog/amzn-s3-demo-bucket", "Database":"test_namespace"}' \
   --work-group "primary"
   ```

------

1. Insira dados na tabela que você criou na etapa anterior.

------
#### [ Console de gerenciamento da AWS ]

   1. No painel de navegação à esquerda, em **Nome da fonte de dados**, escolha **AwsDataCatalog**.

   1. Em **Catálogo**, escolha **s3tablescatalog/*amzn-s3-demo-bucket***.

   1. Em **Banco de dados**, escolha **test\$1namespace**.

   1. No editor de consultas, execute a consulta a seguir.

      ```
      INSERT INTO daily_sales
      VALUES 
          (DATE '2024-01-15', 'Laptop', 900.00),
          (DATE '2024-01-15', 'Monitor', 250.00),
          (DATE '2024-01-16', 'Laptop', 1350.00),
          (DATE '2024-02-01', 'Monitor', 300.00);
      ```

------
#### [ AWS CLI ]

   Execute o comando a seguir.

   ```
   aws athena start-query-execution \
   --query-string "INSERT INTO \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   VALUES 
   (DATE '2024-01-15', 'Laptop', 900.00),
   (DATE '2024-01-15', 'Monitor', 250.00),
   (DATE '2024-01-16', 'Laptop', 1350.00),
   (DATE '2024-02-01', 'Monitor', 300.00)"\ 
   --work-group "primary"
   ```

------

1. Após inserir os dados na tabela, você poderá consultá-los.

------
#### [ Console de gerenciamento da AWS ]

   1. No painel de navegação à esquerda, em **Nome da fonte de dados**, escolha **AwsDataCatalog**.

   1. Em **Catálogo**, escolha **s3tablescatalog/*amzn-s3-demo-bucket***.

   1. Em **Banco de dados**, escolha **test\$1namespace**.

   1. No editor de consultas, execute a consulta a seguir.

      ```
      SELECT
          product_category,
          COUNT(*) AS units_sold,
          SUM(sales_amount) AS total_revenue,
          AVG(sales_amount) AS average_price
      FROM
          daily_sales
      WHERE
          sale_date BETWEEN DATE '2024-02-01' 
                       AND DATE '2024-02-29'
      GROUP BY
          product_category
      ORDER BY
          total_revenue DESC
      ```

------
#### [ AWS CLI ]

   Execute o comando a seguir.

   ```
   aws athena start-query-execution \
   --query-string "SELECT product_category,
       COUNT(*) AS units_sold,
       SUM(sales_amount) AS total_revenue,
       AVG(sales_amount) AS average_price
   FROM \"s3tablescatalog/amzn-s3-demo-bucket\".test_namespace.daily_sales
   WHERE sale_date BETWEEN DATE '2024-02-01' AND DATE '2024-02-29'
   GROUP BY product_category
   ORDER BY total_revenue DESC"\
   --work-group "primary"
   ```

------

## Criar tabelas do S3 no Athena
<a name="gdc-create-s3-tables-athena"></a>

O Athena oferece suporte à criação de tabelas em namespaces de tabela do S3 existentes ou namespaces criados no Athena com instruções `CREATE DATABASE`. Para criar uma tabela do S3 via Athena, a sintaxe é a mesma de quando você [cria uma tabela do Iceberg](querying-iceberg-creating-tables.md), exceto que você não especifica o `LOCATION`, conforme mostrado no exemplo a seguir.

```
CREATE TABLE
[db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] )
[PARTITIONED BY (col_name | transform, ... )]
[TBLPROPERTIES ([, property_name=property_value] )]
```

Você também pode criar tabelas do S3 usando instruções CREATE TABLE AS SELECT (CTAS). Para obter mais informações, consulte [CTAS para tabelas do S3](#ctas-s3-tables).

## Registrar catálogos de buckets de tabelas do S3 como fontes de dados do Athena
<a name="gdc-register-s3-table-console-steps"></a>

Para registrar catálogos de buckets de tabelas do S3 com o console do Athena, execute as etapas a seguir.

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. No painel de navegação, escolha **Fontes de dados e catálogos**.

1. Na página **Fontes de dados e catálogos**, escolha **Criar fonte de dados**.

1. Em **Escolher uma fonte de dados**, escolha **Amazon S3 - AWS Glue Data Catalog**.

1. Na seção **AWS Glue Data Catalog**, em **Conta da fonte de dados**, escolha **AWS Glue Data Catalog nesta conta**.

1. Em **Criar uma tabela ou registrar um catálogo**, escolha **Registrar um novo catálogo do AWS Glue**.

1. Na seção **Detalhes da fonte de dados**, em **Nome da fonte de dados**, insira o nome que deseja usar para especificar a fonte de dados em suas consultas SQL ou use o nome padrão gerado.

1. Em **Catálogo**, escolha **Procurar** para pesquisar uma lista de catálogos do AWS Glue na mesma conta. Se você não encontrar nenhum catálogo existente, crie um no [console do AWS Glue](https://console.aws.amazon.com/glue/). 

1. Na caixa de diálogo **Procurar catálogos do AWS Glue**, selecione o catálogo que deseja usar e selecione **Escolher**.

1. (Opcional) Em **Tags**, adicione pares de chave/valor que queira associar à fonte de dados.

1. Escolha **Próximo**.

1. Na página **Revisar e criar**, verifique se as informações inseridas estão corretas e selecione **Criar fonte de dados**.

## CTAS para tabelas do S3
<a name="ctas-s3-tables"></a>

O Amazon Athena agora é compatível com operações CREATE TABLE AS SELECT (CTAS) para tabelas do S3. Esse atributo permite criar novas tabelas do S3 com base nos resultados de uma consulta SELECT. 

Ao criar uma consulta CTAS para uma tabela do S3, há algumas diferenças importantes em relação às tabelas padrão do Athena:
+ Você deve omitir a propriedade de localização porque as tabelas do S3 gerenciam automaticamente seus próprios locais de armazenamento.
+ A propriedade `table_type` assume o padrão `ICEBERG`, portanto, você não precisa especificá-la explicitamente na consulta.
+ Se você não especificar um formato, o sistema usará automaticamente `PARQUET` como formato padrão para os dados.
+ Todas as outras propriedades seguem a mesma sintaxe das tabelas normais do Iceberg.

Antes de criar o Tabelas do S3 usando CTAS, verifique se você tem as permissões necessárias configuradas no IAM ou no AWS Lake Formation. Especificamente, você precisa de permissões para criar tabelas no catálogo de tabelas do S3. Sem essas permissões, suas operações CTAS não terão sucesso.

**nota**  
Se a consulta CTAS não tiver sucesso, poderá ser necessário excluir a tabela usando a [API de tabelas do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-delete.html) antes de tentar executar a consulta novamente. Não é possível usar as instruções `DROP TABLE` do Athena para remover a tabela que foi parcialmente criada pela consulta. 

**Exemplo**

```
CREATE TABLE "s3tablescatalog/amzn-s3-demo-bucket"."namespace"."s3-table-name"
WITH (
    format = 'PARQUET'
)
AS SELECT *
FROM source_table;
```

# Consultar catálogos de dados do AWS Glue no Athena
<a name="gdc-register-query-the-data-source"></a>

Para consultar catálogos dos dados usando o Athena, siga um destes procedimentos.
+ Registre o catálogo como uma fonte de dados no Athena e use o nome da fonte de dados para consultar o catálogo. Nesse uso, as consultas a seguir são equivalentes.

  ```
  SELECT * FROM my_data_source.my_database.my_table
  ```
+ Se você estiver consultando um catálogo que não tenha sido registrado como uma fonte de dados do Athena, você poderá fornecer o caminho completo para o catálogo em suas consultas do `SELECT`, como no exemplo a seguir.

  ```
  SELECT * FROM "my_catalog/my_subcatalog".my_database.my_table
  ```
+ Você também poderá fazer isso via Console de gerenciamento da AWS.

  1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

  1. No editor de consultas, em **Fonte de dados**, escolha **AwsDataCatalog**.

  1. Em **Catálogo**, escolha o nome do catálogo que deseja usar.

  1. Em **Banco de dados**, escolha o banco de dados que contém a tabela que deseja consultar.

  1. Insira uma consulta como `SELECT * FROM my_table` e, em seguida, escolha **Executar**.

# Registrar um catálogo de dados de outra conta
<a name="data-sources-glue-cross-account"></a>

Você pode usar o recurso de catálogo do AWS Glue entre contas do Athena para registrar um catálogo do AWS Glue de outra conta sua. Depois de configurar as permissões do IAM necessárias para o AWS Glue e registrar o catálogo como um recurso `DataCatalog` no Athena, você poderá usar o Athena para executar consultas entre contas. Para obter informações sobre como configurar as permissões necessárias, consulte [Configurar o acesso entre contas aos catálogos de dados do AWS Glue](security-iam-cross-account-glue-catalog-access.md).

O procedimento a seguir mostra como usar o Athena para configurar um AWS Glue Data Catalog em uma conta da Amazon Web Services diferente da sua fonte de dados.

## Registrar via console
<a name="data-sources-glue-cross-account-console"></a>

1. Siga as etapas em [Configurar o acesso entre contas aos catálogos de dados do AWS Glue](security-iam-cross-account-glue-catalog-access.md) para garantir que você tenha permissões para consultar o catálogo de dados na outra conta.

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Se o painel de navegação do console não estiver visível, escolha o menu de expansão à esquerda.  
![\[Escolha o menu de expansão.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/nav-pane-expansion.png)

1. Escolha **Fontes de dados e catálogos**.

1. No canto superior direito do console, escolha **Create data source** (Criar fonte de dados).

1. Na página **Choose a data source** (Escolher uma fonte de dados), para **Data sources** (Fontes de dados), escolha **S3 - AWS Glue Data Catalog** e escolha **Next** (Próximo).

1. Na página **Enter data source details** (Inserir os detalhes da fonte de dados), na seção **AWS Glue Data Catalog**, para **Choose an AWS Glue Data Catalog** (Escolher um AWS Glue Data Catalog), escolha **AWS Glue Data Catalog in another account** (AWS Glue Data Catalog em outra conta).

1. Em **Data source details** (Detalhes da origemdos dados), forneça as seguintes informações:
   + **Data source name** (Nome da origem dos dados): insira o nome que você deseja usar em suas consultas SQL para fazer referência ao catálogo de dados na outra conta.
   + **Description** (Descrição): insira uma descrição do catálogo de dados na outra conta (opcional).
   + **Catalog ID** (ID do catálogo): insira o ID de 12 dígitos da conta da Amazon Web Services à qual o catálogo de dados pertence. O ID da conta da Amazon Web Services é o ID do catálogo.

1. (Opcional) Para **Tags**, adicione pares de chave-valor que você queira associar com a origem dos dados. Para obter mais informações sobre tags, consulte [Marcar recursos do Athena com tags](tags.md).

1. Escolha **Próximo**.

1. Na página **Review and create** (Revisar e criar), analise as informações fornecidas e selecione **Create data source** (Criar fonte de dados). A página **Data source details** (Detalhes da fonte de dados) lista os bancos de dados e etiquetas do catálogo de dados que você registrou.

1. Escolha **Fontes de dados e catálogos**. O catálogo de dados que você registrou está listado na coluna **Data source name** (Nome da fonte de dados).

1. Para visualizar ou editar as informações do catálogo de dados, escolha o catálogo e selecione **Actions** (Ações), **Edit** (Editar).

1. Para excluir o novo catálogo de dados, escolha o catálogo e selecione **Actions** (Ações) **Delete** (Excluir).

## Registrar usando operações da API
<a name="data-sources-glue-cross-account-api"></a>

1. O corpo da seguinte solicitação `CreateDataCatalog` registra um catálogo do AWS Glue para acesso entre contas:

   ```
   # Example CreateDataCatalog request to register a cross-account Glue catalog:
   {
       "Description": "Cross-account Glue catalog",
       "Name": "ownerCatalog",
       "Parameters": {"catalog-id" : "<catalogid>"  # Owner's account ID
       },
       "Type": "GLUE"
   }
   ```

1. O código de exemplo a seguir usa um cliente Java para criar o objeto `DataCatalog`.

   ```
   # Sample code to create the DataCatalog through Java client
   CreateDataCatalogRequest request = new CreateDataCatalogRequest()
       .withName("ownerCatalog")
       .withType(DataCatalogType.GLUE)
       .withParameters(ImmutableMap.of("catalog-id", "<catalogid>"));
   
   athenaClient.createDataCatalog(request);
   ```

   Após essas etapas, o mutuário deverá ver *`ownerCatalog`* ao chamar a operação de API [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html).

## Registrar via AWS CLI
<a name="data-sources-glue-cross-account-cli"></a>

Use o seguinte exemplo de comando da CLI para registrar um AWS Glue Data Catalog de outra conta

```
aws athena create-data-catalog \
  --name cross_account_catalog \
  --type GLUE \
  --description "Cross Account Catalog" \
  --parameters catalog-id=<catalogid>
```

Para saber mais, consulte [Consultar entre contas AWS Glue Data Catalog usando o Amazon Athena](https://aws.amazon.com/blogs/big-data/query-cross-account-aws-glue-data-catalogs-using-amazon-athena/) no *AWS Blog Big Data*.

# Controlar o acesso a catálogos de dados com políticas do IAM
<a name="datacatalogs-iam-policy"></a>

Para controlar o acesso a catálogos de dados, use as permissões do IAM no nível do recurso ou as políticas do IAM baseadas em identidade. 

O procedimento a seguir é específico ao Athena. 

Para obter informações específicas do IAM, acesse os links listados no fim desta seção. Para obter informações sobre políticas de catálogo de dados JSON de exemplo, consulte [Políticas de catálogo de dados de exemplo](datacatalogs-example-policies.md).

**Para usar o editor visual no console do IAM para criar uma política de catálogo de dados**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Policies (Políticas)** e **Create policy (Criar política)**.

1. Na guia **Editor visual**, selecione **Escolher um serviço**. Em seguida, escolha o Athena para adicionar à política.

1. Escolha **Select actions (Selecionar ações)** e defina as ações para adicionar à política. O editor visual mostra as ações disponíveis no Athena. Para obter mais informações, consulte [Ações, recursos e chaves de condição do Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) na *Referência de autorização do serviço*.

1. Escolha **Add actions (Adicionar ações)** para digitar uma ação específica ou use caracteres curinga (\$1) para especificar várias ações. 

   Por padrão, a política que você está criando permite as ações que você escolhe. Se você escolher uma ou mais ações compatíveis com as permissões no nível do recurso `datacatalog` no Athena, o editor listará o recurso `datacatalog`. 

1. Escolha **Recursos** para especificar os catálogos de dados específicos para sua política. Para obter políticas de catálogo de dados JSON de exemplo, consulte [Políticas de catálogo de dados de exemplo](datacatalogs-example-policies.md).

1. Especifique o recurso `datacatalog` da seguinte forma:

   ```
   arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>
   ```

1. Selecione **Review Policy (Revisar política)**, digite um **Name (Nome)** e uma **Description (Descrição)** (opcional) para a política que você está criando. Revise o resumo da política para ter certeza de que você concedeu as permissões que pretendia. 

1. Escolha **Criar política** para salvar sua nova política.

1. Anexe essa política baseada em identidade a um usuário, um grupo ou uma função e especifique os recursos do `datacatalog` que eles podem acessar.

Para obter mais informações, consulte os seguintes tópicos na *Referência de autorização do serviço* e no *Manual do usuário do IAM*:
+ [Ações, recursos e chaves de condição do Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html)
+ [Criar políticas com o editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor)
+ [Adicionar e remover políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
+ [Controlar o acesso aos recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources)

Para obter políticas de catálogo de dados JSON de exemplo, consulte [Políticas de catálogo de dados de exemplo](datacatalogs-example-policies.md).

Para obter informações sobre permissões do AWS Glue e permissões de crawler do AWS Glue, consulte [Configurar permissões do IAM para o AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html) e [Pré-requisitos do crawler](https://docs.aws.amazon.com/glue/latest/dg/crawler-prereqs.html) no *Guia do desenvolvedor do AWS Glue*.

Para obter uma lista completa de ações do Amazon Athena, consulte os nomes das ações de API na [Referência de API do Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Políticas de catálogo de dados de exemplo
<a name="datacatalogs-example-policies"></a>

Esta seção inclui exemplos de políticas que você pode usar para habilitar várias ações nos catálogos de dados.

Um catálogo de dados é um recurso do IAM gerenciado pelo Athena. Portanto, se sua política de catálogo de dados usa ações que usam o `datacatalog` como uma entrada, especifique o ARN do catálogo de dados da seguinte maneira:

```
"Resource": [arn:aws:athena:<region>:<user-account>:datacatalog/<datacatalog-name>]
```

O `<datacatalog-name>` é o nome do seu catálogo de dados. Por exemplo, para um catálogo de dados chamado `test_datacatalog`, especifique-o como um recurso da seguinte forma:

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:datacatalog/test_datacatalog"]
```

Para obter uma lista completa de ações do Amazon Athena, consulte os nomes das ações de API na [Referência de API do Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Para obter mais informações sobre as políticas do IAM, consulte [Criar políticas com o editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) no *Guia do usuário do IAM*. Para obter mais informações sobre como criar políticas do IAM para grupos de trabalho, consulte [Controlar o acesso a catálogos de dados com políticas do IAM](datacatalogs-iam-policy.md).
+ [Example Policy for Full Access to All Data Catalogs](#datacatalog-policy-full-access-to-all-data-catalogs)
+ [Example Policy for Full Access to a Specified Data Catalog](#datacatalog-policy-full-access-to-a-specified-catalog)
+ [Example Policy for Querying a Specified Data Catalog](#datacatalog-policy-querying-a-specified-data-catalog)
+ [Example Policy for Management Operations on a Specified Data Catalog](#datacatalog-policy-management-operations-on-a-specified-catalog)
+ [Example Policy for Listing Data Catalogs](#datacatalog-policy-listing-data-catalogs)
+ [Example Policy for Metadata Operations on Data Catalogs](#datacatalog-policy-metadata-operations)

**Example Exemplo de política para acesso total a todos os catálogos de dados**  
A seguinte política permite acesso total a todos os recursos do catálogo de dados que podem existir na conta. Recomendamos que você use essa política para os usuários da sua conta que devem administrar e gerenciar catálogos de dados para todos os outros usuários.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "athena:*"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

**Example Exemplo de política para acesso total a um catálogo de dados especificado**  
A seguinte política permite acesso total ao único recurso específico do catálogo de dados, denominado `datacatalogA`. Você pode usar essa política para os usuários com controle total sobre um determinado catálogo de dados.    
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:ListDataCatalogs", "athena:ListWorkGroups", "athena:GetDatabase", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:GetTableMetadata" ], "Resource":"*" }, { "Effect":"Allow",
   "Action":[ "athena:StartQueryExecution", "athena:GetQueryResults", "athena:DeleteNamedQuery",
   "athena:GetNamedQuery", "athena:ListQueryExecutions", "athena:StopQueryExecution",
   "athena:GetQueryResultsStream", "athena:ListNamedQueries", "athena:CreateNamedQuery",
   "athena:GetQueryExecution", "athena:BatchGetNamedQuery", "athena:BatchGetQueryExecution",
   "athena:DeleteWorkGroup", "athena:UpdateWorkGroup", "athena:GetWorkGroup",
   "athena:CreateWorkGroup" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:CreateDataCatalog", "athena:DeleteDataCatalog",
   "athena:GetDataCatalog", "athena:GetDatabase", "athena:GetTableMetadata", "athena:ListDatabases",
   "athena:ListTableMetadata", "athena:UpdateDataCatalog" ],
      "Resource":"arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   } ] }
```

**Example Exemplo de política para consulta em um catálogo de dados especificado**  
Na política a seguir, um usuário tem permissão para executar consultas no especificado `datacatalogA`. O usuário não tem permissão para executar tarefas de gerenciamento para o próprio catálogo de dados, como atualizá-lo ou excluí-lo.     
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement":[ { "Effect":"Allow", "Action":[
   "athena:StartQueryExecution" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:workgroup/*"
   ] }, { "Effect":"Allow", "Action":[ "athena:GetDataCatalog" ], "Resource":[
      "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
   ] } ] }
```

**Example Exemplo de política para operações de gerenciamento em um catálogo de dados especificado**  
Na política a seguir, o usuário tem permissão para criar, excluir, obter detalhes e atualizar um catálogo de dados `datacatalogA`.     
****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "athena:CreateDataCatalog", "athena:GetDataCatalog", "athena:DeleteDataCatalog",
    "athena:UpdateDataCatalog" ], "Resource": [
        "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
    ] } ] }
```

**Example Exemplo de política para listagem de catálogos de dados**  
A política a seguir permite que todos os usuários listem todos os catálogos de dados:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemplo de política para operações de metadados em catálogos de dados**  
A política a seguir permite operações de metadados em catálogos de dados:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetDatabase",
                "athena:GetTableMetadata",
                "athena:ListDatabases",
                "athena:ListTableMetadata"
            ],
            "Resource": "*"
        }
    ]
}
```

# Usar um formulário no console do Athena para adicionar uma tabela do AWS Glue
<a name="data-sources-glue-manual-table"></a>

O procedimento a seguir mostra como usar o console do Athena para adicionar uma tabela usando o formulário **Create Table From S3 bucket data** (Criar tabela a partir de bucket do S3).

**Como adicionar uma tabela e inserir informações de esquema usando um formulário**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. No editor de consultas, ao lado de **Tables and views** (Tabelas e visualizações), escolha **Create** (Criar) e, em seguida, escolha **S3 bucket data** (Dados do bucket do S3).

1. No formulário **Create Table From S3 bucket data** (Criar tabela a partir de dados de bucket do S3), em **Table name** (Nome da tabela), insira um nome para a tabela. Para obter informações sobre caracteres aceitáveis em nomes de bancos de dados, nomes de tabelas e nomes de colunas no Athena, consulte [Nomear bancos de dados, tabelas e colunas](tables-databases-columns-names.md).

1. Em **Database configuration** (Configuração do banco de dados), escolha um banco de dados existente ou crie um.

1. Em **Location of Input Data Set** (Local do conjunto de dados de entrada), especifique o caminho no Amazon S3 para a pasta que contém o conjunto de dados que você deseja processar. Não inclua um nome de arquivo no caminho. O Athena verifica todos os arquivos na pasta especificada. Se seus dados já estiverem particionados (p. ex., 

    s3://amzn-s3-demo-bucket/logs/year=2004/month=12/day=11/), insira somente o caminho base (por exemplo, s3://amzn-s3-demo-bucket/logs/).

1. Em **Data format** (Formato de dados), escolha entre as seguintes opções:
   + Em **Table type** (Tipo de tabela), escolha **Apache Hive**, **Apache Iceberg** ou **Delta Lake**. O Athena usa o tipo de tabela Apache Hive como padrão. Para obter informações sobre como consultar tabelas do Apache Iceberg no Athena, consulte [Consultar tabelas do Apache Iceberg](querying-iceberg.md). Para obter informações sobre como usar tabelas do Delta Lake no Athena, consulte [Consultar tabelas do Linux Foundation Delta Lake](delta-lake-tables.md).
   + Em **File format** (Formato de arquivo), escolha o formato de arquivo ou log dos seus dados.
     + Na opção **Text File with Custom Delimiters (Arquivo de texto com delimitadores personalizados)**, especifique um **Field terminator (Terminador de campo)** (ou seja, um delimitador de coluna). Opcionalmente, você pode especificar um **terminador de coleção** que marque o fim de um tipo de matriz ou um **terminador de coleção** que marque o fim de um tipo de dados de mapa.
   + **Biblioteca SerDe**: uma biblioteca SerDe (serializador-desserializador) analisa um formato de dados específico para que o Athena possa criar uma tabela para ele. Para a maioria dos formatos, uma biblioteca SerDe padrão é escolhida para você. Para os formatos a seguir, escolha uma biblioteca de acordo com seus requisitos:
     + **Apache Web Logs**: escolha a biblioteca **RegexSerDe** ou **GrokserDe**. Para RegexSerDe, forneça uma expressão regular na caixa **Regex definition** (Definição Regex). Para GrokserDe, forneça uma série de expressões regulares nomeadas para a propriedade SerDe `input.format`. As expressões regulares nomeadas são mais fáceis de ler e manter do que as expressões regulares. Para obter mais informações, consulte [Consulta de logs do Apache armazenados no Amazon S3](querying-apache-logs.md).
     + **CSV**: escolha **LazySimpleSerDe** se seus dados separados por vírgula não contiverem valores entre aspas duplas ou se usarem o formato `java.sql.Timestamp`. Escolha **OpenCSVSerDe** se os dados incluírem aspas ou usarem o formato numérico UNIX para `TIMESTAMP` (p. ex., `1564610311`). Para obter mais informações, consulte [Lazy Simple SerDe para arquivos CSV, TSV e com delimitação personalizada](lazy-simple-serde.md) e [Open CSV SerDe para processamento de CSV](csv-serde.md).
     + **JSON**: escolha a biblioteca **OpenX** ou **Hive** JSON SerDe. Os dois formatos esperam que cada documento JSON esteja em uma única linha de texto e que os campos não sejam separados por caracteres de nova linha. O OpenX SerDe oferece algumas propriedades adicionais. Para obter mais informações sobre essas propriedades, consulte [OpenX JSON SerDe](openx-json-serde.md). Para obter mais informações sobre o Hive SerDe, consulte [Hive JSON SerDe](hive-json-serde.md).

     Para obter mais informações sobre como usar as bibliotecas SerDe no Athena, consulte [Escolha de um SerDe para seus dados](supported-serdes.md).

1. Em **SerDe properties** (Propriedades de SerDe), adicione, edite ou remova propriedades e valores de acordo com a biblioteca SerDe que você estiver usando e seus requisitos.
   + Para adicionar uma propriedade SerDe, escolha **Add SerDe property** (Adicionar propriedade SerDe).
   + No campo **Name** (Nome), insira o nome da propriedade. 
   + No campo **Value** (Valor), insira um valor para a propriedade. 
   + Para remover uma propriedade SerDe, escolha **Remove** (Remover).

1. Em **Table properties** (Propriedades da tabela), escolha ou edite as propriedades da tabela de acordo com seus requisitos.
   + Em **Propriedades da tabela** (Compactação de gravação), escolha uma opção de compactação. A disponibilidade da opção de compactação de gravação e das opções de compactação disponíveis depende do formato dos dados. Para obter mais informações, consulte [Usar compactação no Athena](compression-formats.md).
   + Para **Encryption** (Criptografia), selecione **Encrypted data set** (Conjunto de dados criptografados) se os dados subjacentes estiverem criptografados no Amazon S3. Essa opção define a propriedade `has_encrypted_data` da tabela como verdadeira na instrução `CREATE TABLE`.

1. Em **Column details** (Detalhes da coluna), insira os nomes e os tipos de dados das colunas que você deseja adicionar à tabela.
   + Para adicionar mais colunas uma de cada vez, escolha **Add a column (Adicionar uma coluna)**.
   + Para adicionar rapidamente mais colunas, escolha **Bulk add columns (Adicionar colunas em massa)**. Na caixa de texto, insira uma lista separada por vírgulas de colunas no formato *column\$1name* *data\$1type*, *column\$1name* *data\$1type*[, …] e escolha **Add** (Adicionar).

1. (Opcional) Em **Partition details** (Detalhes da partição), adicione um ou mais nomes de colunas e tipos de dados. O particionamento mantém os dados relacionados juntos com base nos valores das colunas e pode ajudar a reduzir a quantidade de dados digitalizados por consulta. Para obter informações sobre particionamento, consulte [Particionar dados](partitions.md).

1. (Opcional) Em **Bucketing**, você pode especificar uma ou mais colunas que tenham linhas que você deseja agrupar e, em seguida, colocar essas linhas em vários buckets. Isso permite que você consulte somente o bucket que deseja ler quando o valor das colunas agrupadas for especificado.
   + Para **Buckets**, selecione uma ou mais colunas que tenham um grande número de valores exclusivos (p. ex., uma chave primária) e que sejam frequentemente usadas para filtrar os dados em suas consultas.
   + Em **Number of buckets** (Número de buckets), insira um número que permita que os arquivos tenham o tamanho ideal. Para obter mais informações, consulte [Top 10 Performance Tuning Tips for Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) (As 10 melhores dicas para ajustar o desempenho do Amazon Athena) no AWS Big Data Blog.
   + Para especificar suas colunas agrupadas, a instrução `CREATE TABLE` usará a seguinte sintaxe:

     ```
     CLUSTERED BY (bucketed_columns) INTO number_of_buckets BUCKETS
     ```
**nota**  
A opção **Bucketing** (Agregar em bucket) não está disponível para o tipo de tabela do **Iceberg**.

1. A caixa **Preview table query** (Previsualizar consulta da tabela) mostra a instrução `CREATE TABLE` gerada pelas informações inseridas no formulário. A instrução de visualização não pode ser editada diretamente. Para alterar a instrução, modifique os campos no formulário acima da visualização ou [crie a instrução diretamente](creating-tables-how-to.md#to-create-a-table-using-hive-ddl) no editor de consultas em vez de usar o formulário. 

1. Selecione **Create table** (Criar tabela) para executar a instrução gerada no editor de consultas e criar a tabela.

# Usar um crawler para adicionar uma tabela
<a name="schema-crawlers"></a>

Os crawlers do AWS Glue ajudam a descobrir o esquema para conjuntos de dados e registrá-los no catálogo de dados do AWS Glue. Os crawlers passam pelos dados e determinam o esquema. Além disso, o crawler pode detectar e registrar partições. Para obter mais informações, consulte [Definir crawlers](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) no *Guia do desenvolvedor do AWS Glue*. Tabelas de dados que foram rastreadas com sucesso podem ser consultadas no Athena.

**nota**  
O Athena não reconhece os [padrões de exclusão](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude) que você especifica para um crawler do AWS Glue. Por exemplo, se você tem um bucket do Amazon S3 com os arquivos `.csv` e `.json` e exclui os arquivos `.json` do crawler, o Athena consulta os dois grupos de arquivos. Para evitar isso, coloque os arquivos que você deseja excluir em um local diferente. 

## Criar um crawler do AWS Glue
<a name="data-sources-glue-crawler-setup"></a>

É possível criar um crawler começando no console do Athena e usando o console do AWS Glue de forma integrada. Ao criar o crawler, você especifica um local de dados no Amazon S3 para crawling.

**Para criar um crawler no AWS Glue começando do console do Athena**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. No editor de consultas, ao lado de **Tabelas e visualizações**, escolha **Criar** e, em seguida, selecione **Crawler do AWS Glue**. 

1. No console do **AWS Glue**, na página **Add crawler (Adicionar crawler)**, siga as etapas para criar um crawler. Para obter mais informações, consulte [Usar crawlers do AWS Glue](#schema-crawlers) neste guia e [Como preencher o AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-catalog-methods.html) no *Guia do desenvolvedor do AWS Glue*.

**nota**  
O Athena não reconhece os [padrões de exclusão](https://docs.aws.amazon.com/glue/latest/dg/define-crawler.html#crawler-data-stores-exclude) que você especifica para um crawler do AWS Glue. Por exemplo, se você tem um bucket do Amazon S3 com os arquivos `.csv` e `.json` e exclui os arquivos `.json` do crawler, o Athena consulta os dois grupos de arquivos. Para evitar isso, coloque os arquivos que você deseja excluir em um local diferente.

Depois de um rastreamento, o crawler do AWS Glue atribui automaticamente determinados metadados para ajudar a torná-los compatíveis com outras tecnologias externas, como Apache Hive, Presto e Spark. Às vezes, o crawler pode atribuir incorretamente propriedades de metadados. Corrija manualmente as propriedades no AWS Glue antes de consultar a tabela usando o Athena. Para obter mais informações, consulte [Exibir e editar detalhes da tabela](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) no *Guia do desenvolvedor do AWS Glue*.

O AWS Glue pode atribuir indevidamente metadados quando um arquivo CSV tem aspas em torno de cada campo de dados, processando a propriedade `serializationLib` incorretamente. Para obter mais informações, consulte [Lidar com dados CSV entre aspas](schema-csv.md#schema-csv-quotes).

# Usar várias fontes de dados com crawlers
<a name="schema-crawlers-data-sources"></a>

Quando um crawler do AWS Glue verifica o Amazon S3 e detecta vários diretórios, ele usa uma heurística para determinar onde a raiz de uma tabela está na estrutura do diretório e quais diretórios são partições da tabela. Em alguns casos, quando o esquema detectado em dois ou mais diretórios é semelhante, o crawler pode tratá-lo como partições, em vez de tabelas à parte. Uma maneira de ajudar o crawler a descobrir tabelas individuais é adicionar o diretório raiz de cada tabela como um armazenamento de dados para o crawler.

As seguintes partições no Amazon S3 são um exemplo:

```
s3://amzn-s3-demo-bucket/folder1/table1/partition1/file.txt
s3://amzn-s3-demo-bucket/folder1/table1/partition2/file.txt
s3://amzn-s3-demo-bucket/folder1/table1/partition3/file.txt
s3://amzn-s3-demo-bucket/folder1/table2/partition4/file.txt
s3://amzn-s3-demo-bucket/folder1/table2/partition5/file.txt
```

Se o esquema de `table1` e `table2` for semelhante, e uma única origem dos dados for definida como `s3://amzn-s3-demo-bucket/folder1/` no AWS Glue, o crawler poderá criar uma única tabela com duas colunas de partição: uma com `table1` e `table2` e outra com `partition1` a `partition5`.

Para fazer com que o crawler do AWS Glue crie duas tabelas separadas, defina o crawler para ter duas fontes de dados, `s3://amzn-s3-demo-bucket/folder1/table1/` e `s3://amzn-s3-demo-bucket/folder1/table2`, conforme mostrado no procedimento a seguir.

**Para adicionar um armazenamento de dados do S3 a um crawler existente no AWS Glue**

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. No painel de navegação, escolha **Rastreadores**.

1. Escolha o link para o seu crawler e, em seguida, escolha **Edit** (Editar). 

1. Em **Step 2: Choose data sources and classifiers** (Etapa 2: Escolher fontes de dados e classificadores), escolha **Edit**(Editar). 

1. Em **Fontes de dados e catálogos**, escolha **Adicionar uma fonte de dados**.

1. Na caixa de diálogo **Add data source** (Adicionar fonte de dados), em **S3 path** (Caminho do S3), escolha **Browse** (Procurar). 

1. Escolha o bucket que deseja usar e, em seguida, escolha **Choose** (Escolher).

   A fonte de dados que você adicionou aparece na lista **Data sources** (Fontes de dados).

1. Escolha **Próximo**.

1. Na página **Configure security settings** (Definir configurações de segurança), crie ou escolha um perfil do IAM para o crawler e, em seguida, escolha **Next** (Próximo).

1. Certifique-se de que o caminho do S3 termine em uma barra à direita e, em seguida, escolha **Add an S3 data source** (Adicionar uma fonte de dados do S3).

1. Na página **Set output and scheduling** (Definir saída e programação), em **Output configuration** (Configuração da saída), escolha o banco de dados de destino.

1. Escolha **Avançar**.

1. Na página **Review and update** (Revisar e atualizar), revise as escolhas feitas. Para editar uma etapa, escolha **Edit** (Editar).

1.  Selecione **Atualizar**.

# Agendar um crawler para manter a sincronização entre o AWS Glue Data Catalog e o Amazon S3
<a name="schema-crawlers-schedule"></a>

AWS GlueOs crawlers do podem ser configurados para serem executados em uma programação ou sob demanda. Para obter mais informações, consulte [Programações baseadas em hora para trabalhos e crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html) no *Guia do desenvolvedor do AWS Glue*.

Se você tiver dados que chegam a uma tabela particionada em um horário fixo, poderá configurar um crawler do AWS Glue para ser executado de acordo com a programação para detectar e atualizar as partições da tabela. Isso pode eliminar a necessidade de executar um comando `MSCK REPAIR` possivelmente longo e caro ou executar manualmente um comando `ALTER TABLE ADD PARTITION`. Para obter mais informações, consulte [Partições de tabela](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html#tables-partition) no *Guia do desenvolvedor do AWS Glue*.

# Otimizar consultas com indexação e filtragem de partições do AWS Glue
<a name="glue-best-practices-partition-index"></a>

Quando o Athena consulta tabelas particionadas, ele recupera e filtra as partições de tabela disponíveis para o subconjunto relevante para a sua consulta. À medida que novos dados e partições são adicionados, mais tempo torna-se necessário para processar as partições, e o runtime da consulta pode aumentar. Se você tiver uma tabela com um grande número de partições que aumenta ao longo do tempo, considere o uso de indexação e filtragem de partições do AWS Glue. A indexação de partições permite que o Athena otimize o processamento das partições e melhore a performance das consulta em tabelas altamente particionadas. A configuração da filtragem de partições nas propriedades de uma tabela é um processo de duas etapas:

1. Criar um índice de partição em AWS Glue.

1. Habilitar a filtragem de partições para a tabela.

## Criar um índice de partição
<a name="glue-best-practices-partition-index-creating"></a>

Para conhecer as etapas da criação de um índice de partição no AWS Glue, consulte [Trabalhar com índices de partição](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html) no Guia do desenvolvedor do AWS Glue. Para saber quais são as limitações dos índices de partição no AWS Glue, consulte a seção [Sobre índices de partição](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html#partition-index-1) na mesma página.

## Habilitar filtragem de partição
<a name="glue-best-practices-partition-filtering-enabling"></a>

Para habilitar a filtragem de partição para a tabela, você deve definir uma nova propriedade de tabela no AWS Glue. Para conhecer as etapas da definição de propriedades de tabela no AWS Glue, consulte a página [Configurar a projeção de partições](https://docs.aws.amazon.com/athena/latest/ug/partition-projection-setting-up.html). Quando você editar os detalhes da tabela no AWS Glue, adicione o seguinte par de chave-valor à seção **Table properties** (Propriedades de tabela):
+ Para **Key** (Chave), adicione `partition_filtering.enabled`
+ Para **Value** (Valor), adicione `true`

Você pode desabilitar a filtragem de partições nessa tabela a qualquer momento definindo o valor `partition_filtering.enabled` como `false`.

Depois de concluir as etapas acima, você pode retornar ao console do Athena para consultar os dados.

Para mais informações sobre usar a indexação e filtragem de partição, consulte [Melhorar o desempenho de consultas Amazon Athena usando índices de partição AWS Glue Data Catalog](https://aws.amazon.com/blogs/big-data/improve-amazon-athena-query-performance-using-aws-glue-data-catalog-partition-indexes/) no *Blog de Big Data da AWS*.

# Usar a AWS CLI para recriar um banco de dados do AWS Glue e suas tabelas
<a name="glue-recreate-db-and-tables-cli"></a>

Não é possível renomear um banco de dados do AWS Glue diretamente, mas você pode copiar a definição, modificar a definição e usá-la para recriar o banco de dados com um nome diferente. Da mesma forma, é possível copiar as definições das tabelas do banco de dados antigo, modificar as definições e usar as definições modificadas para recriar as tabelas no novo banco de dados.

**nota**  
 O método apresentado não copia o particionamento da tabela. 

O procedimento a seguir para o Windows pressupõe que a AWS CLI esteja configurada para saída JSON. Para alterar o formato de saída padrão na AWS CLI, execute `aws configure`.

**Para copiar um banco de dados do AWS Glue usando a AWS CLI**

1. Em um prompt de comando, execute o comando da AWS CLI a seguir para recuperar a definição do banco de dados do AWS Glue que você deseja copiar.

   ```
   aws glue get-database --name database_name
   ```

   Para obter mais informações sobre o comando `get-database`, consulte [get-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-database.html).

1. Salve a saída JSON em um arquivo com o nome do novo banco de dados (por exemplo, `new_database_name.json`) na área de trabalho.

1. Abra o arquivo `new_database_name.json` em um editor de textos.

1. No arquivo JSON, execute as seguintes etapas:

   1. Remova a entrada externa `{ "Database":` e a chave de fechamento correspondente `}` no final do arquivo.

   1. Altere a entrada `Name` para o nome do novo banco de dados.

   1. Remova o campo `CatalogId`.

1. Salve o arquivo.

1. Em um prompt de comando, execute o comando da AWS CLI a seguir para usar o arquivo de definição de banco de dados modificado para criar o banco de dados com o novo nome.

   ```
   aws glue create-database --database-input "file://~/Desktop\new_database_name.json"
   ```

   Para obter mais informações sobre o comando `create-database`, consulte [create-database](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-database.html). Para obter informações sobre como usar parâmetros da AWS CLI em um arquivo, consulte [Carregar os parâmetros da AWS CLI de um arquivo](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html) no *Guia do usuário da AWS Command Line Interface*.

1. Para verificar se o novo banco de dados foi criado no AWS Glue, execute o seguinte comando:

   ```
   aws glue get-database --name new_database_name
   ```

Agora você está pronto para obter a definição de uma tabela que deseja copiar para o novo banco de dados, modificar a definição e usar a definição modificada para recriar a tabela no novo banco de dados. Esse procedimento não altera o nome da tabela.

**Para copiar uma tabela do AWS Glue usando a AWS CLI**

1. Em um prompt de comando, execute o seguinte comando da AWS CLI.

   ```
   aws glue get-table --database-name database_name --name table_name
   ```

   Para obter mais informações sobre o comando `get-table`, consulte [get-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-table.html).

1. Salve a saída JSON em um arquivo com o nome da tabela (por exemplo, *table\$1name*.json) na área de trabalho do Windows.

1. Abra o arquivo em um editor de textos.

1. No arquivo JSON, remova a entrada externa `{"Table": ` e a chave de fechamento correspondente `}` no final do arquivo.

1. No arquivo JSON, remova as seguintes entradas e os respectivos valores:
   + `DatabaseName`: esta entrada não é necessária porque o comando `create-table` da CLI usa o parâmetro `--database-name`.
   + `CreateTime`
   + `UpdateTime`
   + `CreatedBy`
   + `IsRegisteredWithLakeFormation`
   + `CatalogId`
   + `VersionId`

1. Salve o arquivo de definição da tabela.

1. Em um prompt de comando, execute o seguinte comando da AWS CLI para recriar a tabela no novo banco de dados:

   ```
   aws glue create-table --database-name new_database_name --table-input "file://~/Desktop\table_name.json"     
   ```

   Para obter mais informações sobre o comando `create-table`, consulte [create-table](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-table.html).

   A tabela agora aparece no novo banco de dados no AWS Glue e pode ser consultada no Athena.

1. Repita as etapas para copiar cada tabela adicional para o novo banco de dados no AWS Glue.

# Criação de tabelas para trabalhos de ETL
<a name="schema-classifier"></a>

É possível usar o Athena para criar tabelas que o AWS Glue possa usar para trabalhos de ETL. Os trabalhos do AWS Glue usam operações de ETL. Um trabalho do AWS Glue executa um script que extrai dados de fontes, transforma os dados e os carrega em destinos. Para obter mais informações, consulte [Criação de trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) no *Guia do desenvolvedor do AWS Glue*.

## Criar tabelas no Athena para trabalhos ETL do AWS Glue
<a name="schema-etl-tables"></a>

As tabelas que você cria no Athena devem ter uma propriedade de tabela adicionada chamada `classification`, que identifica o formato dos dados. Isso permite que o AWS Glue use as tabelas para trabalhos de ETL. Os valores de classificação podem ser `avro`, `csv`, `json`, `orc`, `parquet` ou `xml`. Veja abaixo um exemplo da instrução `CREATE TABLE` no Athena:

```
CREATE EXTERNAL TABLE sampleTable (
  column1 INT,
  column2 INT
  ) STORED AS PARQUET
  TBLPROPERTIES (
  'classification'='parquet')
```

Se a propriedade da tabela `classification` não tiver sido adicionada quando a tabela foi criada, a propriedade poderá ser adicionada com o console do AWS Glue.

**Para adicionar a propriedade de classificação da tabela usando o console do AWS Glue**

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. No painel de navegação do console, escolha **Tables** (Tabelas).

1. Escolha o link da tabela que deseja editar e, em seguida, escolha **Actions** (Ações) e **Edit table** (Editar tabela).

1. Role para baixo até a seção **Table properties** (Propriedades da tabela).

1. Escolha **Adicionar**.

1. Em **Chave**, digite **classification**.

1. Em **Value** (Valor), insira um tipo de dado (por exemplo, **json**).

1. Escolha **Salvar**.

   Na seção **Table details** (Detalhes da tabela), o tipo de dado que você inseriu aparece no campo **Classification** (Classificação) da tabela.

Para obter mais informações, consulte [Trabalhar com tabelas](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) no *Guia do desenvolvedor do AWS Glue*.

## Usar trabalhos de ETL para otimizar a performance da consulta
<a name="schema-etl-performance"></a>

AWS GlueOs trabalhos do podem ajudar a transformar os dados em um formato que otimiza a performance das consultas no Athena. Os formatos de dados têm um grande impacto na performance e nos custos das consultas no Athena.

O AWS Glue permite a gravação nos formatos de dados Parquet e ORC. Você pode usar esse recurso para transformar seus dados para uso no Athena. Para obter mais informações sobre o uso de Parquet e ORC e outras maneiras de melhorar o desempenho no Athena, leia [Top 10 performance tuning tips for Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).

**nota**  
Para reduzir as chances de o Athena não conseguir ler os tipos de dados `SMALLINT` e `TINYINT` produzidos por um trabalho de ETL do AWS Glue, converta `SMALLINT` e `TINYINT` em `INT` ao criar um trabalho de ETL que converte dados para ORC.

## Automatizar trabalhos do AWS Glue para ETL
<a name="schema-etl-automate"></a>

Você pode configurar trabalhos de ETL do AWS Glue para serem executados automaticamente com base em gatilhos. Esse recurso é ideal quando há dados de fora da AWS sendo enviados para um bucket do Amazon S3 em um formato inadequado para consultas no Athena. Para obter mais informações, consulte [Iniciar trabalhos do AWS Glue usando gatilhos](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) no *Guia do desenvolvedor do AWS Glue*.

# Trabalhar com dados CSV no AWS Glue
<a name="schema-csv"></a>

Esta página descreve como usar o AWS Glue para criar um esquema usando arquivos CSV com valores de dados entre aspas de cada coluna ou de arquivos CSV que incluem valores de cabeçalho.

## Lidar com dados CSV entre aspas
<a name="schema-csv-quotes"></a>

Imagine que você tenha um arquivo CSV com campos de dados entre aspas duplas, como no seguinte exemplo.

```
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
```

Para executar uma consulta no Athena em uma tabela criada com base em um arquivo CSV que tenha valores entre aspas, você deve modificar as propriedades da tabela no AWS Glue para usar o OpenCSVSerDe. Para obter mais informações sobre o OpenCSV SerDe, consulte [Open CSV SerDe para processamento de CSV](csv-serde.md).

**Para editar as propriedades da tabela no console do AWS Glue**

1. No painel de navegação do console do AWS Glue, escolha **Tables**.

1. Escolha o link da tabela que deseja editar e, em seguida, escolha **Actions** (Ações) e **Edit table** (Editar tabela).

1. Na página **Edit table** (Editar tabela), faça as seguintes alterações:
   + Em **Serialization lib** (Biblioteca de serialização), insira `org.apache.hadoop.hive.serde2.OpenCSVSerde`.
   + Em **Serde parameters** (Parâmetros do Serde), insira os seguintes valores para as chaves `escapeChar`, `quoteChar` e `separatorChar`: 
     + Em `escapeChar`, insira uma barra invertida (**\$1**).
     + Em `quoteChar`, insira aspas duplas (**"**).
     + Em `separatorChar`, insira uma vírgula (**,**).

1. Escolha **Salvar**.

Para obter mais informações, consulte [Exibir e editar detalhes da tabela](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) no *Guia do desenvolvedor do AWS Glue*.

Você também pode atualizar as propriedades da tabela AWS Glue programaticamente. Use a operação da API AWS Glue [UpdateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateTable.html) ou o comando da AWS CLI [update-table](https://docs.aws.amazon.com/cli/latest/reference/glue/update-table.html) para modificar o bloco `SerDeInfo` na definição da tabela, conforme mostrado no exemplo de JSON a seguir.

```
"SerDeInfo": {
   "name": "",
   "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
   "parameters": {
      "separatorChar": ","
      "quoteChar": "\""
      "escapeChar": "\\"
      }
},
```

## Lidar com arquivos CSV com cabeçalhos
<a name="schema-csv-headers"></a>

Quando você define uma tabela no Athena com uma instrução `CREATE TABLE`, pode usar a propriedade de tabela `skip.header.line.count` para ignorar os cabeçalhos nos dados CSV, conforme mostrado no exemplo a seguir.

```
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder/';
TBLPROPERTIES ("skip.header.line.count"="1")
```

Se preferir, remova os cabeçalhos CSV com antecedência para que as informações do cabeçalho não sejam incluídas nos resultados da consulta do Athena. Uma maneira de fazer isso é usar os trabalhos do AWS Glue, que excutam o trabalho de Extract, Transform, and Load (ETL - Extração, transformação e carga). Você pode escrever scripts no AWS Glue usando uma linguagem que é uma extensão do dialeto PySpark Python. Para obter mais informações, consulte [Criação de trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) no *Guia do desenvolvedor do AWS Glue*.

O exemplo a seguir mostra uma função em um script do AWS Glue que escreve um quadro dinâmico usando `from_options` e define a opção de formato `writeHeader` como falsa, o que remove as informações do cabeçalho:

```
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")
```

# Trabalhar com dados geoespaciais no AWS Glue
<a name="schema-geospatial"></a>

AWS GlueO não oferece suporte nativo a Well-known Text (WKT – Texto bem conhecido), Well-Known Binary (WKB – Binário bem conhecido) ou outros tipos de dados PostGIS. O classificador do AWS Glue analisa dados geoespaciais e os classifica usando tipos de dados compatíveis para o formato, como `varchar` para CSV. Assim como ocorre com outras tabelas do AWS Glue, pode ser necessário atualizar as propriedades das tabelas criadas a partir de dados geoespaciais para permitir que o Athena analise esses tipos de dados no estado em que se encontram. Para obter mais informações, consulte [Usar um crawler para adicionar uma tabela](schema-crawlers.md) e [Trabalhar com dados CSV no AWS Glue](schema-csv.md). O Athena pode não ser capaz de analisar alguns tipos de dados geoespaciais em tabelas do AWS Glue no estado em que se encontram. Para obter mais informações sobre como trabalhar com dados geoespaciais no Athena, consulte [Consultar dados geoespaciais](querying-geospatial-data.md).