

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CloudTrail Lake SQL 제약
<a name="query-limitations"></a>

**참고**  
AWS CloudTrail Lake는 2026년 5월 31일부터 신규 고객에게 더 이상 공개되지 않습니다. CloudTrail Lake를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CloudTrail Lake 가용성 변경](cloudtrail-lake-service-availability-change.md) 단원을 참조하십시오.

CloudTrail Lake 쿼리는 SQL 문자열입니다. 이 섹션에서는 지원되는 함수, 연산자 및 스키마에 대한 정보를 제공합니다.

`SELECT` 명령문만이 허용됩니다. 쿼리 문자열은 데이터를 변경하거나 변형할 수 있습니다.

`SELECT` 문에 대한 CloudTrail Lake 구문은 다음과 같습니다. 이벤트 데이터 저장소 ARN의 ID 부분인 이벤트 데이터 저장소 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는 모든 유효한 Trino SQL `SELECT` 문, 함수 및 연산자를 지원합니다. 지원되는 Trino 함수와 연산자에 대한 자세한 내용은 Presto 설명서 웹 사이트의 [Functions and Operators](https://trino.io/docs/current/functions.html)를 참조하세요.

CloudTrail 콘솔은 쿼리 작성을 시작하는 데 도움이 되는 여러 샘플 쿼리를 제공합니다. 자세한 내용은 [CloudTrail 콘솔을 사용하여 샘플 쿼리 보기](lake-console-queries.md) 단원을 참조하십시오.

쿼리를 최적화하는 방법에 대한 내용은 [CloudTrail Lake 쿼리 최적화](lake-queries-optimization.md) 섹션을 참조하세요.

**Topics**
+ [지원되는 함수, 조건 및 조인 연산자](#query-aggregates-condition-operators)
+ [고급 다중 테이블 쿼리 지원](#query-advanced-multi-table)

## 지원되는 함수, 조건 및 조인 연산자
<a name="query-aggregates-condition-operators"></a>

**지원되는 함수**

CloudTrail Lake는 모든 Trino 함수를 지원합니다. 지원되는 함수에 대한 자세한 내용은 Trino 설명서 웹 사이트의 [Functions and Operators](https://trino.io/docs/current/functions.html)를 참조하세요.

**지원되는 조건 연산자**

지원되는 조건 연산자는 다음과 같습니다.

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

**지원되는 조인 연산자**

지원되는 `JOIN` 연산자는 다음과 같습니다. 다중 테이블 쿼리 실행에 대한 자세한 내용은 [고급 다중 테이블 쿼리 지원](#query-advanced-multi-table) 을 참조하세요.

```
UNION 
UNION ALL 
EXCEPT 
INTERSECT 
LEFT JOIN 
RIGHT JOIN 
INNER JOIN
```

## 고급 다중 테이블 쿼리 지원
<a name="query-advanced-multi-table"></a>

CloudTrail Lake는 여러 이벤트 데이터 스토어에서 고급 쿼리 언어를 지원합니다.
+ [`UNION|UNION ALL|EXCEPT|INTERSECT`](#query-multi-table-union)
+ [`LEFT|RIGHT|INNER JOIN`](#query-multi-table-left-right)

쿼리를 실행하려면 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`
<a name="query-multi-table-union"></a>

다음은 `UNION` 및 `UNION ALL`을 사용하여 세 개의 이벤트 데이터 스토어 EDS1, EDS2, EDS3에서 이벤트 ID 및 이벤트 이름으로 이벤트를 찾는 예제 쿼리입니다. 먼저 각 이벤트 데이터 스토어에서 결과를 선택한 다음 결과를 연결하고 이벤트 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`
<a name="query-multi-table-left-right"></a>

다음은 `LEFT JOIN` 을 사용하여 `edsB` 에 매핑된 `eds2` 라는 이벤트 데이터 스토어에서 기본(왼쪽) 이벤트 데이터 스토어인 `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;
```