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

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

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

구조적 이벤트를 위한 SQL 중복 제거

중복 제거는 SQL 문제이기 이전에 비즈니스 정의 문제입니다. 유사해 보이는 두 개의 이벤트는 중복된 배달, 의도적인 재시도 또는 두 개의 유효한 사용자 작업을 나타낼 수 있습니다. 논리적 이벤트 또는 전달에 대한 소스 생성 식별자로 시작합니다. 프로듀서 계약에서 조합이 고유하다고 보장하지 않는 한 타임스탬프와 메시지 문자열에서 ID를 추론하지 마세요.

각 안정적인 식별자에 대해 하나의 행을 선택하세요.

WITH ranked AS (
  SELECT
    event_id,
    account_id,
    event_name,
    timestamp_utc,
    received_at,
    ROW_NUMBER() OVER (
      PARTITION BY event_id
      ORDER BY received_at ASC
    ) AS delivery_rank
  FROM product_events
  WHERE timestamp_utc >= now() - INTERVAL '7 days'
)
SELECT
  account_id,
  event_name,
  timestamp_utc
FROM ranked
WHERE delivery_rank = 1;

이 버전은 처음 받은 사본을 유지합니다. 대신 상태 동기화 테이블이 최신 레코드를 유지할 수 있습니다. 순서를 변경하면 결과의 의미가 변경되므로 선택 항목을 쿼리 옆에 적어 두세요.

중복된 항목을 제거하기 전에 측정하세요.

원시 행, 고유 식별자 및 둘 이상의 전달이 포함된 식별자를 계산합니다. 해당 차원에서 소스를 식별할 수 있는 경우 프로듀서, SDK 버전, 릴리스 또는 제공 경로별로 결과를 분류합니다. 중복 제거 CTE는 증가하는 수집 문제를 숨기면서 다운스트림 대시보드를 올바르게 만들 수 있습니다.

account_idevent_name에서만 중복을 제거하지 마십시오. 하나의 계정으로 동일한 작업을 합법적으로 여러 번 완료할 수 있습니다. 마찬가지로, 제품 전환이 최종 성공적인 결과만 계산하더라도 신뢰성이 문제인 경우 재시도는 유효한 분석 이벤트가 될 수 있습니다.

늦은 이벤트에는 제한된 수정 기간이 필요합니다. 보고서를 내보낸 후 도착하는 중복으로 인해 최종 개수가 변경될 수 있으므로 보고 기준 및 결과가 잠정인지 여부를 기록합니다.

이벤트 ID 중복 레시피를 사용하여 소스 중복을 정량화하고 창 기능을 사용하여 순위 연산을 이해합니다. 이벤트 스키마 가이드에서는 규칙을 감사 가능하게 만드는 식별자를 추가하는 방법을 설명합니다.

관련 제품 기능

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

소유권 및 기술 참조

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

편집 기준 검토