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 SQLContraintes liées au lac
CloudTrail Les requêtes Lake sont des SQL chaînes de caractères. 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 du magasin de données d'événementsARN) est spécifié pour la FROM
valeur.
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 SQL SELECT
instructions, fonctions et opérateurs Presto valides. Pour plus d'informations sur les SQL fonctions et les opérateurs pris en charge, consultez la section Fonctions et opérateurs
La CloudTrail console fournit un certain nombre d'exemples de requêtes qui peuvent vous aider à commencer à écrire vos propres requêtes. Pour de plus amples informations, veuillez consulter Afficher des exemples de requêtes avec la CloudTrail console.
Rubriques
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
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 rechercher des événements par leur ID d'événement et leur nom d'événement dans trois magasins de données d'événementsEDS1,EDS2, etEDS3. 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;