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écuter 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
Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/
. -
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 :
-
Amazon RDS for My SQL pour
stocker les données du catalogue de produits -
Amazon DocumentDB
pour stocker les données de compte client telles que les adresses e-mail et les adresses d'expédition -
Amazon 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.
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 fédérées ne sont pas prises en charge sur les sources de données enregistrées en tant que Glue Data Catalog.
-
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 Autoriser l'accès à Athena Federated Query : exemples de politiques .
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 federated_source_name
des noms complets. federated_source_database
. federated_source_table
.
CREATE VIEW default.order_summary AS SELECT * FROM
federated_source_name
.federated_source_database
."person" p JOINfederated_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
-
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
sur le blog AWS Big Data. -
Pour de plus amples informations sur le fonctionnement des vues dans Athena, consultez Travaillez avec des vues.