이벤트 계약
쿼리가 예상하는 필드
| 필드 | 유형 | 그것이 존재하는 이유 |
|---|---|---|
| timestamp_utc | Timestamp | 처리 시도가 종료된 시간입니다. |
| delivery_id | Utf8 | 재시도 시도에 의해 공유되는 안정적인 식별자입니다. |
| provider | Utf8 | 웹훅 제공자. |
| event_type | Utf8 | 제공자 이벤트 유형. |
| attempt | Int64 | 1 기반 처리 시도. |
| status | Utf8 | 성공, 실패 또는 중복 제거. |
DataFusion SQL
쿼리 복사
sql
WITH delivery_outcomes AS (
SELECT
delivery_id,
provider,
event_type,
MAX(attempt) AS attempts,
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed_attempts,
SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS successful_attempts,
SUM(CASE WHEN status = 'deduplicated' THEN 1 ELSE 0 END) AS deduplicated_attempts
FROM webhook_deliveries
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY delivery_id, provider, event_type
)
SELECT
provider,
event_type,
COUNT(*) AS deliveries,
SUM(CASE
WHEN failed_attempts > 0 AND successful_attempts > 0 THEN 1 ELSE 0
END) AS recovered,
SUM(CASE
WHEN failed_attempts > 0 AND successful_attempts = 0 THEN 1 ELSE 0
END) AS permanent_failures,
SUM(deduplicated_attempts) AS duplicates_suppressed
FROM delivery_outcomes
GROUP BY provider, event_type
ORDER BY permanent_failures DESC, recovered DESC;이 읽기 전용 쿼리는 빈 유형의 테이블에 대해 계획되고 실행됩니다. 아파치 DataFusion 45.2.0. 결정론적 샘플 출력은 합성되어 별도로 검토됩니다. 자신의 데이터에 대해 필드 유형, 임계값 및 비즈니스 정의를 검증합니다. 테스트 방법론을 읽어보세요.
쿼리 결과
웹훅 이벤트로 인한 영구 실패
복구된 이벤트는 영구적인 고객 영향으로 계산되지 않고 계속 표시됩니다.
invoice.payment_succeeded
1
comparison 1
push
0
comparison 1
| provider | event_type | deliveries | recovered | permanent_failures | duplicates_suppressed |
|---|---|---|---|---|---|
| stripe | invoice.payment_succeeded | 4 | 1 | 1 | 1 |
| github | push | 3 | 1 | 0 | 1 |
합성 예제 출력. 운영 결정에 사용하기 전에 자체 이벤트 스키마 및 임계값에 대해 쿼리를 실행하세요.
예제 재현
공공 픽스처 다운로드
JSON 번들은 타입이 지정된 이벤트 계약을 포함합니다. reproducible 입력 행, 정확한 SQL, 예상 출력, 검토 참고 사항 및 엔진 버전. CSV에는 표시된 결과가 포함됩니다.
SQL 작동 방식
- 1첫 번째 CTE는 단일 전달에 대한 모든 시도를 단일 결과 기록으로 축소합니다.
- 2복구된 전송에는 적어도 한 번의 실패한 시도와 적어도 한 번의 성공적인 시도가 있습니다. 영구적인 실패는 성공을 기록하지 못했습니다.
- 3올바른 멱등성은 처리 실패가 아니라 정상적인 결과이므로 중복 억제는 별도로 추적됩니다.
결정해야 할 극단적인 경우
- 재시도를 안정적으로 그룹화할 수 있도록 공급자 배달 ID를 유지합니다.
- 쿼리 창 이후에 배달이 복구될 수 있습니다. 공급자의 재시도 일정을 포괄할 수 있을 만큼 긴 기간을 사용하세요.
- 성공하려면 공급자를 승인하는 것 이상이 필요한 경우 다운스트림 부작용과 영수증을 분리하세요.
추천 대시보드
- 그룹화된 막대: event_type에 의해 복구 및 permanent_failures
- 통계: 중복 억제율
- 표: 다운스트림 작업 컨텍스트의 최신 영구 실패
레시피를 활용해 보세요
관련 계측 및 가이드
소스 데이터 정의
이 분석을 위한 이벤트 스키마
분석 계속하기
실제 이벤트에서 실행
테이블을 만들고, 필드를 조정하고, 결과를 저장하세요.
무료로 시작하고, 구조화된 이벤트를 보내고, 쿼리 결과를 차트, 공유 대시보드 위젯 또는 알림 입력으로 사용하세요.