이벤트 데이터에 대한 SQL 시간 버킷팅
시간 버케팅은 개별 이벤트를 추세로 전환합니다. 중요한 선택은 시간 대 날짜뿐만 아니라 일관된 타임스탬프, 시간대, 간격 경계, 완전성 규칙 및 누락된 버킷에 대한 처리도 필요합니다. 전체 시간을 현재 시간의 처음 3분과 비교하면 차트가 신뢰할 수 있는 것처럼 보일 수 있습니다.
안정적인 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는 5분과 같은 고정 간격에 유용합니다.
date_bin(INTERVAL '5 minutes', timestamp_utc, TIMESTAMP '1970-01-01')
정렬되어야 하는 모든 쿼리에 동일한 원본을 사용합니다.
불완전하고 빈 버킷 처리
최신 버킷은 일반적으로 불완전합니다. 비교에서 제외하거나 명확하게 표시하십시오. 알림의 경우 마지막으로 완료된 간격을 판단하기 전에 수집 지연을 허용하십시오.
집계는 행이 포함된 버킷만 반환합니다. 누락된 지점은 활동 없음, 수집 지연 또는 쿼리 공백을 의미할 수 있습니다. 이러한 해석은 서로 바꿔 사용할 수 없습니다. 시각화가 공백을 0으로 채우는 경우 해당 변환을 명시적으로 만들고 0이 의미상 올바른지 확인하세요.
안정적인 볼륨을 생성할 만큼 충분히 크지만 반응을 지원할 만큼 작은 버킷을 선택하십시오. 5분 버킷을 사용하면 사고가 노출될 수 있습니다. 일일 버킷이 보존에 더 좋은 경우가 많습니다. 전체 예시는 타임스탬프 작업, 사고 대응 가이드 및 롤링 오류율 레시피를 참조하세요.