SQL 引擎
SQL 引擎是一个强大的工具,让你可以对自己的数据运行 SQL 查询。它面向熟悉 SQL、希望用熟悉的语言操作数据的用户,提供顺畅的使用体验。
该功能目前处于 beta 阶段,所有用户都可以使用。如果你有任何反馈或建议,欢迎告诉我们!
快速开始
要开始使用 SQL 引擎,你需要有可供查询的数据集。只有 JSON 日志才能用 SQL 查询。Dozzle 借助 WebAssembly 在浏览器中运行 SQL 查询,也就是说你的数据永远不会离开你的机器。
要开始使用 SQL 引擎,请确认你有 JSON 日志,然后打开下拉菜单并选择 SQL Analytics。也可以使用快捷键 Ctrl+Shift+F(macOS 上是 Cmd+Shift+F)快速打开 SQL 引擎。
它是如何工作的?
SQL 引擎使用 WebAssembly 在浏览器中通过 DuckDB 运行 SQL 查询。首次打开 SQL 引擎时,DuckDB WASM 会被下载并在浏览器中初始化。如果你的网络较慢,这可能需要一些时间。随后 SQL 引擎_只_读取 JSON 日志,并在 DuckDB 中创建一张虚拟表,从而让你可以实时地对数据运行 SQL 查询。
Dozzle 最初运行的查询类似于:
sql
CREATE TABLE logs AS SELECT unnest(m) FROM 'logs.json'这个查询会创建一张名为 logs 的表,并把 JSON 日志展开成行。之后你就可以对这张表运行 SQL 查询来分析数据。
查询示例
下面是一些可以在 SQL 引擎中运行的查询示例:
统计日志条数
sql
SELECT COUNT(*) FROM logs按某个字段过滤日志
sql
SELECT * FROM logs WHERE level = 'error'按某个字段分组
sql
SELECT level, COUNT(*) FROM logs GROUP BY level查询嵌套的 JSON 字段
sql
SELECT message.path, message.status, message.duration
FROM logs
WHERE message.status >= 400
ORDER BY message.duration DESC按时间窗口聚合
sql
SELECT
date_trunc('minute', timestamp) AS minute,
COUNT(*) AS error_count
FROM logs
WHERE level = 'error'
GROUP BY minute
ORDER BY minute DESC限制
WebAssembly 有一些限制,使用 SQL 引擎时需要注意:
- SQL 引擎只支持 JSON 之类的结构化数据
- SQL 引擎只能在浏览器中运行查询,因此无法运行需要访问外部资源或数据库的查询
- SQL 引擎最多只能使用 4GB 内存。如果内存耗尽,你需要刷新页面来释放内存