跳转到内容
Telemetry
浏览文档
概念与 SQL 模式更新于 2026年7月28日由 Telemetry 编辑团队和产品团队审核阅读约需 2 分钟

让编程智能体使用这篇文档

打开 Claude Code、Codex、Cursor 或其他编码代理的集中提示包,然后将其适应此处介绍的工作流程。

使用 SQL 对事件数据进行时间分桶

时间桶将个别事件变成趋势。重要的选择不仅仅是小时与天:您还需要一致的时间戳、时区、间隔边界、完整性规则以及对丢失桶的处理。将一整小时与当前小时的前三分钟进行比较时,图表看起来可能具有权威性。

构建稳定的UTC系列

SELECT
  date_trunc('hour', timestamp_utc) AS hour,
  COUNT(*) AS requests,
  100.0 * SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS error_rate_pct
FROM api_request_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY date_trunc('hour', timestamp_utc)
ORDER BY hour;

使用服务器管理的 timestamp_utc 字段作为查询边界。当源时间戳描述另一个业务时刻时(例如移动客户端开始离线操作时),请将源时间戳保留为单独的字段。如果仪表板正常运行,UTC 可以避免夏令时间隙和重复的当地时间。

date_trunc 是日历对齐小时和日期的最简单选择。 date_bin 对于固定间隔(例如五分钟)很有用:

date_bin(INTERVAL '5 minutes', timestamp_utc, TIMESTAMP '1970-01-01')

在每个应排队的查询中使用相同的原点。

处理不完整和空的桶

最新的存储桶通常是不完整的。将其从比较中排除或清楚地标记。对于告警,在判断最后完成的间隔之前考虑摄取延迟。

聚合仅返回包含行的存储桶。缺失点可能意味着零活动、延迟摄取或查询间隙;这些解释不可互换。如果可视化用零填充空白,请明确该转换并确认零在语义上是正确的。

选择足够大的存储桶以产生稳定的容量,但又足够小以支持响应。五分钟的时间段可以揭露一个事件;每日存储桶通常更有助于保留。有关完整示例,请参阅 使用时间戳事件响应指南滚动错误率配方

相关产品功能

对结构化事件表运行只读 DataFusion SQL 并重用结果。

内容责任与技术参考

Telemetry 编辑团队负责维护本文;产品团队审核功能行为、示例和适用范围。

查看编辑规范