콘텐츠로 건너뛰기
Telemetry
문서 찾아보기
개념 및 SQL 패턴업데이트된 2026년 7월 28일Telemetry 편집 및 제품 팀의 검토2 최소 읽기

코딩 에이전트와 함께 이 문서를 사용하세요.

Claude Code, Codex, Cursor 또는 다른 코딩 에이전트에 대한 집중 프롬프트 팩을 연 다음 여기에서 다루는 워크플로에 맞게 조정하세요.

이벤트 분석을 위한 SQL 창 기능

창 함수는 결과의 각 행을 유지하면서 관련 행 전체를 계산합니다. 일반 GROUP BY는 많은 이벤트를 그룹당 한 행으로 줄입니다. 기간은 이전 값, 순위 또는 롤링 기준을 추가하면서 매일, 요청 또는 계정을 유지할 수 있습니다.

인접한 버킷 비교

WITH daily AS (
  SELECT
    date_trunc('day', timestamp_utc) AS day,
    COUNT(*) AS completed_jobs
  FROM job_events
  WHERE status = 'completed'
    AND timestamp_utc >= now() - INTERVAL '30 days'
  GROUP BY date_trunc('day', timestamp_utc)
)
SELECT
  day,
  completed_jobs,
  LAG(completed_jobs) OVER (ORDER BY day) AS previous_day_jobs,
  AVG(completed_jobs) OVER (
    ORDER BY day
    ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
  ) AS rolling_7_bucket_average
FROM daily
ORDER BY day;

LAG는 창 순서에 따라 이전 행을 읽습니다. 프레임이 있는 AVG는 롤링 7버킷 기준선을 계산합니다. 첫 번째 행에는 기여 버킷이 7개 미만이므로 전체 창이 필요한 경우 레이블을 지정하거나 억제합니다.

비교단위별 파티션

각 서비스에 독립적인 시퀀스가 ​​필요한 경우 PARTITION BY service를 추가하세요. 그렇지 않으면 이전 행이 다른 서비스에 속할 수 있습니다. 순서 열도 결정적이어야 합니다. 두 이벤트가 타임스탬프를 공유하는 경우 안정적인 식별자를 타이 브레이커로 추가하세요.

ROW_NUMBER는 논리 키당 하나의 이벤트를 선택하는 데 유용합니다.

ROW_NUMBER() OVER (
  PARTITION BY delivery_id
  ORDER BY timestamp_utc DESC, event_id DESC
) AS newest_rank

외부 쿼리에서 newest_rank = 1로 필터링합니다. 패턴을 사용하기 전에 "최신" 또는 "처음 승인"이 올바른 비즈니스 규칙인지 결정하세요.

Windows는 누락된 시간 버킷, 중복된 소스 이벤트 또는 모호한 행 단위를 복구하지 않습니다. 기간별 변화를 해석하기 전에 해당 조건을 검증하십시오. ID 규칙은 SQL 중복 제거를 읽고 Telemetry에서 테스트한 창 구문은 DataFusion SQL 참조를 읽어보세요.

관련 제품 기능

구조화된 이벤트 테이블에 대해 읽기 전용 DataFusion SQL을 실행하고 결과를 재사용합니다.

소유권 및 기술 참조

이 설명은 Telemetry 편집팀의 소유입니다. 제품 팀은 동작, 예시, 경계를 검토합니다.

편집 기준 검토