콘텐츠로 건너뛰기
Telemetry
수익 및 청구 SQL 레시피

결제 실패 복구 측정

실패한 송장이 나중에 성공적인 결제 시도로 복구되는 빈도를 계산합니다.

중급invoice_events검토됨 2026-07-27테스트됨 아파치 DataFusion 45.2.0

검토자 Telemetry 제품 팀 . SQL 호환성, 이벤트 계약, 합성 출력 및 운영상의 주의사항. 표준 및 소유권 검토

질문에 답변됨

어떤 결제 실패가 복구되고, 얼마나 많은 수익이 위험에 노출되나요?

결제 실패를 계산하는 것만으로도 지속적인 수익 위험이 과장됩니다. 복구 분석은 이후 시도를 통해 송장을 추적하고 위험 금액을 보존합니다.

이벤트 계약

쿼리가 예상하는 필드

필드유형그것이 존재하는 이유
timestamp_utcTimestamp송장 이벤트 시간입니다.
invoice_idUtf8안정적인 공급자 송장 식별자입니다.
event_nameUtf8invoice_payment_failed 또는 invoice_paid.
amount_usdFloat64정규화된 송장 금액.
failure_typeUtf8안전 분류된 실패 이유.
DataFusion SQL

쿼리 복사

sql
WITH failures AS (
  SELECT
    invoice_id,
    MIN(timestamp_utc) AS first_failed_at,
    MAX(amount_usd) AS amount_usd,
    MIN(failure_type) AS failure_type
  FROM invoice_events
  WHERE event_name = 'invoice_payment_failed'
    AND timestamp_utc >= now() - INTERVAL '60 days'
  GROUP BY invoice_id
),
recoveries AS (
  SELECT
    invoice_id,
    MIN(timestamp_utc) AS recovered_at
  FROM invoice_events
  WHERE event_name = 'invoice_paid'
  GROUP BY invoice_id
)
SELECT
  failures.failure_type,
  COUNT(*) AS failed_invoices,
  SUM(CASE
    WHEN recoveries.recovered_at > failures.first_failed_at THEN 1
    ELSE 0
  END) AS recovered_invoices,
  100.0 * SUM(CASE
    WHEN recoveries.recovered_at > failures.first_failed_at THEN 1
    ELSE 0
  END) / NULLIF(COUNT(*), 0) AS recovery_rate_pct,
  SUM(CASE
    WHEN recoveries.recovered_at IS NULL THEN failures.amount_usd
    ELSE 0.0
  END) AS unrecovered_amount_usd
FROM failures
LEFT JOIN recoveries
  ON recoveries.invoice_id = failures.invoice_id
GROUP BY failures.failure_type
ORDER BY unrecovered_amount_usd DESC;

이 읽기 전용 쿼리는 빈 유형의 테이블에 대해 계획되고 실행됩니다. 아파치 DataFusion 45.2.0. 결정론적 샘플 출력은 합성되어 별도로 검토됩니다. 자신의 데이터에 대해 필드 유형, 임계값 및 비즈니스 정의를 검증합니다. 테스트 방법론을 읽어보세요.

쿼리 결과

실패유형별 결제회수율

인증이 필요한 오류는 복구 빈도가 가장 낮고 의미 있는 수익 위험을 유지합니다.

failure_typefailed_invoicesrecovered_invoicesrecovery_rate_pctunrecovered_amount_usd
insufficient_funds1428962.686,840
expired_card584781.031,320
authentication_required3618502,940

합성 예제 출력. 운영 결정에 사용하기 전에 자체 이벤트 스키마 및 임계값에 대해 쿼리를 실행하세요.

Payment recovery rate by failure type: Measure Payment-Failure Recovery 예제 결과의 합성 recovery_rate_pct 값에 대한 정적 차트
결정론적 예제 출력의 색인 생성 가능한 SVG입니다. 기사, 런북 또는 저작자가 포함된 디자인 검토를 위해 다운로드하세요.

예제 재현

공공 픽스처 다운로드

JSON 번들은 타입이 지정된 이벤트 계약을 포함합니다. illustrative 입력 행, 정확한 SQL, 예상 출력, 검토 참고 사항 및 엔진 버전. CSV에는 표시된 결과가 포함됩니다.

SQL 작동 방식

  1. 1CTE 실패로 인해 공급자의 반복적인 시도가 위험에 처한 하나의 청구서로 축소됩니다.
  2. 2복구는 기록된 첫 번째 실패 이후 결제가 성공한 경우에만 계산됩니다.
  3. 3미회수 금액은 요율을 보완하므로 소수의 대형 송장만 표시됩니다.

결정해야 할 극단적인 경우

  • 새로운 결제 시도로 처리하기 전에 웹훅 전달을 중복 제거하세요.
  • 환불 및 지불 거절에는 성공적인 복구 후 별도의 수명 주기 이벤트가 필요합니다.
  • 문서화된 환율로 통화를 표준화하고 조정을 위해 원래 통화 필드를 유지합니다.

추천 대시보드

  • 바: recovery_rate_pct by failure_type
  • 통계: unrecovered_amount_usd
  • 표: 가장 높은 가치의 복구되지 않은 송장 및 계정 소유자

알림 안내

복구되지 않은 값이 임계값을 초과하거나 일반적으로 복구 가능한 오류 유형이 악화되면 수익 운영에 알림합니다.

알림 설정 읽기

레시피를 활용해 보세요

관련 계측 및 가이드

소스 데이터 정의

이 분석을 위한 이벤트 스키마

분석 계속하기

실제 이벤트에서 실행

테이블을 만들고, 필드를 조정하고, 결과를 저장하세요.

무료로 시작하고, 구조화된 이벤트를 보내고, 쿼리 결과를 차트, 공유 대시보드 위젯 또는 알림 입력으로 사용하세요.

API 키 받기