

# CloudWatch Metrics Insights의 쿼리 구성 요소 및 구문
<a name="cloudwatch-metrics-insights-querylanguage"></a>

CloudWatch Metrics Insights 구문은 다음과 같습니다.

```
SELECT FUNCTION(metricName)
FROM namespace | SCHEMA(...)
[ WHERE labelKey OPERATOR labelValue [AND ... ] ]
[ GROUP BY labelKey [ , ... ] ]
[ ORDER BY FUNCTION() [ DESC | ASC ] ]
[ LIMIT number ]
```

Metrics Insights 쿼리에서 가능한 절은 다음과 같습니다. 키워드는 대소문자를 구분하지 않지만 지표 이름, 네임스페이스 및 측정기준 등의 식별자는 대소문자를 구분합니다.

**SELECT**  
필수 사항입니다. 각 시간 버킷에서 관측치를 집계하는 데 사용할 함수를 지정합니다(제공된 기간까지 결정). 쿼리할 지표 이름도 지정합니다.  
**FUNCTION**에 유효한 값은 `AVG`, `COUNT`, `MAX`, `MIN` 및`SUM`입니다.  
+ `AVG`는 쿼리와 일치하는 관측치의 평균을 계산합니다.
+ `COUNT`는 쿼리와 일치하는 관측치의 개수를 반환합니다.
+ `MAX`는 쿼리와 일치하는 관측치의 최대값을 반환합니다.
+ `MIN`은 쿼리와 일치하는 관측치의 최소값을 반환합니다.
+ `SUM`은 쿼리와 일치하는 관측치의 합계를 계산합니다.

**FROM**  
필수 사항입니다. 지표의 소스을 지정합니다. 쿼리할 지표가 포함된 지표 네임스페이스 또는 **SCHEMA** 테이블 함수를 지정할 수 있습니다. 지표 네임스페이스의 예는 `"AWS/EC2"`, `"AWS/Lambda"` 및 사용자 지정 지표에 대해 생성한 지표 네임스페이스입니다.  
**/** 또는 문자, 숫자 또는 밑줄이 아닌 다른 문자가 포함된 지표 네임스페이스는 큰따옴표로 묶어야 합니다. 자세한 내용은 [따옴표 또는 이스케이프 문자는 무엇에 필요한가요?](#cloudwatch-metrics-insights-syntaxdetails) 섹션을 참조하세요.  
**스키마**  
**FROM** 절에서 사용할 수 있는 테이블 함수(선택 사항). **SCHEMA**를 사용하여 쿼리 결과를 측정기준 목록과 정확히 일치하는 지표 또는 측정기준이 없는 지표로 범위를 축소합니다.  
**SCHEMA** 절을 사용하는 경우 적어도 하나의 인수를 포함해야 하며 이 첫 번째 인수는 쿼리되는 지표 네임스페이스여야 합니다. **SCHEMA**를 네임스페이스 인수만 사용해서 지정한 경우 결과 범위가 측정기준이 없는 지표로만 축소됩니다.  
**SCHEMA**를 추가 인수와 함께 지정한 경우 네임스페이스 인수 뒤에 있는 추가 인수는 *레이블* 키여야 합니다. 레이블 키는 측정기준 이름이어야 합니다. 이러한 레이블 키 중 하나 이상을 지정하면 정확한 측정기준 집합이 있는 지표로만 결과 범위가 축소됩니다. 이러한 레이블 키의 순서는 중요하지 않습니다.  
예:  
+ **SELECT AVG(CPUUtilization) FROM "AWS/EC2"**는 측정기준과 관계없이 `CPUUtilization` 네임스페이스에 있는 `AWS/EC2` 지표와 일치하면 단일 집계된 시계열을 반환합니다.
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2")**는 정의되지 않은 측정기준이 없는 `AWS/EC2` 네임스페이스에서 `CPUUtilization` 지표와만 일치합니다.
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)**는 정확히 하나의 `InstanceId` 측정기준으로 CloudWatch에 보고된 `CPUUtilization` 지표와만 일치합니다.
+ **SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)**는 정확히 `LoadBalancer` 및 `AvailabilityZone` 측정기준을 사용한 `AWS/ApplicationELB`에서 CloudWatch로 보고된 `RequestCount` 지표와만 일치합니다.

**WHERE**  
선택 사항. 1개 이상의 레이블 키에 대해 특정 레이블 값을 사용하여 지정된 표현식과 일치하는 지표로만 결과를 필터링합니다. 예를 들어 **WHERE InstanceType = 'c3.4xlarge'**는 결과를 `c3.4xlarge` 인스턴스 유형으로만 필터링하며 **WHERE InstanceType \$1= 'c3.4xlarge'**는 `c3.4xlarge`를 제외한 모든 인스턴스 유형으로 결과를 필터링합니다.  
모니터링 계정에서 쿼리를 실행하는 경우 `WHERE AWS.AccountId`를 사용하여 지정된 계정으로만 결과를 제한할 수 있습니다. 예를 들어, `WHERE AWS.AccountId=444455556666`은 계정 `444455556666`의 지표만 쿼리합니다. 모니터링 계정 자체의 지표로만 쿼리를 제한하려면 `WHERE AWS.AccountId=CURRENT_ACCOUNT_ID()`를 사용합니다.  
레이블 값은 항상 작은따옴표로 묶어야 합니다.  
**WHERE 절에서 태그 사용**  
`tag.keyName` 구문을 사용하여 AWS 리소스 태그별로 결과를 필터링할 수 있습니다. 태그 필터는 차원 필터와 동일한 연산자 규칙을 따릅니다. 예제:  
+ WHERE `tag.env = 'prod'`는 *env=prod*로 태그가 지정된 리소스의 지표에 대해 필터링합니다.
+ WHERE `tag.department != 'test'`는 *department=test*로 태그가 지정된 리소스에서 지표를 제외합니다.
태그 필터는 차원 필터와 결합할 수 있습니다.  
`WHERE tag.env = 'prod' AND InstanceType = 'm5.large'`  
**지원되는 연산자**  
**WHERE** 절은 다음과 같은 연산자를 지원합니다.  
+ **=** 레이블 값은 지정된 문자열과 일치해야 합니다.
+ **\$1=** 레이블 값은 지정된 문자열과 일치하지 않아야 합니다.
+ **AND**. 지정된 두 조건과 모두 일치하려면 true여야 합니다. 여러 **AND** 키워드를 사용하여 2개 이상의 조건을 지정할 수 있습니다.

**GROUP BY**  
선택 사항. 쿼리 결과를 여러 시계열로 그룹화합니다. 각 시계열은 지정된 레이블 키 또는 키에 대한 여러 값에 해당합니다. 예를 들어 `GROUP BY InstanceId`를 사용하면 `InstanceId`의 각 값에 대한 여러 시계열을 반환합니다. `GROUP BY ServiceName, Operation`을 사용하면 가능한 각 `ServiceName` 및 `Operation` 값에 대해 서로 다른 시계열을 생성합니다.  
**GROUP BY** 절을 사용하면 기본적으로 결과는 **GROUP BY** 절에 지정된 레이블 시퀀스를 사용하여 알파벳 오름차순으로 정렬됩니다. 결과 순서를 변경하려면 **ORDER BY** 절을 쿼리에 추가합니다.  
모니터링 계정에서 쿼리를 실행할 때 `GROUP BY AWS.AccountId`를 사용하여 결과를 가져온 계정을 기준으로 결과를 그룹화할 수 있습니다.  
**GROUP BY 절에서 태그 사용**  
`tag.keyName` 구문을 사용하여 AWS 리소스 태그 값별로 결과를 그룹화할 수 있습니다. 예제:  
+ *GROUP BY tag.environment*는 각각의 환경 태그 값에 대해 별도의 시계열을 생성합니다.
+ *GROUP BY tag.team, InstanceType*은 태그 값과 차원 값을 둘 다 기준으로 하여 그룹화합니다.
+ *GROUP BY tag.team, AWS.AccountId*는 태그 및 연결된 소스 AccountID를 둘 다 기준으로 하여 그룹화합니다.
일치하는 지표 일부에 **GROUP BY** 절로 지정된 특정 레이블 키가 포함되어 있지 않은 경우 `Other`로 이름이 지정된 null 그룹이 반환됩니다. 예를 들어 `GROUP BY ServiceName, Operation`을 지정하고 반환된 지표 일부에 측정기준인 `ServiceName`이 포함되지 않은 경우 해당 지표는 `ServiceName` 값으로 `Other`를 표시합니다.

**ORDER BY**  
선택 사항. 쿼리가 2개 이상의 시계열을 반환하는 경우 반환된 시계열에 사용할 순서를 지정합니다. 순서는 **ORDER BY** 절에서 지정한 **FUNCTION**으로 찾은 값을 기준으로 합니다. **FUNCTION**은 반환된 각 시계열에서 단일 스칼라 값을 계산하는 데 사용되며 해당 값은 순서를 결정하는 데 사용됩니다.  
**ASC**로 오름차순 사용 여부 또는 **DESC**로 내림차순 사용 여부를 지정할 수도 있습니다. 생략하는 경우 기본값은 **ASC**로 오름차순입니다.  
예를 들어, `ORDER BY MAX() DESC` 절을 추가하면 시간 범위 내에서 관찰된 최대 데이터 포인트별로 결과를 내림차순으로 정렬합니다. 즉, 최대 데이터 포인트가 가장 높은 시계열이 먼저 반환됩니다.  
**ORDER BY** 절에서 사용할 유효 함수는 `AVG()`, `COUNT()`, `MAX()`, `MIN()` 및 `SUM()`입니다.  
**ORDER BY** 절을 **LIMIT** 절과 함께 사용하는 경우 결과 쿼리는 "상위 N" 쿼리입니다. **ORDER BY**로 각 쿼리는 500개 이하의 시계열을 반환할 수 있으므로 많은 수의 지표를 반환할 수 있는 쿼리에도 유용합니다. 쿼리가 500개 이상의 시계열과 일치하고 **ORDER BY** 절을 사용하는 경우 시계열이 정렬된 후 정렬 순서에서 먼저 나오는 500개 시계열이 반환되는 시계열입니다.

**LIMIT**  
선택 사항. 쿼리에 의해 반환되는 시계열 수를 지정한 값으로 제한합니다. 지정할 수 있는 최대값은 500이며 **LIMIT**을 지정하지 않은 쿼리도 500개 이하의 시계열을 반환할 수 있습니다.  
**ORDER BY**가 있는 **LIMIT** 절을 사용하면 "상위 N" 쿼리를 제공합니다.

## 따옴표 또는 이스케이프 문자는 무엇에 필요한가요?
<a name="cloudwatch-metrics-insights-syntaxdetails"></a>

쿼리에서 레이블 값은 항상 작은따옴표로 묶어야 합니다. 예: **SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'**.

문자, 숫자 및 밑줄(\$1) 이외의 문자가 포함된 지표 네임스페이스, 지표 이름 및 레이블 키는 큰따옴표로 묶어야 합니다. 예: **SELECT MAX("My.Metric")**.

이들 중 하나에 큰따옴표나 작은따옴표가 포함된 경우(예:`Bytes"Input"`) **SELECT AVG("Bytes\$1"Input\$1"")**와 같이 백슬래시를 사용하여 각 따옴표를 이스케이프 처리해야 합니다.

지표 네임스페이스, 지표 이름 또는 레이블 키에 Metrics Insights의 예약된 키워드 단어가 포함되어 있는 경우 이러한 단어도 큰따옴표로 묶어야 합니다. 예를 들어 `LIMIT`으로 이름 붙인 지표가 있는 경우 `SELECT AVG("LIMIT")`를 사용합니다. 예약어가 포함되어 있지 않더라도 네임스페이스, 지표 이름 또는 레이블을 큰따옴표로 묶는 것도 유효합니다.

전체 예약어 목록은 [예약어](cloudwatch-metrics-insights-reserved-keywords.md) 섹션을 참조하세요.

## 리치 쿼리 작성 단계별 방법
<a name="cloudwatch-metrics-insights-syntaxexample"></a>

이 섹션에서는 가능한 모든 절을 단계별로 사용하는 전체 예제를 작성하는 방법을 설명합니다.

`LoadBalancer` 및 `AvailabilityZone` 차원을 둘 다 사용하여 수집된 모든 Application Load Balancer `RequestCount` 지표를 집계하는 다음과 같은 쿼리로 시작할 수 있습니다.

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
```

특정 로드 밸런서의 지표만 보고 싶다면 **WHERE** 절을 추가하여 `LoadBalancer` 차원 값이 `app/load-balancer-1`인 해당 지표만 반환되는 지표로 제한할 수 있습니다.

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
```

앞의 쿼리는 이 로드 밸런서에 대한 모든 가용 영역의 `RequestCount` 지표를 하나의 시계열로 집계합니다. 각 가용 영역에 대해 서로 다른 시계열을 보려면 **GROUP BY** 절을 추가하면 됩니다.

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
```

그다음, 이러한 결과를 정렬하여 가장 높은 값이 첫 번째로 표시되도록 할 수 있습니다. 다음 **ORDER BY** 절은 쿼리 시간 범위 동안 각 시계열에 의해 보고된 최대값만큼 내림차순으로 시계열을 정렬합니다.

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
ORDER BY MAX() DESC
```

태그를 사용하여 결과를 추가로 필터링할 수도 있습니다. 예를 들어 특정 환경으로 태그가 지정된 로드 밸런서에 대한 결과만 보려는 경우, WHERE 절에 태그 필터링을 추가하면 됩니다.

```
SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' AND tag.Environment = 'prod' GROUP BY AvailabilityZone ORDER BY MAX() DESC
```

차원 대신(또는 차원에 추가하여) 태그 값을 기준으로 결과를 그룹화할 수도 있습니다. 예를 들어 애플리케이션 태그별로 그룹화할 경우 다음과 같습니다.

```
SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE tag.Environment = 'prod' GROUP BY tag.Application ORDER BY MAX() DESC
```

마지막으로 "상위 N" 유형의 쿼리에 주로 관심이 있다면 **LIMIT** 절을 사용할 수 있습니다. 마지막 예에서는 결과를 상위 5개의 `MAX` 값을 가진 시계열로만 제한합니다.

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
ORDER BY MAX() DESC
LIMIT 5
```

## 크로스 계정 쿼리 예제
<a name="cloudwatch-metrics-insights-crossaccount"></a>

이러한 예제는 CloudWatch 크로스 계정 관찰성에서 모니터링 계정으로 설정된 계정에서 실행할 때 유효합니다.

다음 예제에서는 소스 계정 123456789012에서 모든 Amazon EC2 인스턴스를 검색하고 평균을 반환합니다.

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
WHERE AWS.AccountId ='123456789012'
```

다음 예제는 연결된 모든 소스 계정에서 `AWS/EC2` 의 `CPUUtilization` 지표를 쿼리하고 결과를 계정 ID 및 인스턴스 유형별로 그룹화합니다.

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
GROUP BY AWS.AccountId, InstanceType
```

다음 예제는 모니터링 계정 자체에서 `CPUUtilization`을 쿼리합니다.

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
WHERE AWS.AccountId = CURRENT_ACCOUNT_ID()
```

# 예약어
<a name="cloudwatch-metrics-insights-reserved-keywords"></a>

다음은 CloudWatch 지표 인사이트의 예약된 키워드입니다. 이러한 단어가 쿼리의 네임스페이스, 지표 이름 또는 레이블 키에 있는 경우 큰따옴표로 묶어야 합니다. 예약어는 대소문자를 구분하지 않습니다.

```
"ABORT" "ABORTSESSION" "ABS" "ABSOLUTE" "ACCESS" "ACCESSIBLE" "ACCESS_LOCK" "ACCOUNT" "ACOS" "ACOSH" "ACTION" "ADD" "ADD_MONTHS"
"ADMIN" "AFTER" "AGGREGATE" "ALIAS" "ALL" "ALLOCATE" "ALLOW" "ALTER" "ALTERAND" "AMP" "ANALYSE" "ANALYZE" "AND" "ANSIDATE" "ANY" "ARE" "ARRAY",
"ARRAY_AGG" "ARRAY_EXISTS" "ARRAY_MAX_CARDINALITY" "AS" "ASC" "ASENSITIVE" "ASIN" "ASINH" "ASSERTION" "ASSOCIATE" "ASUTIME" "ASYMMETRIC" "AT",
"ATAN" "ATAN2" "ATANH" "ATOMIC" "AUDIT" "AUTHORIZATION" "AUX" "AUXILIARY" "AVE" "AVERAGE" "AVG" "BACKUP" "BEFORE" "BEGIN" "BEGIN_FRAME" "BEGIN_PARTITION",
"BETWEEN" "BIGINT" "BINARY" "BIT" "BLOB" "BOOLEAN" "BOTH" "BREADTH" "BREAK" "BROWSE" "BT" "BUFFERPOOL" "BULK" "BUT" "BY" "BYTE" "BYTEINT" "BYTES" "CALL",
"CALLED" "CAPTURE" "CARDINALITY" "CASCADE" "CASCADED" "CASE" "CASESPECIFIC" "CASE_N" "CAST" "CATALOG" "CCSID" "CD" "CEIL" "CEILING" "CHANGE" "CHAR",
"CHAR2HEXINT" "CHARACTER" "CHARACTERS" "CHARACTER_LENGTH" "CHARS" "CHAR_LENGTH" "CHECK" "CHECKPOINT" "CLASS" "CLASSIFIER" "CLOB" "CLONE" "CLOSE" "CLUSTER",
"CLUSTERED" "CM" "COALESCE" "COLLATE" "COLLATION" "COLLECT" "COLLECTION" "COLLID" "COLUMN" "COLUMN_VALUE" "COMMENT" "COMMIT" "COMPLETION" "COMPRESS" "COMPUTE",
"CONCAT" "CONCURRENTLY" "CONDITION" "CONNECT" "CONNECTION" "CONSTRAINT" "CONSTRAINTS" "CONSTRUCTOR" "CONTAINS" "CONTAINSTABLE" "CONTENT" "CONTINUE" "CONVERT",
"CONVERT_TABLE_HEADER" "COPY" "CORR" "CORRESPONDING" "COS" "COSH" "COUNT" "COVAR_POP" "COVAR_SAMP" "CREATE" "CROSS" "CS" "CSUM" "CT" "CUBE" "CUME_DIST",
"CURRENT" "CURRENT_CATALOG" "CURRENT_DATE" "CURRENT_DEFAULT_TRANSFORM_GROUP" "CURRENT_LC_CTYPE" "CURRENT_PATH" "CURRENT_ROLE" "CURRENT_ROW" "CURRENT_SCHEMA",
"CURRENT_SERVER" "CURRENT_TIME" "CURRENT_TIMESTAMP" "CURRENT_TIMEZONE" "CURRENT_TRANSFORM_GROUP_FOR_TYPE" "CURRENT_USER" "CURRVAL" "CURSOR" "CV" "CYCLE" "DATA",
"DATABASE" "DATABASES" "DATABLOCKSIZE" "DATE" "DATEFORM" "DAY" "DAYS" "DAY_HOUR" "DAY_MICROSECOND" "DAY_MINUTE" "DAY_SECOND" "DBCC" "DBINFO" "DEALLOCATE" "DEC",
"DECFLOAT" "DECIMAL" "DECLARE" "DEFAULT" "DEFERRABLE" "DEFERRED" "DEFINE" "DEGREES" "DEL" "DELAYED" "DELETE" "DENSE_RANK" "DENY" "DEPTH" "DEREF" "DESC" "DESCRIBE",
"DESCRIPTOR" "DESTROY" "DESTRUCTOR" "DETERMINISTIC" "DIAGNOSTIC" "DIAGNOSTICS" "DICTIONARY" "DISABLE" "DISABLED" "DISALLOW" "DISCONNECT" "DISK" "DISTINCT",
"DISTINCTROW" "DISTRIBUTED" "DIV" "DO" "DOCUMENT" "DOMAIN" "DOUBLE" "DROP" "DSSIZE" "DUAL" "DUMP" "DYNAMIC" "EACH" "ECHO" "EDITPROC" "ELEMENT" "ELSE" "ELSEIF",
"EMPTY" "ENABLED" "ENCLOSED" "ENCODING" "ENCRYPTION" "END" "END-EXEC" "ENDING" "END_FRAME" "END_PARTITION" "EQ" "EQUALS" "ERASE" "ERRLVL" "ERROR" "ERRORFILES",
"ERRORTABLES" "ESCAPE" "ESCAPED" "ET" "EVERY" "EXCEPT" "EXCEPTION" "EXCLUSIVE" "EXEC" "EXECUTE" "EXISTS" "EXIT" "EXP" "EXPLAIN" "EXTERNAL" "EXTRACT" "FALLBACK
"FALSE" "FASTEXPORT" "FENCED" "FETCH" "FIELDPROC" "FILE" "FILLFACTOR" "FILTER" "FINAL" "FIRST" "FIRST_VALUE" "FLOAT" "FLOAT4" "FLOAT8" "FLOOR" 
"FOR" "FORCE" "FOREIGN" "FORMAT" "FOUND" "FRAME_ROW" "FREE" "FREESPACE" "FREETEXT" "FREETEXTTABLE" "FREEZE" "FROM" "FULL" "FULLTEXT" "FUNCTION" 
"FUSION" "GE" "GENERAL" "GENERATED" "GET" "GIVE" "GLOBAL" "GO" "GOTO" "GRANT" "GRAPHIC" "GROUP" "GROUPING" "GROUPS" "GT" "HANDLER" "HASH" 
"HASHAMP" "HASHBAKAMP" "HASHBUCKET" "HASHROW" "HAVING" "HELP" "HIGH_PRIORITY" "HOLD" "HOLDLOCK" "HOUR" "HOURS" "HOUR_MICROSECOND" "HOUR_MINUTE" 
"HOUR_SECOND" "IDENTIFIED" "IDENTITY" "IDENTITYCOL" "IDENTITY_INSERT" "IF" "IGNORE" "ILIKE" "IMMEDIATE" "IN" "INCLUSIVE" "INCONSISTENT" "INCREMENT" 
"INDEX" "INDICATOR" "INFILE" "INHERIT" "INITIAL" "INITIALIZE" "INITIALLY" "INITIATE" "INNER" "INOUT" "INPUT" "INS" "INSENSITIVE" "INSERT" "INSTEAD" 
"INT" "INT1" "INT2" "INT3" "INT4" "INT8" "INTEGER" "INTEGERDATE" "INTERSECT" "INTERSECTION" "INTERVAL" "INTO" "IO_AFTER_GTIDS" "IO_BEFORE_GTIDS" 
"IS" "ISNULL" "ISOBID" "ISOLATION" "ITERATE" "JAR" "JOIN" "JOURNAL" "JSON_ARRAY" "JSON_ARRAYAGG" "JSON_EXISTS" "JSON_OBJECT" "JSON_OBJECTAGG" 
"JSON_QUERY" "JSON_TABLE" "JSON_TABLE_PRIMITIVE" "JSON_VALUE" "KEEP" "KEY" "KEYS" "KILL" "KURTOSIS" "LABEL" "LAG" "LANGUAGE" "LARGE" "LAST" 
"LAST_VALUE" "LATERAL" "LC_CTYPE" "LE" "LEAD" "LEADING" "LEAVE" "LEFT" "LESS" "LEVEL" "LIKE" "LIKE_REGEX" "LIMIT" "LINEAR" "LINENO" "LINES" 
"LISTAGG" "LN" "LOAD" "LOADING" "LOCAL" "LOCALE" "LOCALTIME" "LOCALTIMESTAMP" "LOCATOR" "LOCATORS" "LOCK" "LOCKING" "LOCKMAX" "LOCKSIZE" "LOG" 
"LOG10" "LOGGING" "LOGON" "LONG" "LONGBLOB" "LONGTEXT" "LOOP" "LOWER" "LOW_PRIORITY" "LT" "MACRO" "MAINTAINED" "MAP" "MASTER_BIND" 
"MASTER_SSL_VERIFY_SERVER_CERT" "MATCH" "MATCHES" "MATCH_NUMBER" "MATCH_RECOGNIZE" "MATERIALIZED" "MAVG" "MAX" "MAXEXTENTS" "MAXIMUM" "MAXVALUE" 
"MCHARACTERS" "MDIFF" "MEDIUMBLOB" "MEDIUMINT" "MEDIUMTEXT" "MEMBER" "MERGE" "METHOD" "MICROSECOND" "MICROSECONDS" "MIDDLEINT" "MIN" "MINDEX" 
"MINIMUM" "MINUS" "MINUTE" "MINUTES" "MINUTE_MICROSECOND" "MINUTE_SECOND" "MLINREG" "MLOAD" "MLSLABEL" "MOD" "MODE" "MODIFIES" "MODIFY" 
"MODULE" "MONITOR" "MONRESOURCE" "MONSESSION" "MONTH" "MONTHS" "MSUBSTR" "MSUM" "MULTISET" "NAMED" "NAMES" "NATIONAL" "NATURAL" "NCHAR" "NCLOB" 
"NE" "NESTED_TABLE_ID" "NEW" "NEW_TABLE" "NEXT" "NEXTVAL" "NO" "NOAUDIT" "NOCHECK" "NOCOMPRESS" "NONCLUSTERED" "NONE" "NORMALIZE" "NOT" "NOTNULL" 
"NOWAIT" "NO_WRITE_TO_BINLOG" "NTH_VALUE" "NTILE" "NULL" "NULLIF" "NULLIFZERO" "NULLS" "NUMBER" "NUMERIC" "NUMPARTS" "OBID" "OBJECT" "OBJECTS" 
"OCCURRENCES_REGEX" "OCTET_LENGTH" "OF" "OFF" "OFFLINE" "OFFSET" "OFFSETS" "OLD" "OLD_TABLE" "OMIT" "ON" "ONE" "ONLINE" "ONLY" "OPEN" "OPENDATASOURCE" 
"OPENQUERY" "OPENROWSET" "OPENXML" "OPERATION" "OPTIMIZATION" "OPTIMIZE" "OPTIMIZER_COSTS" "OPTION" "OPTIONALLY" "OR" "ORDER" "ORDINALITY" "ORGANIZATION" 
"OUT" "OUTER" "OUTFILE" "OUTPUT" "OVER" "OVERLAPS" "OVERLAY" "OVERRIDE" "PACKAGE" "PAD" "PADDED" "PARAMETER" "PARAMETERS" "PART" "PARTIAL" "PARTITION" 
"PARTITIONED" "PARTITIONING" "PASSWORD" "PATH" "PATTERN" "PCTFREE" "PER" "PERCENT" "PERCENTILE" "PERCENTILE_CONT" "PERCENTILE_DISC" "PERCENT_RANK" "PERIOD" "PERM" 
"PERMANENT" "PIECESIZE" "PIVOT" "PLACING" "PLAN" "PORTION" "POSITION" "POSITION_REGEX" "POSTFIX" "POWER" "PRECEDES" "PRECISION" "PREFIX" "PREORDER" 
"PREPARE" "PRESERVE" "PREVVAL" "PRIMARY" "PRINT" "PRIOR" "PRIQTY" "PRIVATE" "PRIVILEGES" "PROC" "PROCEDURE" "PROFILE" "PROGRAM" "PROPORTIONAL" 
"PROTECTION" "PSID" "PTF" "PUBLIC" "PURGE" "QUALIFIED" "QUALIFY" "QUANTILE" "QUERY" "QUERYNO" "RADIANS" "RAISERROR" "RANDOM" "RANGE" "RANGE_N" "RANK" 
"RAW" "READ" "READS" "READTEXT" "READ_WRITE" "REAL" "RECONFIGURE" "RECURSIVE" "REF" "REFERENCES" "REFERENCING" "REFRESH" "REGEXP" "REGR_AVGX" "REGR_AVGY" 
"REGR_COUNT" "REGR_INTERCEPT" "REGR_R2" "REGR_SLOPE" "REGR_SXX" "REGR_SXY" "REGR_SYY" "RELATIVE" "RELEASE" "RENAME" "REPEAT" "REPLACE" "REPLICATION" 
"REPOVERRIDE" "REQUEST" "REQUIRE" "RESIGNAL" "RESOURCE" "RESTART" "RESTORE" "RESTRICT" "RESULT" "RESULT_SET_LOCATOR" "RESUME" "RET" "RETRIEVE" "RETURN" 
"RETURNING" "RETURNS" "REVALIDATE" "REVERT" "REVOKE" "RIGHT" "RIGHTS" "RLIKE" "ROLE" "ROLLBACK" "ROLLFORWARD" "ROLLUP" "ROUND_CEILING" "ROUND_DOWN" 
"ROUND_FLOOR" "ROUND_HALF_DOWN" "ROUND_HALF_EVEN" "ROUND_HALF_UP" "ROUND_UP" "ROUTINE" "ROW" "ROWCOUNT" "ROWGUIDCOL" "ROWID" "ROWNUM" "ROWS" "ROWSET" 
"ROW_NUMBER" "RULE" "RUN" "RUNNING" "SAMPLE" "SAMPLEID" "SAVE" "SAVEPOINT" "SCHEMA" "SCHEMAS" "SCOPE" "SCRATCHPAD" "SCROLL" "SEARCH" "SECOND" "SECONDS" 
"SECOND_MICROSECOND" "SECQTY" "SECTION" "SECURITY" "SECURITYAUDIT" "SEEK" "SEL" "SELECT" "SEMANTICKEYPHRASETABLE" "SEMANTICSIMILARITYDETAILSTABLE" 
"SEMANTICSIMILARITYTABLE" "SENSITIVE" "SEPARATOR" "SEQUENCE" "SESSION" "SESSION_USER" "SET" "SETRESRATE" "SETS" "SETSESSRATE" "SETUSER" "SHARE" "SHOW" 
"SHUTDOWN" "SIGNAL" "SIMILAR" "SIMPLE" "SIN" "SINH" "SIZE" "SKEW" "SKIP" "SMALLINT" "SOME" "SOUNDEX" "SOURCE" "SPACE" "SPATIAL" "SPECIFIC" "SPECIFICTYPE" 
"SPOOL" "SQL" "SQLEXCEPTION" "SQLSTATE" "SQLTEXT" "SQLWARNING" "SQL_BIG_RESULT" "SQL_CALC_FOUND_ROWS" "SQL_SMALL_RESULT" "SQRT" "SS" "SSL" "STANDARD" 
"START" "STARTING" "STARTUP" "STAT" "STATE" "STATEMENT" "STATIC" "STATISTICS" "STAY" "STDDEV_POP" "STDDEV_SAMP" "STEPINFO" "STOGROUP" "STORED" "STORES" 
"STRAIGHT_JOIN" "STRING_CS" "STRUCTURE" "STYLE" "SUBMULTISET" "SUBSCRIBER" "SUBSET" "SUBSTR" "SUBSTRING" "SUBSTRING_REGEX" "SUCCEEDS" "SUCCESSFUL" 
"SUM" "SUMMARY" "SUSPEND" "SYMMETRIC" "SYNONYM" "SYSDATE" "SYSTEM" "SYSTEM_TIME" "SYSTEM_USER" "SYSTIMESTAMP" "TABLE" "TABLESAMPLE" "TABLESPACE" "TAN" 
"TANH" "TBL_CS" "TEMPORARY" "TERMINATE" "TERMINATED" "TEXTSIZE" "THAN" "THEN" "THRESHOLD" "TIME" "TIMESTAMP" "TIMEZONE_HOUR" "TIMEZONE_MINUTE" "TINYBLOB" 
"TINYINT" "TINYTEXT" "TITLE" "TO" "TOP" "TRACE" "TRAILING" "TRAN" "TRANSACTION" "TRANSLATE" "TRANSLATE_CHK" "TRANSLATE_REGEX" "TRANSLATION" "TREAT" 
"TRIGGER" "TRIM" "TRIM_ARRAY" "TRUE" "TRUNCATE" "TRY_CONVERT" "TSEQUAL" "TYPE" "UC" "UESCAPE" "UID" "UNDEFINED" "UNDER" "UNDO" "UNION" "UNIQUE" 
"UNKNOWN" "UNLOCK" "UNNEST" "UNPIVOT" "UNSIGNED" "UNTIL" "UPD" "UPDATE" "UPDATETEXT" "UPPER" "UPPERCASE" "USAGE" "USE" "USER" "USING" "UTC_DATE" 
"UTC_TIME" "UTC_TIMESTAMP" "VALIDATE" "VALIDPROC" "VALUE" "VALUES" "VALUE_OF" "VARBINARY" "VARBYTE" "VARCHAR" "VARCHAR2" "VARCHARACTER" "VARGRAPHIC" 
"VARIABLE" "VARIADIC" "VARIANT" "VARYING" "VAR_POP" "VAR_SAMP" "VCAT" "VERBOSE" "VERSIONING" "VIEW" "VIRTUAL" "VOLATILE" "VOLUMES" "WAIT" "WAITFOR" 
"WHEN" "WHENEVER" "WHERE" "WHILE" "WIDTH_BUCKET" "WINDOW" "WITH" "WITHIN" "WITHIN_GROUP" "WITHOUT" "WLM" "WORK" "WRITE" "WRITETEXT" "XMLCAST" "XMLEXISTS" 
"XMLNAMESPACES" "XOR" "YEAR" "YEARS" "YEAR_MONTH" "ZEROFILL" "ZEROIFNULL" "ZONE"
```