跳至主要內容
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. 1失敗的 CTE 將提供商重複的嘗試合併到一張有風險的發票中。
  2. 2僅當在第一次記錄的失敗後付款成功時,恢復才算作恢復。
  3. 3未收回金額與費率相補充,因此少量大額髮票仍然可見。

需要決定的邊緣情況

  • 在將 Webhook 交付視為新的付款嘗試之前,對其進行重複資料刪除。
  • 成功恢復後,退款和退款需要單獨的生命週期事件。
  • 使用記錄的匯率標準化貨幣並保留原始貨幣欄位以進行調節。

推薦儀表板

  • 酒吧:recovery_rate_pct by failure_type
  • 狀態:unrecovered_amount_usd
  • 資料表:最高價值的未收回發票和帳戶所有者

警示指導

當未恢復的值超過閾值或正常可恢復的故障型別惡化時,向收入運營部門發出警示。

讀取警示設定

讓查詢範例發揮作用

相關埋點和指南

定義源資料

此分析的事件模式

繼續分析

在真實事件中執行它

建立資料表,調整欄位並儲存結果

免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。

獲取 API 金鑰