

# Executar consultas federadas
<a name="running-federated-queries"></a>

Depois de configurar um ou mais conectores de dados e implantá-los em sua conta, você poderá usá-los nas consultas do Athena. 

## Consultar uma única fonte de dados
<a name="running-federated-queries-single-data-source"></a>

Os exemplos nesta seção pressupõem que você tenha configurado e implantado [Conector do Amazon Athena para o CloudWatch](connectors-cloudwatch.md) em sua conta. Use a mesma abordagem para consultar quando usar outros conectores.

**Para criar uma consulta do Athena que usa o conector do CloudWatch**

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 do Athena, crie uma consulta SQL que use a sintaxe a seguir na cláusula `FROM`.

   ```
   MyCloudwatchCatalog.database_name.table_name       
   ```

### Exemplos
<a name="running-federated-queries-single-data-source-examples"></a>

O exemplo a seguir usa o conector do CloudWatch no Athena para se conectar à visualização `all_log_streams` no [grupo de logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) `/var/ecommerce-engine/order-processor` do CloudWatch Logs. A visualização `all_log_streams` é uma visualização de todos os fluxos de log no grupo de logs. A consulta de exemplo limita o número de linhas retornadas a 100.

```
SELECT * 
FROM "MyCloudwatchCatalog"."/var/ecommerce-engine/order-processor".all_log_streams 
LIMIT 100;
```

O exemplo a seguir analisa informações da mesma visualização que o exemplo anterior. O exemplo extrai o ID da ordem e o nível de log e filtra qualquer mensagem que tenha o nível `INFO`.

```
SELECT 
    log_stream as ec2_instance, 
    Regexp_extract(message '.*orderId=(\d+) .*', 1) AS orderId, 
    message AS order_processor_log, 
    Regexp_extract(message, '(.*):.*', 1) AS log_level 
FROM MyCloudwatchCatalog."/var/ecommerce-engine/order-processor".all_log_streams 
WHERE Regexp_extract(message, '(.*):.*', 1) != 'INFO'
```

## Consultar várias fontes de dados
<a name="running-federated-queries-multiple-sources"></a>

Usando um exemplo mais complexo, imagine uma empresa de comércio eletrônico que usa as seguintes fontes de dados para armazenar dados relacionados às compras dos clientes:
+ [Amazon RDS para MySQL](https://aws.amazon.com/rds/mysql/) para armazenar dados do catálogo de produtos
+ [Amazon DocumentDB](https://aws.amazon.com/documentdb/) para armazenar dados de conta de clientes, como endereços de e-mail e endereços de envio
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) para armazenar dados de envio e rastreamento de pedidos

Imagine que um analista de dados dessa aplicação de comércio eletrônico saiba que o tempo de entrega em algumas regiões foi afetado pelas condições climáticas locais. O analista quer saber quantos pedidos estão atrasados, onde os clientes afetados estão localizados e quais foram os produtos mais afetados. Em vez de investigar as fontes de informação separadamente, o analista usa o Athena para unir dados em uma única consulta federada.

**Example**  

```
SELECT 
     t2.product_name AS product, 
     t2.product_category AS category, 
     t3.customer_region AS region, 
     count(t1.order_id) AS impacted_orders 
FROM my_dynamodb.default.orders t1 
JOIN my_mysql.products.catalog t2 ON t1.product_id = t2.product_id 
JOIN my_documentdb.default.customers t3 ON t1.customer_id = t3.customer_id 
WHERE 
     t1.order_status = 'PENDING'
     AND t1.order_date between '2022-01-01' AND '2022-01-05' 
GROUP BY 1, 2, 3 
ORDER BY 4 DESC
```

## Consultar visualizações federadas
<a name="running-federated-queries-federated-views"></a>

Ao consultar fontes federadas, é possível usar visualizações para ofuscar as fontes de dados subjacentes ou ocultar uniões complexas de outros analistas que consultam os dados.

### Considerações e limitações
<a name="running-federated-queries-federated-views-considerations"></a>
+ As visualizações federadas necessitam do mecanismo Athena versão 3. 
+ As visualizações federadas são armazenadas no AWS Glue, não na fonte de dados subjacente.
+ As visualizações federadas não são compatíveis com fontes de dados [registradas como um Glue Data Catalog](register-connection-as-gdc.md).
+ As visualizações criadas com catálogos federados devem usar uma sintaxe de nome totalmente qualificada, como no seguinte exemplo:

  ```
  "ddbcatalog"."default"."customers"
  ```
+ Os usuários que executam consultas em fontes federadas devem ter permissão para consultar fontes federadas.
+ A permissão `athena:GetDataCatalog` é necessária para visualizações federadas. Para obter mais informações, consulte [Permitir acesso a consultas federadas do Athena: exemplos de política](federated-query-iam-access.md).

### Exemplos
<a name="running-federated-queries-federated-views-examples"></a>

O exemplo a seguir cria uma visualização denominada `customers` nos dados armazenados em uma fonte de dados federada.

**Example**  

```
CREATE VIEW customers AS
SELECT *
FROM my_federated_source.default.table
```

O exemplo de consulta a seguir mostra uma consulta que faz referência à visualização `customers` em vez da fonte de dados federada subjacente.

**Example**  

```
SELECT id, SUM(order_amount)
FROM customers
GROUP by 1
ORDER by 2 DESC
LIMIT 50
```

O exemplo a seguir cria uma visualização denominada `order_summary` que combina dados de uma fonte de dados federada e de uma fonte de dados do Amazon S3. Da fonte federada, que já foi criada no Athena, a visualização usa as tabelas `person` e `profile`. No Amazon S3, a visualização usa as tabelas `purchase` e `payment`. Para se referir ao Amazon S3, a instrução usa a palavra-chave `awsdatacatalog`. A fonte de dados federada usa a sintaxe de nome totalmente qualificada *federated\$1source\$1name*.*federated\$1source\$1database*.*federated\$1source\$1table*.

**Example**  

```
CREATE VIEW default.order_summary AS
SELECT *
FROM federated_source_name.federated_source_database."person" p
    JOIN federated_source_name.federated_source_database."profile" pr ON pr.id = p.id
    JOIN awsdatacatalog.default.purchase i ON p.id = i.id
    JOIN awsdatacatalog.default.payment pay ON pay.id = p.id
```

### Recursos adicionais
<a name="running-federated-queries-federated-views-additional-resources"></a>
+ Para ver um exemplo de uma exibição federada que está desacoplada de sua fonte original e está disponível para análise sob demanda em um modelo multiusuário, consulte [Estenda seu data mesh com o Amazon Athena e visualizações federadas](https://aws.amazon.com/blogs/big-data/extend-your-data-mesh-with-amazon-athena-and-federated-views/) no *Blog de Big Data da AWS*. 
+ Para obter mais informações sobre como trabalhar com visualizações no Athena, consulte [Trabalhar com visualizações](views.md).