活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 发票事件时间。 |
| invoice_id | Utf8 | 稳定的提供商发票标识符。 |
| event_name | Utf8 | invoice_payment_failed 或 invoice_paid。 |
| amount_usd | Float64 | 标准化发票金额。 |
| failure_type | Utf8 | 安全分类故障原因。 |
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。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按失败类型划分的付款恢复率
需要身份验证的故障恢复的频率最低,并且保留了有意义的收入风险。
insufficient_funds
62.68%
expired_card
81.03%
authentication_required
50%
| failure_type | failed_invoices | recovered_invoices | recovery_rate_pct | unrecovered_amount_usd |
|---|---|---|---|---|
| insufficient_funds | 142 | 89 | 62.68 | 6,840 |
| expired_card | 58 | 47 | 81.03 | 1,320 |
| authentication_required | 36 | 18 | 50 | 2,940 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1失败的 CTE 将提供商重复的尝试合并到一张有风险的发票中。
- 2仅当在第一次记录的失败后付款成功时,恢复才算作恢复。
- 3未收回金额与费率相补充,因此少量大额发票仍然可见。
需要决定的边缘情况
- 在将 Webhook 交付视为新的付款尝试之前,对其进行重复数据删除。
- 成功恢复后,退款和退款需要单独的生命周期事件。
- 使用记录的汇率标准化货币并保留原始货币字段以进行调节。
推荐仪表板
- 酒吧:recovery_rate_pct by failure_type
- 状态:unrecovered_amount_usd
- 表:最高价值的未收回发票和帐户所有者
让查询示例发挥作用
相关埋点和指南
定义源数据
此分析的事件模式
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。