跳至主要內容
Telemetry
瀏覽說明文件
概念與 SQL 模式更新於 2026年7月28日由 Telemetry 編輯團隊和產品團隊審查閱讀約需 2 分鐘

讓程式設計代理使用這篇文件

開啟 Claude Code、Codex、Cursor 或其他編碼代理的集中提示包,然後將其適應此處介紹的工作流程。

本頁內容
  1. 計算結果並保護分母
  2. 慎重選擇人群
  3. 費率需要運營背景

SQL 條件聚合

條件聚合在一個分組查詢中回答了幾個相關問題。無需掃描資料表一次以獲取成功的請求,然後再次掃描資料表以獲取失敗的請求,而是將條件放入 CASE 表示式中,並將兩個結果聚合在一起。此模式對於錯誤率、轉換率、重試率、快取命中率以及分母必須保持可見的任何結果非常有用。

計算結果並保護分母

SELECT
  route_template,
  COUNT(*) AS requests,
  SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END) AS server_errors,
  100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS server_error_rate_pct
FROM api_request_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY route_template
HAVING COUNT(*) >= 20
ORDER BY server_error_rate_pct DESC;

總數、條件計數和百分比講述了故事的不同部分。總數確定了樣本量。計數顯示絕對影響。該費率使不同交通量的路線具有可比性。 NULLIF 保護比率免受零分母影響,而 100.0 將結果保留為百分比算術。

慎重選擇人群

WHERE 子句定義分組前的總體。 CASE 表示式定義該群體中的哪些行與結果匹配。這種區別很重要:排除 WHERE 中的故障可以降低錯誤率,而在分母中包含健康檢查可以使客戶流量看起來比實際情況更健康。

當每一行都應位於一個狀態桶中時,請使用互斥條件。當一行可以合法地滿足多個標籤時,請使用獨立條件。始終檢查桶的總和是否等於總數。

費率需要運營背景

兩個事件的高百分比很少相當於 200 萬個事件的相同百分比。將計數保留在結果中,使用經過審查的最小交易量規則,並比較完整的時間視窗。空狀態值、重試、重複傳遞和延遲事件也需要明確的處理。

從測試的 API 錯誤率配方事務回滾配方轉化率指南 開始。有關其他支援的語法,請參閱 DataFusion SQL 參考

相關產品功能

對結構化事件資料表執行只讀 DataFusion SQL 並重用結果。

內容責任與技術參考

Telemetry 編輯團隊負責維護本文;產品團隊審查功能行為、範例和適用範圍。

檢視編輯規範