活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 导航完成时间。 |
| destination_route | Utf8 | 稳定的目的地路由模板。 |
| release | Utf8 | 前端版本标识符。 |
| duration_ms | Float64 | 从导航开始到就绪状态的时间。 |
| status | Utf8 | 成功、失败或放弃。 |
DataFusion SQL
复制查询
sql
SELECT
destination_route,
release,
COUNT(*) AS navigations,
approx_percentile_cont(duration_ms, 0.50) AS p50_ms,
approx_percentile_cont(duration_ms, 0.95) AS p95_ms,
100.0 * SUM(CASE WHEN status <> 'success' THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS unsuccessful_pct
FROM frontend_navigation_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY destination_route, release
HAVING COUNT(*) >= 50
ORDER BY p95_ms DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
p95 客户端导航延迟
报告导航的尾部更宽,不成功的份额也更高。
/reports/:id
3,210 ms
comparison 780 ms
/projects/:id
1,480 ms
comparison 410 ms
| destination_route | release | navigations | p50_ms | p95_ms | unsuccessful_pct |
|---|---|---|---|---|---|
| /reports/:id | web-103 | 640 | 780 | 3,210 | 3.13 |
| /projects/:id | web-103 | 1,820 | 410 | 1,480 | 1.21 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1完成边界应该表示特定于路由的就绪状态,而不仅仅是 URL 更改。
- 2p50 和 p95 将一般缓慢的路线与间歇性长尾区分开来。
- 3失败和放弃的导航与延迟并存,因此快速故障无法使性能看起来健康。
需要决定的边缘情况
- 预取会更改持续时间中包含的工作。
- 后台选项卡会扭曲浏览器计时,应进行分类。
- 使用路由模板而不是标识符或查询字符串。
推荐仪表板
- 分组条:按路线划分的 p50_ms 和 p95_ms
- 趋势:p95_ms(按版本)
- 表:最慢的安全导航示例
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。