Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
80 lines
2.4 KiB
Markdown
80 lines
2.4 KiB
Markdown
---
|
||
title: SQL 引擎
|
||
sourceHash: 0387115a7372
|
||
---
|
||
|
||
# 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 内存。如果内存耗尽,你需要刷新页面来释放内存
|