Skip to content

Motor SQL

El motor SQL es una herramienta potente que te permite ejecutar consultas SQL sobre tus datos. Está pensado para que quien ya conoce SQL pueda trabajar con sus datos en un lenguaje familiar.

Esta función está en fase beta y está disponible para todos los usuarios. Si tienes comentarios o sugerencias, cuéntanoslo.

Primeros pasos

Para empezar a usar el motor SQL necesitas un conjunto de datos que consultar. Solo se pueden consultar logs en JSON. Dozzle aprovecha WebAssembly para ejecutar las consultas SQL en el navegador, así que tus datos nunca salen de tu máquina.

Para empezar, asegúrate de tener logs en JSON, abre el desplegable y elige SQL Analytics. También hay un atajo de teclado, Ctrl+Shift+F (o Cmd+Shift+F en macOS), para abrir el motor SQL rápidamente.

¿Cómo funciona?

El motor SQL usa WebAssembly para ejecutar consultas SQL en el navegador con DuckDB. La primera vez que se abre, DuckDB WASM se descarga e inicializa en el navegador. Esto puede tardar si tu conexión es lenta. Después el motor SQL lee solo los logs en JSON y crea una tabla virtual en DuckDB. Así puedes consultar tus datos en tiempo real.

La consulta que Dozzle ejecuta al principio es parecida a esta:

sql
CREATE TABLE logs AS SELECT unnest(m) FROM 'logs.json'

Esta consulta crea una tabla llamada logs y expande los logs en JSON en filas. A partir de ahí puedes lanzar consultas SQL sobre esa tabla para analizar tus datos.

Consultas de ejemplo

Estas son algunas consultas que puedes ejecutar con el motor SQL:

Contar el número de logs

sql
SELECT COUNT(*) FROM logs

Filtrar logs por un campo concreto

sql
SELECT * FROM logs WHERE level = 'error'

Agrupar logs por un campo concreto

sql
SELECT level, COUNT(*) FROM logs GROUP BY level

Consultar campos JSON anidados

sql
SELECT message.path, message.status, message.duration
FROM logs
WHERE message.status >= 400
ORDER BY message.duration DESC

Agregar por ventana temporal

sql
SELECT
  date_trunc('minute', timestamp) AS minute,
  COUNT(*) AS error_count
FROM logs
WHERE level = 'error'
GROUP BY minute
ORDER BY minute DESC

Limitaciones

WebAssembly tiene algunas limitaciones que conviene tener en cuenta al usar el motor SQL:

  • El motor SQL solo admite datos estructurados, como JSON
  • El motor SQL solo puede ejecutar consultas en el navegador. Es decir, no puedes lanzar consultas que necesiten acceder a recursos o bases de datos externas
  • El motor SQL puede usar como máximo 4 GB de memoria. Si te quedas sin memoria, tendrás que recargar la página para liberarla

Publicado bajo la licencia MIT. Código abierto y patrocinado por Docker OSS.