使用 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')
在每個應排隊的查詢中使用相同的原點。
處理不完整和空的桶
最新的儲存桶通常是不完整的。將其從比較中排除或清楚地標記。對於警示,在判斷最後完成的間隔之前考慮攝取延遲。
聚合僅返回包含行的儲存桶。缺失點可能意味著零活動、延遲攝取或查詢間隙;這些解釋不可互換。如果視覺化用零填充空白,請明確該轉換並確認零在語義上是正確的。
選擇足夠大的儲存桶以產生穩定的容量,但又足夠小以支援回應。五分鐘的時間段可以揭露一個事件;每日儲存桶通常更有助於保留。有關完整範例,請參閱 使用時間戳、事件回應指南 和 滾動錯誤率配方。