

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécution de requêtes fédérées
<a name="running-federated-queries"></a>

Après avoir configuré un ou plusieurs connecteurs de données et les avoir déployés sur votre compte, vous pouvez les utiliser dans vos requêtes Athena. 

## Interrogation d’une source de données unique
<a name="running-federated-queries-single-data-source"></a>

Les exemples de cette section supposent que vous avez configuré et déployé le [Connecteur Amazon Athena CloudWatch](connectors-cloudwatch.md) sur votre compte. Utilisez la même approche pour effectuer des requêtes lorsque vous utilisez d'autres connecteurs.

**Pour créer une requête Athena utilisant le connecteur CloudWatch**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requête Athena, créez une requête SQL utilisant la syntaxe suivante dans la clause `FROM`.

   ```
   MyCloudwatchCatalog.database_name.table_name       
   ```

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

L'exemple suivant utilise le CloudWatch connecteur Athena pour se connecter à la `all_log_streams` vue du groupe `/var/ecommerce-engine/order-processor` CloudWatch Logs [Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html). La vue `all_log_streams` est une vue de tous les flux de journaux du groupe de journaux. L'exemple de requête limite le nombre de lignes renvoyées à 100.

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

L'exemple suivant analyse les informations de la même vue que l'exemple précédent. L'exemple extrait l'ID de commande et le niveau du journal, puis filtre tout message ayant le niveau `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'
```

## Interrogation de plusieurs sources de données
<a name="running-federated-queries-multiple-sources"></a>

À titre d'exemple plus complexe, imaginez une entreprise de commerce électronique qui utilise les sources de données suivantes pour stocker les données relatives aux achats des clients :
+ [Amazon RDS for MySQL](https://aws.amazon.com/rds/mysql/) pour stocker les données du catalogue de produits
+ [Amazon DocumentDB](https://aws.amazon.com/documentdb/) pour stocker les données de compte client telles que les adresses e-mail et les adresses d'expédition
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) pour stocker les données d'expédition et de suivi des commandes

Imaginez qu'un analyste de données pour cette application de commerce électronique apprenne que les délais de livraison dans certaines régions ont été affectés par les conditions météorologiques locales. L'analyste souhaite savoir combien de commandes sont retardées, où se trouvent les clients concernés et quels sont les produits les plus concernés. Au lieu d'étudier les sources d'informations séparément, l'analyste utilise Athena pour regrouper les données en une seule requête fédérée.

**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
```

## Interrogation de vues fédérées
<a name="running-federated-queries-federated-views"></a>

Lorsque vous interrogez des sources fédérées, vous pouvez utiliser des vues afin d'obscurcir les sources de données sous-jacentes ou de masquer les jointures complexes pour les autres analystes qui interrogent les données.

### Considérations et restrictions
<a name="running-federated-queries-federated-views-considerations"></a>
+ Les vues fédérées nécessitent la version 3 du moteur Athena. 
+ Les vues fédérées sont stockées dans la source de données sous-jacente AWS Glue, et non dans celle-ci.
+ Les vues fédérées ne sont pas prises en charge sur les sources de données [enregistrées en tant que Catalogue de données Glue](register-connection-as-gdc.md).
+ Les vues créées avec des catalogues fédérés doivent utiliser une syntaxe de nom complète, comme dans l'exemple suivant :

  ```
  "ddbcatalog"."default"."customers"
  ```
+ Les utilisateurs qui exécutent des requêtes sur des sources fédérées doivent être autorisés à interroger les sources fédérées.
+ L'autorisation `athena:GetDataCatalog` est requise pour les vues fédérées. Pour de plus amples informations, veuillez consulter [Autorisation d’accès aux requêtes fédérées Athena : exemples de politiques](federated-query-iam-access.md).

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

L'exemple suivant crée une vue appelée `customers` sur les données stockées dans une source de données fédérée.

**Example**  

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

L'exemple de requête suivant montre une requête qui fait référence à la vue `customers` plutôt qu'à la source de données fédérée sous-jacente.

**Example**  

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

L'exemple suivant crée une vue appelée `order_summary` qui combine les données d'une source de données fédérée et celles d'une source de données Amazon S3. À partir de la source fédérée, qui a déjà été créée dans Athena, la vue utilise les tables `person` et `profile`. Dans Amazon S3, la vue utilise les tables `purchase` et `payment`. Pour faire référence à Amazon S3, l'instruction utilise le mot-clé `awsdatacatalog`. Notez que la source de données fédérée utilise la syntaxe *federated\$1source\$1name* des noms complets. *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
```

### Ressources supplémentaires
<a name="running-federated-queries-federated-views-additional-resources"></a>
+ Pour un exemple de vue fédérée découplée de sa source d'origine et disponible pour une analyse à la demande dans un modèle d'utilisateurs multiples, consultez la section [Étendre votre maillage de données avec Amazon Athena et les vues fédérées](https://aws.amazon.com/blogs/big-data/extend-your-data-mesh-with-amazon-athena-and-federated-views/) sur le *blog AWS Big Data*. 
+ Pour de plus amples informations sur le fonctionnement des vues dans Athena, consultez [Utilisation de vues](views.md).