

# Trabalhar com visualizações do Athena
<a name="views-console"></a>

As visualizações do Athena podem ser facilmente criadas, atualizadas e gerenciadas no console do Athena.

## Criar visualizações
<a name="creating-views"></a>

Você pode criar uma visualização no console do Athena usando um modelo ou executando uma consulta existente.

**Para usar um modelo para criar uma visualização**

1. No console do Athena, ao lado de **Tables and views** (Tabelas e visualizações), escolha **Create** (Criar) e, em seguida, escolha **Create view** (Criar visualização).  
![\[Criação de uma visualização.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/create-view.png)

   Essa ação coloca um modelo de visualização editável no editor de consultas. 

1. Edite o modelo de visualização de acordo com suas necessidades. Quando você digitar um nome para a visualização na instrução, lembre-se de que os nomes das visualizações não podem conter caracteres especiais além do sublinhado `(_)`. Consulte [Nomear bancos de dados, tabelas e colunas](tables-databases-columns-names.md). Evite usar [Escapar palavras-chave reservadas em consultas](reserved-words.md) para nomear visualizações. 

   Para obter mais informações sobre a criação de visualizações, consulte [CREATE VIEW e da CREATE PROTECTED MULTI DIALECT VIEW](create-view.md) e [Exemplos de visualizações do Athena](views-examples.md). 

1. Selecione **Run** (Executar) para criar a visualização. A visualização aparece na lista de visualizações no console do Athena.

**Para criar uma visualização a partir de uma consulta existente**

1. Use o editor de consultas do Athena para executar uma consulta existente.

1. Na janela do editor de consultas, escolha **Create** (Criar) e, em seguida, escolha **View from query** (Visualização a partir de consulta).  
![\[Selecione Create (Criar), View from query (Visualização a partir de consulta).\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/create-view-from-query.png)

1. Na caixa de diálogo **Create View** (Criar visualização), insira um nome para a visualização e, em seguida, escolha **Create** (Criar). Os nomes de visualizações não podem conter caracteres especiais, exceto sublinhado `(_)`. Consulte [Nomear bancos de dados, tabelas e colunas](tables-databases-columns-names.md). Evite usar [Escapar palavras-chave reservadas em consultas](reserved-words.md) para nomear visualizações.

   O Athena adiciona a visualização à lista de visualizações no console e exibe a instrução `CREATE VIEW` para a visualização no editor de consulta.

**Observações**
+ Se você excluir uma tabela em que outra tabela se baseia e, depois, tentar executar a visualização, o Athena exibirá uma mensagem de erro.
+ Você pode criar uma visualização aninhada, que fica acima de uma visualização existente. O Athena impede que você execute uma visualização repetida com referência a ela mesma.

# Exemplos de visualizações do Athena
<a name="views-examples"></a>

Para mostrar a sintaxe da consulta de exibição, use [SHOW CREATE VIEW](show-create-view.md).

**Example Exemplo 1**  
Considere as duas tabelas a seguir: uma tabela `employees` com duas colunas, `id` e `name` e uma tabela `salaries`com duas colunas, `id` e `salary`.   
Neste exemplo, criamos uma exibição chamada `name_salary` como uma consulta `SELECT` que obtém uma lista de IDs mapeados para salários a partir das tabelas `employees` e `salaries`:  

```
CREATE VIEW name_salary AS
SELECT
 employees.name, 
 salaries.salary 
FROM employees, salaries 
WHERE employees.id = salaries.id
```

**Example Exemplo 2**  
No exemplo a seguir, criamos uma exibição chamada `view1` que permite que você oculte a sintaxe de consulta mais complexa.   
Essa exibição é executada sobre duas tabelas, `table1` e `table2`, em que cada tabela é uma consulta `SELECT` diferente. A visualização seleciona as colunas de `table1` e combina os resultados com `table2`. A junção é baseada na coluna `a` presente em ambas as tabelas.  

```
CREATE VIEW view1 AS
WITH
  table1 AS (
         SELECT a, 
         MAX(b) AS the_max 
         FROM x 
         GROUP BY a
         ),
  table2 AS (
         SELECT a, 
         AVG(d) AS the_avg 
         FROM y 
         GROUP BY a)
SELECT table1.a, table1.the_max, table2.the_avg
FROM table1
JOIN table2 
ON table1.a = table2.a;
```

Para obter informações sobre consultar visualizações federadas, consulte [Consultar visualizações federadas](running-federated-queries.md#running-federated-queries-federated-views).

# Gerenciar visualizações do Athena
<a name="views-managing"></a>

No console do Athena, é possível:
+ Localizar todas as visualizações no painel esquerdo, onde as tabelas estão listadas.
+ Filtre as exibições.
+ Visualize uma exibição, mostre suas propriedades, edite-a ou exclua-a.

**Para mostrar as ações de uma exibição**

Uma exibição é mostrada no console somente se você já a criou.

1. No console do Athena, escolha **Views** (Visualizações) e, em seguida, escolha uma visualização para expandi-la e mostrar as colunas na visualização.

1. Escolha os três pontos verticais ao lado da visualização para mostrar uma lista de ações dela.  
![\[O menu de ações de uma visualização.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/view-options.png)

1. Escolha as ações para a visualização: exibir uma prévia, inserir o nome o editor de consultas, excluir, consultar as propriedades ou exibir e editar no editor de consultas.

## Ações do DDL com suporte para visualizações do Athena
<a name="views-supported-actions"></a>

O Athena oferece suporte às ações a seguir nas visualizações.


| Declaração | Descrição | 
| --- | --- | 
| [CREATE VIEW e da CREATE PROTECTED MULTI DIALECT VIEW](create-view.md) |  Cria uma nova exibição a partir de uma consulta `SELECT` especificada. Para obter mais informações, consulte [Criar visualizações](views-console.md#creating-views). A cláusula `OR REPLACE` opcional permite atualizar a exibição existente substituindo-a  | 
| [DESCRIBE VIEW](describe-view.md) |  Mostra a lista de colunas para a exibição nomeada. Isso permite examinar os atributos de uma exibição complexa.   | 
| [DROP VIEW](drop-view.md) |  Exclui uma exibição existente. A cláusula `IF EXISTS` opcional suprime o erro se a exibição não existir.  | 
| [SHOW CREATE VIEW](show-create-view.md) |  Mostra a instrução SQL que cria a exibição específica.  | 
| [SHOW VIEWS](show-views.md) |  Lista as exibições no banco de dados especificado ou no banco de dados atual se você omitir o nome do banco de dados. Use a cláusula `LIKE` opcional com uma expressão regular para restringir a lista de nomes de exibições. Você também pode ver a lista de exibições no painel esquerdo no console.  | 
| [SHOW COLUMNS](show-columns.md) |  Liste as colunas no esquema para obter uma visualização.  | 

# Considerações e limitações das visualizações do Athena
<a name="considerations-limitations-views"></a>

As visualizações do Athena têm considerações e limitações a seguir.

## Considerações
<a name="considerations-views"></a>

As seguintes considerações se aplicam à criação e ao uso de visualizações no Athena:
+ No Athena, é possível pré-visualizar e trabalhar com visualizações criadas no console do Athena, no AWS Glue Data Catalog ou com o Presto em execução no cluster do Amazon EMR conectado ao mesmo catálogo.
+ Se você criou visualizações do Athena no catálogo de dados, o catálogo as trata como tabelas. Você pode usar o controle de acesso detalhado no nível da tabela no catálogo de dados para [restringir o acesso](fine-grained-access-to-glue-resources.md) a essas visualizações. 
+  O Athena impede que você execute visualizações repetidas e exibe uma mensagem de erro nesses casos. Uma exibição recursiva é uma consulta de exibição que faz referência a si mesmo.
+ O Athena exibe uma mensagem de erro quando detecta visualizações obsoletas. Uma exibição obsoleta é relatada quando um dos seguintes itens ocorrer:
  + A exibição faz referência a tabelas ou bancos de dados que não existem.
  + Uma alteração de esquema ou metadados é feita em uma tabela referenciada. 
  + Uma tabela referenciada é descartada e recriada com um esquema ou uma configuração diferente.
+ Você pode criar e executar exibições aninhadas, desde que a consulta por trás da exibição aninhada seja válida e as tabelas e os bancos de dados existirem.

## Limitações
<a name="limitations-views"></a>
+ Os nomes das visualizações do Athena não podem conter caracteres especiais, exceto sublinhado `(_)`. Para obter mais informações, consulte [Nomear bancos de dados, tabelas e colunas](tables-databases-columns-names.md).
+ Evite usar palavras-chave reservadas para nomear visualizações. Se você usar palavras-chave reservadas, use aspas duplas para delimitar as palavras-chave reservadas em suas consultas em visualizações. Consulte [Escapar palavras-chave reservadas em consultas](reserved-words.md).
+ Não é possível usar visualizações criadas no Athena com metastores externos do Hive ou UDFs. Para obter informações sobre como trabalhar com visualizações criadas externamente no Hive, consulte [Trabalhar com visualizações do Hive](hive-views.md).
+ Não é possível usar visualizações com funções geoespaciais.
+ Não é possível usar as visualizações para gerenciar o controle de acesso aos dados no Amazon S3. Para consultar uma visualização, é necessário ter permissões para acessar os dados armazenados no Amazon S3. Para obter mais informações, consulte [Controlar o acesso ao Amazon S3 do Athena](s3-permissions.md).
+ Embora as consultas de visualizações entre contas seja possível no mecanismo do Athena versão 3, não é possível criar uma visualização que inclua um AWS Glue Data Catalog entre contas. Para obter informações sobre o acesso a catálogos de dados entre contas, consulte [Configurar o acesso entre contas aos catálogos de dados do AWS Glue](security-iam-cross-account-glue-catalog-access.md).
+ As colunas ocultas de metadados do Hive ou Iceberg `$bucket`, `$file_modified_time`, `$file_size` e `$partition` não são compatíveis para visualizações no Athena. Para obter informações sobre como usar a coluna `$path` de metadados no Athena, consulte [Obter os locais de arquivos dos dados de origem no Amazon S3](select.md#select-path).