Utiliser des requêtes fédérées - Amazon Athena

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.

Utiliser des requêtes fédérées

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.

Interrogez une source de données unique

Les exemples de cette section supposent que vous avez configuré et déployé le Connecteur Amazon Athena CloudWatch 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/.

  2. Dans l'éditeur de requêtes Athena, créez une SQL requête qui utilise la syntaxe suivante dans la FROM clause.

    MyCloudwatchCatalog.database_name.table_name

Exemples

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. 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'

Interrogez plusieurs sources de données

À 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 :

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.

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

Interrogez les vues fédérées

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

  • 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 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 Exemple de politiques d'autorisation IAM pour autoriser la requête fédérée Athena.

Exemples

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.

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.

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 des noms complets federated_source_name.federated_source_database.federated_source_table.

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