

# Consultar tabelas do Linux Foundation Delta Lake
<a name="delta-lake-tables"></a>

O Linux Foundation [Delta Lake](https://delta.io/) é um formato de tabela para análise de big data. É possível usar o Amazon Athena para ler tabelas Delta Lake armazenadas no Amazon S3 de forma direta, sem a necessidade de gerar arquivos de manifesto ou executar a instrução `MSCK REPAIR`.

O formato Delta Lake armazena os valores mínimo e máximo de cada arquivo de dados por coluna. A implementação do Athena usa essas informações para habilitar o salto de arquivos em predicados com a finalidade de eliminar arquivos indesejados da consideração.

## Considerações e limitações
<a name="delta-lake-tables-considerations-and-limitations"></a>

O suporte para o Delta Lake no Athena tem as limitações e considerações a seguir:
+ **Somente tabelas com catálogo do AWS Glue**: o suporte nativo do Delta Lake é compatível somente por meio de tabelas registradas no AWS Glue. Se você tiver uma tabela Delta Lake registrada em outro metastore, ainda poderá mantê-la e tratá-la como metastore principal. Como os metadados do Delta Lake são armazenados no sistema de arquivos (por exemplo, no Amazon S3) e não no metastore, o Athena requer somente a propriedade “location” no AWS Glue para ler as tabelas Delta Lake.
+ **Somente versão 3 do mecanismo**: as consultas do Delta Lake tem suporte somente na versão 3 do mecanismo do Athena. Você deve garantir que o grupo de trabalho criado esteja configurado para usar a versão 3 do mecanismo do Athena.
+ **Nenhum suporte para passagem de tempo**: não há suporte para consultas que usam as funcionalidades de passagem de tempo do Delta Lake.
+ **Somente leitura**: não há suporte para gravar instruções DML, como `UPDATE`, `INSERT` ou `DELETE`.
+ **Compatibilidade com o Lake Formation**: a integração com o Lake Formation está disponível para tabelas do Delta Lake com seu esquema sincronizado com o AWS Glue. Para obter mais informações, consulte [Usar o AWS Lake Formation com o Amazon Athena](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html) e [Configurar permissões para uma tabela do Delta Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/set-up-delta-table.html) no *Guia de desenvolvedor do AWS Lake Formation*.
+ **Suporte DDL limitado**: as instruções DDL a seguir são compatíveis: `CREATE EXTERNAL TABLE`, `SHOW COLUMNS`, `SHOW TBLPROPERTIES`, `SHOW PARTITIONS`, `SHOW CREATE TABLE` e `DESCRIBE`. Para obter informações sobre como usar a instrução `CREATE EXTERNAL TABLE`, consulte a seção [Introdução às tabelas do Delta Lake](delta-lake-tables-getting-started.md).
+ **Não é possível ignorar os objetos do Amazon Glacier**: se os objetos na tabela do Linux Foundation Delta Lake estiverem em uma classe de armazenamento do Amazon Glacier, definir a propriedade da tabela `read_restored_glacier_objects` como `false` não surtirá efeito.

  Por exemplo, suponhamos que você emita o seguinte comando:

  ```
  ALTER TABLE {{table_name}} SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')
  ```

  Para tabelas do Iceberg e do Delta Lake, o comando gera o erro Chave de propriedade da tabela não compatível: read\_restored\_glacier\_objects. Para as tabelas do Hudi, o comando `ALTER TABLE` não gera erro, mas mesmo assim os objetos do Amazon Glacier não são ignorados. A execução de consultas `SELECT` após o comando `ALTER TABLE` continua a retornar todos os objetos.
+ **Tabelas criptografadas**: o Athena não é compatível com a leitura nativa de tabelas do Delta Lake criptografadas pelo CSE-KMS. Isso inclui as instruções SELECT e as instruções DDL.

### Versionamento do Delta Lake e do Athena
<a name="delta-lake-tables-versioning"></a>

O Athena não usa o [versionamento](https://docs.delta.io/latest/releases.html) listado na documentação do Delta Lake. Para determinar se as tabelas do Delta Lake são compatíveis com o Athena, considere estas duas características:
+ **Versão do leitor**: cada tabela do Delta Lake tem uma versão de leitor. Atualmente, a versão é um número de 1 a 3. Consultas que incluírem uma tabela com uma versão de leitor não compatível com o Athena apresentarão falhas.
+ **Características da tabela**: cada tabela do Delta Lake também pode declarar um conjunto de atributos de leitor/gravador. Como o Athena é compatível com o Delta Lake apenas para leitura, a compatibilidade do atributo de gravação de tabelas não se aplica. Porém, consultas em tabelas com atributos de leitura de tabela não compatíveis apresentarão falhas.

A tabela a seguir mostra as versões e os atributos do leitor de tabela do Delta Lake que são compatíveis com o Athena.


****  

| Tipo da consulta | Versões de leitor compatíveis | Atributos de leitor compatíveis | 
| --- | --- | --- | 
| DQL (instruções SELECT) | <= 3 | [Mapeamento de colunas](https://docs.delta.io/latest/delta-column-mapping.html), [timestampNtz](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#timestamp-without-timezone-timestampntz), [vetores de exclusão](https://docs.delta.io/latest/delta-deletion-vectors.html) | 
| DDL | <= 1 | Não aplicável. Os atributos de leitor só podem ser declarados em tabelas com um leitor versão 2 ou superior. | 
+ Para obter uma lista dos recursos de tabela do Delta Lake, consulte [Valid feature names in table features](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#valid-feature-names-in-table-features) no GitHub.com
+ Para ver uma lista dos atributos do Delta Lake por versão de protocolo, consulte [Features by protocol version](https://docs.delta.io/latest/versioning.html#features-by-protocol-version) no GitHub.com.

Para criar uma tabela do Delta Lake no Athena com uma versão de leitor acima de 1, consulte [Sincronizar metadados do Delta Lake](delta-lake-tables-syncing-metadata.md).

**Topics**
+ [Considerações e limitações](#delta-lake-tables-considerations-and-limitations)
+ [Tipos de dados de colunas com suporte](delta-lake-tables-supported-data-types-columns.md)
+ [Introdução às tabelas do Delta Lake](delta-lake-tables-getting-started.md)
+ [Consultar tabelas do Delta Lake com SQL](delta-lake-tables-querying.md)
+ [Sincronizar metadados do Delta Lake](delta-lake-tables-syncing-metadata.md)
+ [Recursos adicionais](delta-lake-tables-additional-resources.md)