

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.

# CloudTrail Restricciones de Lake SQL
<a name="query-limitations"></a>

**nota**  
AWS CloudTrail Lake dejará de estar abierto a nuevos clientes a partir del 31 de mayo de 2026. Si quieres usar CloudTrail Lake, regístrate antes de esa fecha. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [CloudTrail Cambio de disponibilidad del lago](cloudtrail-lake-service-availability-change.md).

CloudTrail Las consultas de Lake son cadenas SQL. En esta sección, se proporciona información sobre las funciones, los operadores y los esquemas compatibles.

Únicamente son compatibles sentencias `SELECT`. Ninguna cadena de consulta puede modificar o mutar los datos.

La sintaxis de CloudTrail Lake para una `SELECT` sentencia es la siguiente. Se especifica el ID del almacén de datos de eventos (la parte del ID del ARN del almacén de datos de eventos) para el valor `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 admite todas las sentencias, funciones y operadores `SELECT` SQL válidos de Trino. Para obtener más información acerca de los operadores y las funciones SQL compatibles, consulte [Funciones y operadores](https://trino.io/docs/current/functions.html) en el sitio web de documentación de Trino. 

La CloudTrail consola proporciona varios ejemplos de consultas que pueden ayudarle a empezar a escribir sus propias consultas. Para obtener más información, consulte [Consulta ejemplos de consultas con la consola CloudTrail](lake-console-queries.md).

Para obtener más información sobre cómo optimizar las consultas, diríjase a [Optimiza las consultas de CloudTrail Lake](lake-queries-optimization.md).

**Topics**
+ [Funciones, condiciones y operadores join compatibles](#query-aggregates-condition-operators)
+ [Soporte avanzado de consultas en varias tablas](#query-advanced-multi-table)

## Funciones, condiciones y operadores join compatibles
<a name="query-aggregates-condition-operators"></a>

**Funciones compatibles**

CloudTrail Lake es compatible con todas las funciones de Trino. Para obtener más información acerca de otras funciones compatibles, consulte [Funciones y operadores](https://trino.io/docs/current/functions.html) en el sitio web de documentación de Trino.

**Operadores de condición compatibles**

Se admiten los siguientes operadores de condición.

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

**Operadores join compatibles**

Se admiten los siguientes operadores `JOIN`. Para obtener más información acerca de la ejecución de consultas en varias tablas, consulte [Soporte avanzado de consultas en varias tablas](#query-advanced-multi-table).

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

## Soporte avanzado de consultas en varias tablas
<a name="query-advanced-multi-table"></a>

CloudTrail Lake admite un lenguaje de consulta avanzado en varios almacenes de datos de eventos.
+ [`UNION|UNION ALL|EXCEPT|INTERSECT`](#query-multi-table-union)
+ [`LEFT|RIGHT|INNER JOIN`](#query-multi-table-left-right)

Para ejecutar la consulta, utilice el comando **start-query** de la AWS CLI. A continuación, se presenta un ejemplo en el que se utiliza una de las consultas de muestra de esta sección.

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

La respuesta es una cadena `QueryId`. Para obtener el estado de una consulta, ejecute `describe-query` utilizando el valor `QueryId` devuelto por `start-query`. Si la consulta se realiza correctamente, se puede ejecutar `get-query-results` para obtener resultados.

### `UNION|UNION ALL|EXCEPT|INTERSECT`
<a name="query-multi-table-union"></a>

El siguiente es un ejemplo de consulta que usa `UNION` y `UNION ALL` busca eventos por su ID y nombre de evento en tres almacenes de datos de eventos EDS1, EDS2, y EDS3. Los resultados se seleccionan primero de cada almacén de datos de eventos y, a continuación, se concatenan, se ordenan por ID de evento y se limitan a diez eventos.

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

El siguiente es un ejemplo de consulta que utiliza `LEFT JOIN` para buscar todos los eventos de un almacén de datos de eventos denominado `eds2`, asignados a `edsB` y que coincidan con los de un almacén de datos de eventos principal (izquierda), `edsA`. Los eventos devueltos se producen el 1 de enero de 2020 o antes, y solo se devuelven los nombres de los eventos.

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