活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 尝试完成时间。 |
| job_id | Utf8 | 稳定的逻辑作业标识符。 |
| job_name | Utf8 | 工作类型稳定。 |
| attempt | Int64 | 基于一的尝试次数。 |
| status | Utf8 | 已完成、重试或失败。 |
DataFusion SQL
复制查询
sql
SELECT
date_trunc('hour', timestamp_utc) AS hour,
job_name,
COUNT(*) AS attempts,
COUNT(DISTINCT job_id) AS logical_jobs,
SUM(CASE WHEN attempt > 1 THEN 1 ELSE 0 END) AS retry_attempts,
100.0 * SUM(CASE WHEN attempt > 1 THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS retry_attempt_rate_pct,
100.0 * SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS failed_attempt_rate_pct
FROM job_attempts
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY date_trunc('hour', timestamp_utc), job_name
HAVING COUNT(*) >= 20
ORDER BY retry_attempt_rate_pct DESC, attempts DESC;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按作业重试尝试率
CRM 同步产生的尝试远多于逻辑作业,并且重复工作会消耗工作人员的能力。
sync_crm_accounts
60.76%
send_receipt_email
3.74%
| hour | job_name | attempts | logical_jobs | retry_attempts | retry_attempt_rate_pct | failed_attempt_rate_pct |
|---|---|---|---|---|---|---|
| 2026-07-27 14:00 | sync_crm_accounts | 1,840 | 492 | 1,118 | 60.76 | 22.34 |
| 2026-07-27 14:00 | send_receipt_email | 3,180 | 3,061 | 119 | 3.74 | 0.44 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1不同的作业 ID 估计有用的逻辑工作,而原始计数则衡量工人的尝试。
- 2一次以上的尝试会孤立重复的工作,而不会将最终的成功视为第一次尝试。
- 3失败率与重试共享保持一致,因此故意重试的瞬态依赖性可以与最终失败区分开来。
需要决定的边缘情况
- 扇出作业可以合法地创建多个子 ID;在比较计数之前定义逻辑工作标识符。
- 立即重试和计划退避具有不同的容量影响,并且可能需要单独的字段。
- 重试风暴可以在每小时的时段之间移动;当响应时间很重要时,添加较短的操作查询。
推荐仪表板
- 酒吧:retry_attempt_rate_pct(按工作)
- 趋势:尝试和logical_jobs
- 表:尝试次数最多和错误类型最新的作业
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。