CloudTrail Lake SQL の制約 - AWS CloudTrail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CloudTrail Lake SQL の制約

CloudTrail Lake クエリは SQL 文字列です。このセクションでは、サポートされている関数、演算子、スキーマについて説明します。

SELECT ステートメントのみが許可されます。データを変更できるクエリ文字列はありません。

SELECT ステートメントの CloudTrail Lake 構文は次のとおりです。イベントデータストア ID (イベントデータストアの ARN の ID 部分) を、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 は、有効な Presto SELECT ステートメント、関数、演算子をすべてサポートしています。サポートされている SQL 関数と演算子の詳細については、Presto ドキュメントウェブサイトの「関数と演算子」を参照してください。

CloudTrail コンソールには、独自クエリの作成を開始するために役立つ、サンプルクエリが多数用意されています。詳細については、「CloudTrail コンソールにサンプルクエリを表示する」を参照してください。

クエリを最適化する方法については、「」を参照してくださいCloudTrail Lake クエリの最適化

サポートされている関数、条件、結合演算子

サポートされている関数

CloudTrail Lake は、Presto 関数をすべてサポートしています。サポートされている関数の詳細については、Presto ドキュメントウェブサイトの「関数と演算子」を参照してください。

サポートされている条件演算子

以下は、サポートされている条件演算子です。

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

サポートされている結合演算子

以下は、サポートされている JOIN 演算子です。複数テーブルクエリの実行の詳細については、「高度なマルチテーブルクエリのサポート」を参照してください。

UNION UNION ALL EXCEPT INTERSECT LEFT JOIN RIGHT JOIN INNER JOIN

高度なマルチテーブルクエリのサポート

CloudTrail Lake は、複数のイベントデータストアで高度なクエリ言語をサポートしています。

クエリを実行するには、 AWS CLIの start-query コマンドを使用します。このセクションのサンプルクエリのいずれかを使用した例を次に示します。

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;"

レスポンスは QueryId 文字列です。クエリのステータスを取得するには、start-query によって返された QueryId 値を使用して describe-query を実行します。クエリが成功した場合は、get-query-results を実行して結果を取得できます。

UNION|UNION ALL|EXCEPT|INTERSECT

3 つのイベントデータストア (EDS1、EDS2、および EDS3) 内のイベント ID とイベント名でイベントを検索するために UNIONUNION ALL を使用するサンプルクエリを次に示します。結果は最初に各イベントデータストアから選択されてから連結され、イベント ID 順に並べられます。10 個のイベントに制限されます。

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

edsB にマッピングされた eds2 という名前のイベントデータストアから、プライマリ (左) イベントデータストア edsA 内のイベントと一致するすべてのイベントを検索するために LEFT JOIN を使用するサンプルクエリを次に示します。返されるイベントは 2020 年 1 月 1 日以前に発生したものであり、イベント名のみが返されます。

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;