Skip to content

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 内存。如果内存耗尽,你需要刷新页面来释放内存

基于 MIT 许可证发布。开源项目,由 Docker OSS 赞助。