本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudTrail 湖SQL限制
CloudTrail Lake 查詢是SQL字串。本節提供支援的函數、運算子和結構描述的相關資訊。
僅允許 SELECT
陳述式。任何查詢字串都無法變更或改變資料。
SELECT
陳述式的 CloudTrail Lake 語法如下所示。事件資料存放區 ID — 事件資料存放區 ID 部分 ARN— 為 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 SQLSELECT
陳述式、函數和運算子。如需支援SQL函數和運算子的詳細資訊,請參閱 Presto 文件網站上的函數和運算
CloudTrail 主控台提供許多範例查詢,可協助您開始撰寫自己的查詢。如需詳細資訊,請參閱使用 CloudTrail 主控台檢視範例查詢。
支援的函數、條件和聯結運算子
支援的函數
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
以下是使用 UNION
和 在三個事件資料存放區 EDS1、 EDS2和 中UNION ALL
,依事件 ID 和事件名稱尋找事件的範例查詢EDS3。會先從每個事件資料存放區中選取結果,然後將結果進行串連、依事件 ID 排序以及限制為十個事件。
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
以下是一個範例查詢,其使用 LEFT JOIN
從名為 eds2
的事件資料存放區中尋找映射到 edsB
的所有事件,這些事件與主要 (左側) 事件資料存放區 edsA
中的事件相符。傳回的事件發生在 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;