CloudTrail Contraintes SQL du lac - AWS CloudTrail

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.

CloudTrail Contraintes SQL du lac

CloudTrail Les requêtes Lake sont des chaînes SQL. Cette section fournit des informations sur les fonctions, les opérateurs et les schémas pris en charge.

Seules les instructions SELECT sont autorisées. Aucune chaîne de requête ne peut modifier ou muter les données.

La syntaxe CloudTrail Lake d'une SELECT instruction est la suivante. L'ID du magasin de données d'événements (la partie ID de l'ARN du magasin de données d'événements) est spécifié pour la valeur. FROM

SELECT [ DISTINCT ] columns [ Aggregate ] [ FROM table event_data_store_ID] [ WHERE columns [ Conditions ] ] [ GROUP BY columns [ DISTINCT | Aggregate ] ] [ HAVING columns [ Aggregate | Conditions ] ] [ ORDER BY columns [ Aggregate | ASC | DESC | NULLS | FIRST | LAST ] [ LIMIT [ INT ] ]

CloudTrail Lake prend en charge toutes les SELECT instructions, fonctions et opérateurs Presto SQL valides. Pour plus d’informations sur les fonctions et opérateurs SQL pris en charge, veuillez consulter Functions and Operators sur le site Web de documentation de Presto.

La CloudTrail console fournit un certain nombre d'exemples de requêtes qui peuvent vous aider à commencer à écrire vos propres requêtes. Pour plus d’informations, consultez Afficher des exemples de requêtes avec la CloudTrail console.

Fonctions et opérateurs de condition et de jointure pris en charge

Fonctions prises en charge

CloudTrail Lake prend en charge toutes les fonctions Presto. Pour plus d’informations sur les fonctions prises en charge, veuillez consulter Functions and Operators sur le site Web de documentation de Presto.

CloudTrail Lake ne supporte pas le INTERVAL mot clé.

Opérateurs de conditions pris en charge

Les opérateurs de condition suivants sont pris en charge.

AND OR IN NOT IS (NOT) NULL LIKE BETWEEN GREATEST LEAST IS DISTINCT FROM IS NOT DISTINCT FROM < > <= >= <> != ( conditions ) #parenthesised conditions

Opérateurs de jointure pris en charge

Les opérateurs JOIN suivants sont pris en charge. Pour plus d’informations sur l’exécution de requêtes multitables, consultez Prise en charge avancée des requêtes multitables.

UNION UNION ALL EXCEPT INTERSECT LEFT JOIN RIGHT JOIN INNER JOIN

Prise en charge avancée des requêtes multitables

CloudTrail Lake prend en charge le langage de requête avancé dans plusieurs magasins de données d'événements.

Pour exécuter votre requête, utilisez la commande start-query de l' AWS CLI. Voici un exemple utilisant l'une des requêtes types de cette section.

aws cloudtrail start-query --query-statement "Select eventId, eventName from EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE UNION Select eventId, eventName from EXAMPLEg741-6y1x-9p3v-bnh6iEXAMPLE UNION ALL Select eventId, eventName from EXAMPLEb529-4e8f9l3d-6m2z-lkp5sEXAMPLE ORDER BY eventId LIMIT 10;"

La réponse est une chaîne QueryId. Pour obtenir le statut d'une requête, exécutez describe-query en utilisant la valeur QueryId renvoyée par start-query. Si la requête est réussie, vous pouvez exécuter get-query-results pour obtenir des résultats.

UNION|UNION ALL|EXCEPT|INTERSECT

Voici un exemple de requête qui utilise UNION et UNION ALL pour trouver des événements par leur ID et leur nom dans trois magasins de données d'événement, EDS1, EDS2 et EDS3. Les résultats sont d'abord sélectionnés dans chaque magasin de données d'événement, puis concaténés, triés par ID d'événement et limités à dix événements.

Select eventId, eventName from EDS1 UNION Select eventId, eventName from EDS2 UNION ALL Select eventId, eventName from EDS3 ORDER BY eventId LIMIT 10;

LEFT|RIGHT|INNER JOIN

Voici un exemple de requête qui utilise LEFT JOIN pour trouver tous les événements d'un magasin de données d'événement nommé eds2, mappé sur edsB, qui correspondent à ceux d'un magasin de données d'événement principal (à gauche), edsA. Les événements retournés se sont produits au plus tard le 1er janvier 2020, et seuls les noms des événements sont retournés.

SELECT edsA.eventName, edsB.eventName, element_at(edsA.map, 'test') FROM eds1 as edsA LEFT JOIN eds2 as edsB ON edsA.eventId = edsB.eventId WHERE edsA.eventtime <= '2020-01-01' ORDER BY edsB.eventName;