Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
OpenSearch Lenguaje de consulta estructurado (SQL)
Esta sección contiene una introducción básica a la consulta de CloudWatch registros mediante OpenSearch SQL. Ofrece una opción que es conocida si se está acostumbrado a trabajar con bases de datos relacionales. OpenSearch SQL ofrece un subconjunto de funciones de SQL, lo que lo convierte en una buena opción para realizar consultas ad hoc y tareas de análisis de datos. Con OpenSearch SQL, puede usar comandos como SELECT, FROM, WHERE, GROUP BY, HAVING y varios otros comandos y funciones de SQL. Puede ejecutar JOINs en grupos de registros, correlacionar datos entre grupos de registros mediante subconsultas y utilizar el amplio conjunto de funciones JSON, matemáticas, de cadenas, condicionales y otras funciones de SQL para realizar análisis eficaces de los datos de registro y de seguridad.
Se usa filterIndex para devolver solo datos indexados, mediante el forzado de una consulta a analizar solo los grupos de registros que están indexados en un campo que se especifique en la consulta. Reduzca el volumen escaneado omitiendo los grupos de registros que no tienen eventos de registro que contengan el campo especificado en la consulta y escaneando únicamente los grupos de registro que coincidan con el valor especificado en la consulta para este índice de campos. Se utiliza filterIndex para especificar el nombre del campo, junto con el nombre y el valor del campo para consultar únicamente los datos indexados que contienen el campo y el valor especificados.
Puede usar OpenSearch SQL para consultas de grupos de registros de la clase de registro estándar. SQL también admite consultas mediante el nombre y el tipo de fuente de datos.
nota
En la siguiente tabla se enumeran los comandos y funciones de SQL compatibles con CloudWatch los registros. Para obtener información sobre todos los comandos de OpenSearch SQL, incluida la sintaxis, consulte los comandos de SQL compatibles en la Guía para desarrolladores de OpenSearch servicios.
Para obtener información sobre otros lenguajes de consulta que puede utilizar, consulte CloudWatch Logs Insights, OpenSearch Service PPL y CloudWatch Metrics Insights.
Comandos SQL compatibles
nota
En la columna de comandos de la consulta de muestra, reemplace según sea necesario en función del origen de datos que esté consultando. <logGroup>
| Comando o función | Consulta de ejemplo | Description (Descripción) |
|---|---|---|
|
SELECT |
|
Muestra los valores proyectados. |
|
FROM |
|
Cláusula integrada que especifica las tablas o las vistas de origen desde las que se van a recuperar los datos y admite varios tipos de uniones y subconsultas. |
|
WHERE |
|
Filtra los eventos del registro en función de los criterios de campo proporcionados. |
|
filterIndex |
|
Devuelve únicamente datos indexados, obligando a la consulta a analizar únicamente los grupos de registros que están indexados en un campo que se especifique en la consulta. |
|
GROUP BY |
|
Los grupos registran los eventos según la categoría y encuentran el promedio en función de las estadísticas. |
|
HAVING |
|
Filtra los resultados en función de las condiciones de agrupación. |
|
ORDER BY |
|
Ordena los resultados en función de los campos de la cláusula ORDER BY. Puede especificar un orden tanto ascendente como descendente. |
|
JOIN |
|
Une los resultados de dos tablas en función de los campos en común. Debe especificarse Inner JOIN o Left Outer Join |
|
LIMIT |
|
Limita los resultados de la consulta a las N primeras filas. |
|
Funciones de cadena |
|
Funciones integradas en SQL que pueden manipular y transformar cadenas y datos de texto en consultas SQL. Por ejemplo, convertir mayúsculas y minúsculas, combinar cadenas, extraer partes y limpiar el texto. |
|
Funciones de datos |
|
Funciones integradas para administrar y transformar los datos de fecha y hora en las consultas de SQL. Por ejemplo, date_add, date_format, datediff y current_date. |
|
Funciones condicionales |
|
Funciones integradas que realizan acciones en función de condiciones específicas o que evalúan las expresiones de forma condicional. Por ejemplo, CASE e IF. |
|
Funciones de agregación |
|
Funciones integradas que realizan cálculos en varias filas para generar un único valor resumido. Por ejemplo, SUM, COUNT, AVG, MAX y MIN. |
|
Funciones JSON |
|
Funciones integradas para analizar, extraer, modificar y consultar datos con formato JSON en consultas SQL (por ejemplo, from_json, to_json, get_json_object, json_tuple) que permiten manipular las estructuras JSON en los conjuntos de datos. |
|
Funciones de matriz |
|
Funciones integradas para trabajar con columnas de tipo matriz en consultas SQL, lo que permite realizar operaciones como acceder, modificar y analizar los datos de la matriz (p. ej., size, explode, array_contains). |
|
Funciones de ventana |
|
Funciones integradas que realizan cálculos en un conjunto específico de filas relacionadas con la fila (ventana) actual, lo que permite realizar operaciones como la clasificación, los totales acumulados y los promedios móviles. Por ejemplo, ROW_NUMBER, RANK, LAG y LEAD |
|
Funciones de conversión |
|
Funciones integradas para convertir datos de un tipo a otro en las consultas SQL, lo que permite la transformación de los tipos de datos y las conversiones de formato. Por ejemplo, CAST, TO_DATE, TO_TIMESTAMP y BINARY. |
|
Funciones de predicados |
|
Funciones integradas que evalúan las condiciones y devuelven valores booleanos (verdadero/falso) en función de criterios o patrones específicos. Por ejemplo, IN, LIKE, BETWEEN, IS NULL y EXISTS. |
|
Selección de varios grupos de registros |
|
Permite la especificación de varios grupos de registros en una sentencia SELECT |
|
Seleccione varias fuentes de datos |
|
Le permite especificar varias fuentes de datos en una sentencia SELECT |
SQL compatible para multi-log-group las consultas
Para respaldar el caso de uso de la consulta de varios grupos de registros en SQL, puede usar el comando logGroups. Con esta sintaxis, puede consultar varios grupos de registros al especificarlos en el comando FROM.
Sintaxis:
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
En esta sintaxis, puede especificar hasta 50 grupos de registros en el parámetro logGroupIdentifier. Para hacer referencia a los grupos de registros de una cuenta de supervisión, ARNs utilícelo en lugar de LogGroup nombres.
Consulta de ejemplo:
SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'
La siguiente sintaxis, que incluye varios grupos de registros después de la FROM sentencia, NO se admite al consultar CloudWatch los registros.
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
SQL compatible para consultas de fuentes de datos
Para respaldar el caso de uso de la consulta de fuentes de datos en SQL, puede usar el comando DataSource. Con esta sintaxis, puede consultar las fuentes de datos especificándolas en el comando. FROM Puede especificar hasta 10 fuentes de datos.
Sintaxis
`dataSource( ['DataSource1', 'DataSource2', ...'DataSourcen'] )`
Ejemplo de consulta
SELECT DS1.Column1, DS1.Column2 from `dataSource( ['DataSource1', 'DataSource2'] )` as DS1 WHERE DS1.Column1 = 'ABC'
Alcance de la consulta
En la API AWS CLI y, puede especificar qué registros consultar mediante el grupo de registros, la fuente y el tipo de datos y los índices de campo.
Grupo de registros
La selección de fuentes de los grupos de registros se puede utilizar cuando los clientes saben en qué grupos de registros exactos deben buscarse
SELECT * FROM `logGroups(logGroupIdentifier: ['/aws/lambda/my-function'])`;
Fuente y tipo de datos
Los clientes pueden consultar sus registros mediante el nombre y el tipo de fuente de datos.
La selección de fuentes basada en la fuente y el tipo de datos se puede utilizar cuando los clientes saben qué fuentes de datos exactas deben consultarse. Esta consulta se ejecuta en uno o más grupos de registros que contienen la fuente y el tipo de datos especificados.
Para respaldar el caso de uso de la consulta de fuentes de datos en SQL, puede usar el comando DataSource. Con esta sintaxis, puede consultar las fuentes de datos especificándolas en el comando FROM. Puede especificar hasta 10 fuentes de datos.
Sintaxis:
`dataSource( ['DataSource1.Type1', 'DataSource2.Type2', ...'DataSourcen.Typen'] )`
Consulta de ejemplo:
SELECT DS1.Column1, DS1.Column2 from `dataSource( ['DataSource1.Type1', 'DataSource2.Type2'] )` as DS1 WHERE DS1.Column1 = 'ABC'
Para obtener más información sobre las consultas por fuentes de datos, consulteUtilice facetas para agrupar y explorar los registros.
Ejemplo combinado
Los clientes pueden especificar todos los operadores de selección de fuentes dentro de las comillas invertidas en cualquier orden y los resultados se basarán en la intersección de todas las condiciones aplicadas.
Por ejemplo,/aws/lambda/my-function-1 puede contener varios tipos y fuentes de datos, incluidos una amplia variedad de índices. Cuando se ejecutó la siguiente consulta, los resultados devueltos solo incluirán eventos de origen y tipo DataSource 1.Type1 que coincidan con el criterio de «estado» = 200.
SELECT * FROM ` logGroups(logGroupIdentifier: ['/aws/lambda/my-function']) filterIndex('status' = 200) dataSource(['DataSource1.Type1']) `;
Índices de campo
La selección de fuentes basada en índices de campos identifica automáticamente los grupos de registros relevantes cuando los filtros se centran en los campos indexados, lo que reduce el volumen de digitalización y el tiempo de ejecución de las consultas.
Se usa filterIndex para devolver solo datos indexados, mediante el forzado de una consulta a analizar solo los grupos de registros que están indexados en un campo que se especifique en la consulta. Para los grupos de registros que están indexados en este campo, se optimiza aún más la consulta al omitir los grupos de registros que no tienen ningún evento de registro que contenga el campo especificado en la consulta del campo indexado. Se reduce aún más el volumen analizado al intentar analizar solo los eventos de registro de estos grupos de registros que coincidan con el valor especificado en la consulta para este índice de campos. Para obtener más información sobre los índices de campos y cómo crearlos, consulte Crear índices de campos para mejorar el rendimiento de las consultas y reducir el volumen de digitalización.
En SQL, FilterIndex se usa para especificar qué pares de valores clave deben tratarse como índices. La sintaxis es la siguiente
SELECT * FROM `filterIndex('region' = 'us-east-1')`;
donde,
-
FilterIndex (...) especifica y trata los valores clave que contienen como índices de campo. Cada par de valores clave está separado por una coma (ejemplo siguiente)
-
'region' = 'us-east-1' especifica la condición real que debe aplicarse
-
Nota: En lugar de =, los clientes pueden usar IN para especificar varios valores (ejemplo siguiente)
-
El uso de varios FilterIndex combinaría las condiciones utilizando «AND». En el ejemplo, se consultarían los registros que coincidan con el estado = 200 y la región en us-east-1 o us-west-2.
SELECT * FROM `filterIndex('status' = 200, 'region' IN ['us-east-1', 'us-west-2'])`;
Restricciones
Las siguientes restricciones se aplican cuando se utiliza SQL para realizar consultas en Logs Insights. OpenSearch CloudWatch
-
Solo se puede usar una JOIN en una sentencia SELECT.
-
No puede usar JOIN ni subconsultas con consultas de fuentes de datos.
-
Solo se admite un nivel de subconsultas anidadas.
-
No se admiten consultas de varias sentencias separadas por punto y coma (;).
-
No se admiten consultas que contengan nombres de campo idénticos pero que solo difieran en mayúsculas y minúsculas (como field1 y FIELD1).
Por ejemplo, no se admite la siguiente consulta.
Select AWSAccountId, AwsAccountId from LogGroupSin embargo, se admite la siguiente consulta porque el nombre del campo (
@logStream) es idéntico en ambos grupos de registros:Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id -
Las funciones y expresiones deben funcionar con los nombres de los campos y formar parte de una sentencia SELECT con un grupo de registros especificado en la cláusula FROM.
Por ejemplo, no se admite esta consulta:
SELECT cos(10) FROM LogGroupSe admite esta consulta:
SELECT cos(field1) FROM LogGroup -
Cuando utilice comandos SQL o PPL, encierre determinados campos entre comillas invertidas para consultarlos correctamente. Las comillas simples son necesarias para los campos con caracteres especiales (no alfabéticos ni numéricos). Por ejemplo, incluya
@message,Operation.ExportyTest::Fieldentre comillas simples. No es necesario incluir los campos con nombres exclusivamente alfabéticos entre comillas simples.Ejemplo de consulta con campos sencillos:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;Consulta similar con comillas invertidas agregadas:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;