自定义 SQL
给会写 SQL 的管理员,直接对当前项目的事件跑一条只读查询。它不是 Agent 或 OpenAPI 的入口。
谁能用
只有管理员,只能查当前项目。菜单在「事件分析 → 自定义 SQL」,非管理员看不到。
限制
| 规则 | 说明 |
|---|---|
只有一条 SELECT | 可以用 WITH。INSERT、ALTER、DROP、SYSTEM 和多条语句都会被拒绝 |
| 必须带本项目 | 语句里要有 project_id = '当前项目 ID' 的等值条件,并且值就是当前项目 |
| 只能读事件和聚合表 | evs_event 和 evs_agg_*。账号、配置等系统表一律拒绝 |
| 行数 | 默认 LIMIT 200,最多 2000 行 |
| 超时 | 30 秒 |
| 缓存 | 不走结果缓存,每次都查 ClickHouse |
被拒绝时返回 40001,提示里写明原因。每次执行都记进操作日志(SQL 截断到 500 字,不存结果)。
记得带日期
事件表按日期分区。带上 event_date 的范围,查询只扫需要的分区,快得多。
示例
页面右侧有三条示例,点击填入编辑区(⌘↵ 执行)。
evstats


按日 PV:
sql
SELECT event_date AS d, count() AS pv
FROM evs_event
WHERE project_id = '当前项目 ID'
AND event_date BETWEEN '2026-09-01' AND '2026-09-07'
AND event_type = 'track' AND event = '$pageview'
GROUP BY d
ORDER BY dTop 页面:
sql
SELECT url_path, count() AS pv, uniqExact(distinct_id) AS uv
FROM evs_event
WHERE project_id = '当前项目 ID'
AND event_date BETWEEN '2026-09-01' AND '2026-09-07'
AND event_type = 'track' AND event = '$pageview'
GROUP BY url_path
ORDER BY pv DESC
LIMIT 20某个事件的人数:
sql
SELECT uniqExact(distinct_id) AS users
FROM evs_event
WHERE project_id = '当前项目 ID'
AND event_date BETWEEN '2026-09-01' AND '2026-09-07'
AND event_type = 'track' AND event = 'signup'事件表的列:event_id、event_time、event_date、event_type、event、distinct_id、anonymous_id、login_id、is_login、url、url_path、title、referrer、referrer_host、utm_source……utm_content、ip、country、province、city、browser、os、device、lib、properties(JSON 字符串,用 JSONExtractString(properties, 'plan') 取)。
结果和导出一样来自 ClickHouse 的 FORMAT CSVWithNames,页面上是表。口径和各分析页不同时,以 指标口径 为准,例如 PV 只数 track 且 $pageview。