

# Reutilização de resultados da consulta no Athena
<a name="reusing-query-results"></a>

Ao executar novamente uma consulta no Athena, é possível optar por reutilizar o último resultado de consulta armazenado, se desejar. Essa opção pode aumentar a performance e reduzir os custos, em termos de números, para os bytes verificados. A reutilização dos resultados da consulta é útil se, por exemplo, você souber que os resultados não serão alterados em um determinado período de tempo. É possível especificar um período máximo para a reutilização dos resultados da consulta. O Athena usará o resultado armazenado desde que não seja mais antigo do que o período especificado. Para obter mais informações, consulte [Reduzir custo e melhorar o desempenho de consultas com Amazon Athena](https://aws.amazon.com/blogs/big-data/reduce-cost-and-improve-query-performance-with-amazon-athena-query-result-reuse/) no *Blog de Big Data da AWS*.

## Atributos principais
<a name="reusing-query-results-key-features"></a>

Ao habilitar a reutilização de resultados para uma consulta, o Athena irá procurar uma execução anterior da consulta no mesmo grupo de trabalho. Se o Athena encontrar uma correspondência, ela ignorará a execução e retornará o resultado da consulta da execução anterior correspondente. É possível habilitar a reutilização dos resultados da consulta por consulta.

O Athena reutilizará o resultado da última consulta quando todas as seguintes condições forem verdadeiras:
+ As strings de consulta correspondem conforme determinado por Athena.
+ Os nomes do banco de dados e do catálogo correspondem.
+ O resultado anterior não expirou.
+ A configuração do resultado da consulta corresponde à configuração do resultado da consulta da execução anterior.
+ Você tem acesso a todas as tabelas referenciadas na consulta.
+ Você tem acesso ao local do arquivo S3 no qual o resultado anterior está armazenado.

Se alguma dessas condições não for atendida, o Athena executará a consulta sem usar os resultados armazenados em cache.

## Considerações e limitações
<a name="reusing-query-results-considerations-and-limitations"></a>

Ao usar o recurso de reutilização dos resultados da consulta, lembre-se dos seguintes pontos:
+ O Athena reutiliza os resultados da consulta somente dentro do mesmo grupo de trabalho.
+ O recurso de reutilização dos resultados da consulta respeita as configurações do grupo de trabalho. Se você substituir a configuração de resultado de uma consulta, o recurso será desativado.
+ Somente consultas que produzem conjuntos de resultados no Amazon S3 são compatíveis. As instruções que não sejam `SELECT` e `EXECUTE` não são compatíveis.
+ Tabelas do Apache Hive, Apache Hudi, Apache Iceberg e Linux Foundation Delta Lake registradas com AWS Glue são suportados. Metastores do Hive externos não são compatíveis.
+ Não há suporte para as consultas que fazem referência a catálogos federados ou a um metastore Hive externo.
+ Não há suporte para a reutilização dos resultados da consulta para tabelas governadas do Lake Formation.
+ A reutilização do resultado da consulta não é compatível quando o local da origem da tabela no Amazon S3 é registrado como um local de dados no Lake Formation. 
+ Não há suporte para tabelas com permissões de linha e de coluna.
+ Tabelas com controle de acesso refinado (por exemplo, filtragem de colunas ou linhas) não são compatíveis.
+ Qualquer consulta que referencie uma tabela não compatível não está qualificada para reutilizar os resultados da consulta.
+ O Athena requer que você tenha permissões de leitura do Amazon S3 para que o arquivo de saída gerado anteriormente seja reutilizado.
+ O recurso de reutilização dos resultados da consulta assume que o conteúdo do resultado anterior não foi modificado. O Athena não verifica a integridade de um resultado anterior antes de usá-lo.
+ Se os resultados da consulta da execução anterior foram excluídos ou movidos para um local diferente no Amazon S3, a execução subsequente da mesma consulta não reutilizará os resultados da consulta anterior. 
+ Há a possibilidade de que resultados potencialmente obsoletos retornem. O Athena não verifica alterações nos dados de origem até que o período máximo de reutilização especificado seja atingido.
+ Se diversos resultados estiverem disponíveis para reutilização, o Athena usará o resultado mais recente.
+ Consultas que usam operadores ou funções não determinísticas como `rand()` ou `shuffle()` não usam resultados em cache. Por exemplo, `LIMIT` sem `ORDER BY` não é determinístico e não está armazenado em cache, mas `LIMIT` com `ORDER BY` é determinístico e está armazenado em cache.
+ Para usar o recurso de reutilização de resultados de consulta com o JDBC, a versão mínima necessária do driver é 2.0.34.1000. Para ODBC, a versão mínima necessária do driver é 1.1.19.1002. Para obter informações sobre download de drivers, consulte [Conectar ao Amazon Athena com drivers JDBC e ODBC](athena-bi-tools-jdbc-odbc.md).
+ Não há compatibilidade para reutilizar os resultados da consulta em consultas que usem mais de um catálogo de dados. 
+  Não há compatibilidade para reutilizar os resultados da consulta em consultas que incluam mais de 20 tabelas.
+ Para strings de consulta com menos de 100 KB, as diferenças nos comentários e no espaço em branco são ignoradas, e `INNER JOIN` e `JOIN` são tratados como equivalentes para fins de reutilização dos resultados. As strings de consulta maiores que 100 KB devem ser uma correspondência exata para reutilizar os resultados.
+ Um resultado de consulta será considerado expirado se for mais antigo que o período máximo especificado, ou mais antigo que o padrão de 60 minutos se um período máximo não tiver sido especificado. O período máximo para a reutilização dos resultados da consulta pode ser especificada em minutos, horas ou dias. O período máximo especificado é equivalente a sete dias, independentemente da unidade de tempo usada.
+ Os [resultados de consultas gerenciadas](https://docs.aws.amazon.com/athena/latest/ug/managed-results.html) não é compatível.

## Como reutilizar os resultados da consulta no console do Athena
<a name="reusing-query-results-athena-console"></a>

Para usar o recurso, habilite a opção **Reuse query results** (Reutilizar resultados da consulta) no editor de consultas do Athena.

![\[Habilite Reuse query results (Reutilizar resultados da consulta) no editor de consultas do Athena.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/reusing-query-results-1.png)


**Para configurar o recurso de reutilização dos resultados da consulta**

1. No editor de consultas do Athena, na opção **Reuse query results** (Reutilizar resultados da consulta), escolha o ícone de edição ao lado de **up to 60 minutes ago** (até 60 minutos atrás).

1. Na caixa de diálogo **Edit reuse time** (Editar tempo de reutilização), na caixa à direita, escolha uma unidade de tempo (minutos, horas ou dias).

1. Na caixa à esquerda, insira ou escolha o número de unidades de tempo que deseja especificar. O tempo máximo que é possível inserir é o equivalente a sete dias, independentemente da unidade de tempo escolhida.  
![\[Como configurar o tempo máximo para a reutilização dos resultados da consulta.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/reusing-query-results-2.png)

1. Escolha **Confirmar**.

   Uma barra de notificação confirmará sua alteração de configuração e a opção **Reuse query results** (Reutilizar resultados da consulta) exibirá a nova configuração.