-- 최근 1시간 주요 지표 요약
SELECT
COUNT(*) AS total_requests,
ROUND(AVG(execution_time_ms), 0) AS avg_latency_ms,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY execution_time_ms) AS p95_latency_ms,
ROUND(SUM(CASE WHEN status_code != 200 THEN 1 ELSE 0 END)
* 100.0 / COUNT(*), 2) AS error_rate_pct
FROM catalog.schema.agent_logs_payload
WHERE timestamp >= CURRENT_TIMESTAMP() - INTERVAL 1 HOUR;
-- 토큰 사용량 및 비용 추정 (일별)
SELECT
DATE(timestamp) AS date,
SUM(response:usage:prompt_tokens) AS total_input_tokens,
SUM(response:usage:completion_tokens) AS total_output_tokens,
-- Claude 3.5 Sonnet 기준 예시 단가 적용
ROUND(SUM(response:usage:prompt_tokens) / 1e6 * 3.0 +
SUM(response:usage:completion_tokens) / 1e6 * 15.0, 2) AS estimated_cost_usd
FROM catalog.schema.agent_logs_payload
WHERE status_code = 200
GROUP BY DATE(timestamp)
ORDER BY date DESC;
-- 드리프트 감지: 응답 길이 분포 변화
SELECT
DATE_TRUNC('hour', timestamp) AS hour,
AVG(LENGTH(response:choices[0]:message:content::STRING)) AS avg_response_length,
STDDEV(LENGTH(response:choices[0]:message:content::STRING)) AS stddev_response_length
FROM catalog.schema.agent_logs_payload
GROUP BY DATE_TRUNC('hour', timestamp)
ORDER BY hour DESC;