

# Componentes e sintaxe de consulta no CloudWatch Metrics Insights
<a name="cloudwatch-metrics-insights-querylanguage"></a>

A sintaxe do CloudWatch Metrics Insights é a seguinte.

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

As cláusulas possíveis em uma consulta do Metrics Insights são as seguintes. Nenhuma das palavras-chave diferencia maiúsculas de minúsculas, mas os identificadores como os nomes de métricas, namespaces e dimensões sim.

**SELECT**  
Obrigatório. Especifica a função a ser usada para agregar observações em cada bucket de tempo (determinado pelo período fornecido). Também especifica o nome da métrica a ser consultada.  
Os valores válidos para **FUNCTION** são `AVG`, `COUNT`, `MAX`, `MIN` e `SUM`.  
+ `AVG` calcula a média das observações correspondidas pela consulta.
+ `COUNT` retorna a contagem das observações correspondidas pela consulta.
+ `MAX` retorna o valor máximo das observações correspondidas pela consulta.
+ `MIN` retorna o valor mínimo das observações correspondidas pela consulta.
+ `SUM` calcula a soma das observações correspondidas pela consulta.

**FROM**  
Obrigatório. Especifica a fonte da métrica. Você pode especificar o namespace da métrica que contém a métrica a ser consultada ou uma função de tabela **SCHEMA**. Exemplos de namespaces de métrica incluem `"AWS/EC2"`, `"AWS/Lambda"` e namespaces de métrica criados para suas métricas personalizadas.  
Namespaces de métrica que incluem **/** ou qualquer outro caractere que não seja letra, número ou sublinhado devem ser cercados por aspas duplas. Para obter mais informações, consulte [Quando é necessário usar aspas ou caracteres de escape?](#cloudwatch-metrics-insights-syntaxdetails).  
**SCHEMA**  
Uma função de tabela opcional que pode ser usada dentro de uma cláusula **FROM**. Use **SCHEMA** para reduzir o escopo dos resultados da consulta apenas para as métricas que correspondem exatamente a uma lista de dimensões ou para métricas que não têm dimensões.   
Se você usar uma cláusula **SCHEMA**, ela deve conter pelo menos um argumento, e o primeiro deles deve ser o namespace de métrica que está sendo consultado. Se você especificar **SCHEMA** só com o argumento de namespace, os resultados são reduzidos para somente as métricas que não têm dimensões.  
Se você especificar **SCHEMA** com argumentos adicionais, os argumentos adicionais após o argumento de namespace devem ser chaves de *rótulo*. As chaves de rótulo devem ser nomes de dimensão. Se você especificar uma ou mais chaves de rótulo, os resultados serão definidos apenas para as métricas que têm esse conjunto exato de dimensões. A ordem das chaves de rótulo não tem importância.  
Por exemplo:  
+ **SELECT AVG(CPUUtilization) FROM "AWS/EC2"** corresponde a todas as métricas `CPUUtilization` do namespace `AWS/EC2`, independentemente de suas dimensões, e retorna uma única série temporal agregada. 
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2")** corresponde apenas às métricas de `CPUUtilization` no namespace `AWS/EC2` que não têm nenhuma dimensão definida.
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)** corresponde apenas às métricas `CPUUtilization` que foram relatadas ao CloudWatch com exatamente uma dimensão, `InstanceId`.
+ **SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)** corresponde apenas às métricas `RequestCount` que foram relatadas ao CloudWatch pelo `AWS/ApplicationELB` com exatamente duas dimensões, `LoadBalancer` e `AvailabilityZone`.

**WHERE**  
Opcional. Filtra os resultados apenas para as métricas que correspondem à expressão especificada usando valores de rótulo específicos para uma ou mais chaves de rótulo. Por exemplo, **WHERE InstanceType = 'c3.4xlarge'** filtra os resultados somente para os tipos de instância `c3.4xlarge`, e **WHERE InstanceType \$1= 'c3.4xlarge'** filtra os resultados para todos os tipos de instância, exceto `c3.4xlarge`.  
Ao executar uma consulta em uma conta de monitoramento, você pode usar `WHERE AWS.AccountId` para limitar os resultados somente à conta que você especificar. Por exemplo, `WHERE AWS.AccountId=444455556666` só consulta métricas da conta `444455556666`. Para limitar sua consulta somente a métricas na própria conta de monitoramento, use `WHERE AWS.AccountId=CURRENT_ACCOUNT_ID()`.  
Os valores do rótulo devem sempre ser incluídos com aspas simples.  
**Usar tags em cláusulas WHERE**  
Você pode filtrar os resultados por tags de recurso da AWS usando a sintaxe `tag.keyName`. Os filtros de tag seguem as mesmas regras de operador que os filtros de dimensão. Por exemplo:  
+ WHERE `tag.env = 'prod'` filtra as métricas de recursos marcadas com *env=prod*
+ *WHERE `tag.department != 'test'` exclui as métricas de recursos marcados com department=test*
Os filtros de tag podem ser combinados com os filtros de dimensão:  
`WHERE tag.env = 'prod' AND InstanceType = 'm5.large'`  
**Operadores compatíveis**  
A cláusula **WHERE** é compatível com os seguintes operadores:  
+ **=** O valor do rótulo deve corresponder à string especificada.
+ **\$1=** O valor do rótulo não deve ser correspondente à string especificada.
+ **AND** Ambas as condições especificadas devem ser verdadeiras para serem correspondentes. Você pode usar várias palavras-chave **AND** para especificar duas ou mais condições.

**GROUP BY**  
Opcional. Agrupa os resultados da consulta em várias séries temporais, cada uma correspondendo a um valor diferente para a chave de rótulo ou chaves especificadas. Por exemplo, o uso de `GROUP BY InstanceId` retorna uma série temporal diferente para cada valor de `InstanceId`. O uso do `GROUP BY ServiceName, Operation` cria uma série temporal diferente para cada combinação possível de valores de `ServiceName` e `Operation`.  
Com uma cláusula **GROUP BY**, os resultados são ordenados alfabeticamente em ordem crescente por padrão usando a sequência de rótulos especificada na cláusula **GROUP BY**. Para alterar a ordem dos resultados, adicione uma cláusula **ORDER BY** à sua consulta.   
Ao executar uma consulta em uma conta de monitoramento, você pode usar `GROUP BY AWS.AccountId` para agrupar os resultados com base nas contas das quais eles se originam.  
**Usar tags em cláusulas GROUP BY**  
É possível filtrar os resultados por tags de recurso da AWS usando a sintaxe `tag.keyName`. Por exemplo:  
+ *GROUP BY tag.environment* cria séries temporais separadas para cada valor de tag de ambiente
+ *GROUP BY tag.team, InstanceType* agrupa por valores de tag e de dimensão
+ *GROUP BY tag.team, AWS.AccountId* agrupa por tag e por AccountIDs de origem vinculadas
Se algumas das métricas correspondentes não especificarem uma chave de rótulo específica na cláusula **GROUP BY**, é retornado um grupo nulo denominado `Other`. Por exemplo, se você especificar `GROUP BY ServiceName, Operation` e algumas das métricas retornadas não incluem `ServiceName` como uma dimensão, essas métricas são exibidas com `Other` como o valor para `ServiceName`.

**ORDER BY**  
Opcional. Especifica a ordem a ser usada para a série temporal retornada, se a consulta retornar mais de uma série temporal. A ordem é baseada nos valores encontrados pela **FUNCTION** que você especifica na cláusula **ORDER BY**. A **FUNCTION** é usada para calcular um único valor escalar de cada série temporal retornada, e esse valor é usado para determinar a ordem.  
Você também especifica se deve-se usar a ordem crescente **ASC** ou decrescente **DESC**. Se você omitir isso, o padrão será crescente **ASC**.  
Por exemplo, adicionar uma cláusula `ORDER BY MAX() DESC` ordena os resultados pelo ponto de dados máximo observado dentro do intervalo de tempo em ordem decrescente: o que significa que a série temporal que tem o ponto de dados máximo mais alto é retornada primeiro.  
As funções válidas para serem usadas em uma cláusula **ORDER BY** são `AVG()`, `COUNT()`, `MAX()`, `MIN()` e `SUM()`.  
Se você usar uma cláusula **ORDER BY** com uma cláusula **LIMIT**, a consulta resultante é uma consulta “Top N”. **ORDER BY** também é útil para consultas que podem retornar um grande número de métricas, porque cada consulta não pode retornar mais de 500 séries temporais. Se uma consulta corresponder a mais de 500 séries temporais e você usar uma cláusula **ORDER BY**, as séries temporais são classificadas e, em seguida, as 500 que aparecem primeiro na ordem de classificação são as que são retornadas.

**LIMIT**  
Opcional. Limita o número de séries temporais retornadas pela consulta ao valor que você especificar. O valor máximo que você pode especificar é 500, e uma consulta que não especifica um **LIMIT** também pode retornar até 500 séries temporais.  
O uso de uma cláusula **LIMIT** com uma cláusula **ORDER BY** fornece uma consulta “Top N”.

## Quando é necessário usar aspas ou caracteres de escape?
<a name="cloudwatch-metrics-insights-syntaxdetails"></a>

Em uma consulta, os valores de rótulo devem sempre estar cercados por aspas simples. Por exemplo, **SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'**. 

Namespaces de métricas, nomes de métricas e chaves de rótulo que contenham caracteres diferentes de letras, números e sublinhado (\$1) devem ser cercados por aspas duplas. Por exemplo, **SELECT MAX("My.Metric")**.

Se um deles contiver aspas duplas ou aspas simples (como `Bytes"Input"`), você deve fazer o escape de cada aspa com uma barra invertida, como em **SELECT AVG("Bytes\$1"Input\$1"")**. 

Se um namespace de métrica, nome da métrica ou chave de rótulo contiver uma palavra que seja palavra-chave reservada no Metrics Insights, eles também deverão estar entre aspas duplas. Por exemplo, se você tiver uma métrica chamada `LIMIT`, você pode usar `SELECT AVG("LIMIT")`. Também é válido colocar qualquer namespace, nome da métrica ou rótulo entre aspas duplas, mesmo que não inclua uma palavra-chave reservada.

(Para obter uma lista completa de palavras-chave reservadas, consulte [Palavras-chave reservadas](cloudwatch-metrics-insights-reserved-keywords.md).

## Construir uma consulta avançada passo a passo
<a name="cloudwatch-metrics-insights-syntaxexample"></a>

Esta seção ilustra a criação de um exemplo completo que usa todas as cláusulas possíveis, passo a passo.

Você pode começar com a consulta a seguir, que agrega todas as métricas `RequestCount` do Application Load Balancer coletadas com as dimensões `LoadBalancer` e `AvailabilityZone`.

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

Para ver apenas as métricas de um balanceador de carga específico, adicione uma cláusula **WHERE** para limitar as métricas retornadas apenas àquelas em que o valor da dimensão `LoadBalancer` é `app/load-balancer-1`.

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

A consulta anterior agrega as métricas `RequestCount` de todas as zonas de disponibilidade para esse balanceador de carga em uma série temporal. Se quiser ver séries temporais diferentes para cada zona de disponibilidade, adicione uma cláusula **GROUP BY**.

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

Depois, ordene esses resultados para os valores mais altos serem exibidos primeiro. A seguinte cláusula **ORDER BY** ordena a série temporal em ordem decrescente pelo valor máximo relatado por cada série temporal durante o intervalo de tempo da consulta:

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

Também é possível usar tags para filtrar ainda mais os resultados. Por exemplo, se você quiser ver resultados somente para balanceadores de carga marcados com um ambiente específico, adicione filtragem de tags à cláusula 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
```

Também é possível agrupar os resultados por valores de tag em vez de (ou além de) por dimensões. Por exemplo, agrupar pela tag Application:

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

Finalmente, se estivermos interessados principalmente em um tipo de consulta "Top N", podemos usar uma cláusula **LIMIT**. Este exemplo final limita os resultados apenas às séries temporais com os cinco maiores valores `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
```

## Exemplos de consultas entre contas
<a name="cloudwatch-metrics-insights-crossaccount"></a>

Esses exemplos são válidos quando executados em uma conta configurada como conta de monitoramento na observabilidade entre contas do CloudWatch. 

O exemplo a seguir pesquisa todas as instâncias do Amazon EC2 na conta de origem 123456789012 e retorna a média.

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

O exemplo a seguir consulta a métrica `CPUUtilization` no `AWS/EC2` em todas as contas de origem vinculadas e agrupa os resultados por ID da conta e tipo de instância.

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

O exemplo a seguir consulta a `CPUUtilization` na própria conta de monitoramento.

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

# Palavras-chave reservadas
<a name="cloudwatch-metrics-insights-reserved-keywords"></a>

A seguir, veja as palavras-chave reservadas no CloudWatch Metrics Insights. Se alguma dessas palavras estiver em um namespace, nome da métrica ou chave de rótulo em uma consulta, você deverá colocá-las entre aspas duplas. As palavras-chave reservadas não diferenciam letras maiúsculas.

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