콘텐츠로 건너뛰기
Telemetry
문서 찾아보기

개념 및 SQL 패턴업데이트된 2026년 7월 27일2 최소 읽기

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

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

이 페이지에서
  1. 내구성 유형을 선택하세요
  2. 결측값 이해
  3. 의미를 바꾸지 않고 진화하다

이벤트 데이터 유형 및 Null 허용 여부

Telemetry는 구조화된 이벤트에서 테이블 스키마를 추론합니다. 유연한 수집은 사전 마이그레이션 단계를 제거하지만 유용한 SQL는 여전히 안정적인 필드 의미와 유형에 따라 달라집니다.

내구성 유형을 선택하세요

식별자 및 제어된 범주에는 문자열을 사용하고, 계산할 값에는 숫자를, 실제 2가지 상태 사실에는 부울을, 특정 시점에는 타임스탬프를 사용합니다.

가치 추천 분야
기간 숫자 duration_ms
돈 숫자 정규화 금액 + 소스 통화
식별자 문자열(숫자만 포함된 경우에도 해당)
결과 success, failed 또는 timeout와 같은 제어 문자열
기능 플래그 정확히 두 가지 의미가 있는 경우 부울
이벤트 시간 timestamp_utc로 정규화된 시간대 한정 입력

한 배포에서는 일정 기간 동안 "842"를 보내고 다른 배포에서는 842를 보내지 마십시오. 한 서비스의 HTTP 코드와 다른 서비스의 워크플로 범주에 대해 status를 재사용하지 마십시오.

결측값 이해

로그 API는 정규화 중에 null 값, 빈 개체 및 빈 배열을 제거합니다. 따라서 누락된 필드는 해당 행에 값이 저장되지 않았음을 의미합니다. 이는 0, false, 빈 문자열 또는 알 수 없음을 의미하지 않습니다.

부재가 분석적으로 의미가 있는 경우 IS NULL를 사용하세요. 교체품이 방어 가능한 비즈니스 의미를 갖는 경우에만 COALESCE를 사용하십시오.

SELECT
  event_name,
  100.0 * SUM(CASE WHEN account_id IS NULL THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS missing_account_rate_pct
FROM product_events
GROUP BY event_name;

필수 필드 null-rate 레시피는 볼륨 보호 및 프로듀서 버전 컨텍스트를 추가합니다.

의미를 바꾸지 않고 진화하다

null 허용 필드 추가는 일반적으로 호환됩니다. 필드 유형을 변경하거나 기존 범주를 재정의하는 것은 아닙니다. 의미가 변경되면 새 필드 또는 schema_version를 도입하고 의도적으로 쿼리를 마이그레이션합니다.

중첩된 개체는 쿼리 가능한 점선 필드가 됩니다. 각 중첩 경로를 안정적으로 유지하고 이벤트 간에 요소 구조가 변경되는 배열을 피하세요.

프로덕션 계약을 확장하기 전에 스키마 진화, 이벤트 스키마 디자인 및 중첩 JSON 쿼리를 검토하세요.

관련 기능

안정적인 이벤트 이름, 타입이 지정된 필드, 개인 정보 보호 검토 컨텍스트를 캡처합니다.

페이지 작성자 및 참고 자료

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

문서 검토 방법