撰寫第一個 Telemetry SQL 查詢
先選擇一個能用已知模擬資料驗證答案的問題。這個範例查詢前面入門步驟建立的 telemetry_quickstart 資料表。
檢查最近的紀錄
先查看每筆事件,再做彙總:
SELECT
timestamp_utc,
request_id,
route_template,
status_code,
latency_ms,
release,
environment
FROM telemetry_quickstart
WHERE environment = 'development'
ORDER BY timestamp_utc DESC
LIMIT 100;
找到模擬的 req_demo_001 紀錄。如果找不到,或欄位型別不正確,請回到驗證事件寫入與資料表結構。
計算請求量與錯誤率
確認原始紀錄正確後,依路由彙總:
SELECT
route_template,
COUNT(*) AS requests,
SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END) AS server_errors,
ROUND(
100.0 * SUM(CASE WHEN status_code >= 500 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0),
2
) AS server_error_pct
FROM telemetry_quickstart
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'development'
GROUP BY route_template
ORDER BY requests DESC;
分母是每個路由在同一時段內的請求量。如果之後修改查詢,加入資料表連接或補齊沒有事件的時間區間,NULLIF 可以避免除以零。
確認單位後,再查詢延遲
SELECT
route_template,
COUNT(*) AS requests,
approx_percentile_cont(0.5) WITHIN GROUP (ORDER BY latency_ms)
AS p50_latency_ms,
approx_percentile_cont(0.95) WITHIN GROUP (ORDER BY latency_ms)
AS p95_latency_ms
FROM telemetry_quickstart
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'development'
GROUP BY route_template
ORDER BY p95_latency_ms DESC;
解讀百分位數前,先確認 latency_ms 是數值,而且一律以毫秒記錄。SQL 百分位數 說明資料稀少的分組、近似函式與樣本數的注意事項。
儲存前驗證
使用一小組已知成功與失敗結果的測試資料。先手動計算預期請求數與錯誤率,再與 SQL 結果比較。
檢查四件事:
- 每筆紀錄代表一個已完成的請求。
- 決定分母是否包含重試與內部流量。
- 比較完整時間區間時,排除最新且尚未結束的區間。
- 路由範本、版本與環境使用固定格式的值。
SQL 語法正確,仍可能回答錯誤的業務問題。請將指標定義與排除條件和查詢一起儲存。
繼續
API 錯誤率範例 提供完整的資料結構、測試資料、視覺化與警示建議。想用已連接的模擬資料庫練習,請開啟 SaaS SQL 實驗室。接著閱讀建立第一個儀表板與警示。