活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 作业生命周期事件时间。 |
| job_id | Utf8 | 稳定的逻辑作业标识符。 |
| queue_name | Utf8 | 拥有该作业的队列。 |
| event_name | Utf8 | dead_letter_created 或 dead_letter_resolved。 |
| error_type | Utf8 | 分类终端故障。 |
DataFusion SQL
复制查询
sql
SELECT
date_trunc('day', timestamp_utc) AS day,
queue_name,
SUM(CASE
WHEN event_name = 'dead_letter_created' THEN 1 ELSE 0
END) AS created_jobs,
SUM(CASE
WHEN event_name = 'dead_letter_resolved' THEN 1 ELSE 0
END) AS resolved_jobs,
SUM(CASE
WHEN event_name = 'dead_letter_created' THEN 1
WHEN event_name = 'dead_letter_resolved' THEN -1
ELSE 0
END) AS net_queue_change
FROM job_events
WHERE timestamp_utc >= now() - INTERVAL '30 days'
AND event_name IN ('dead_letter_created', 'dead_letter_resolved')
GROUP BY date_trunc('day', timestamp_utc), queue_name
ORDER BY day, queue_name;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
创建和解决死信作业
7 月 26 日,Billing 累计增加了 22 个死信职位,而进口则减少了排队人数。
2026-07-25
18
16
2026-07-26
31
9
2026-07-27
12
14
| day | queue_name | created_jobs | resolved_jobs | net_queue_change |
|---|---|---|---|---|
| 2026-07-25 | billing | 18 | 16 | 2 |
| 2026-07-26 | billing | 31 | 9 | 22 |
| 2026-07-27 | imports | 12 | 14 | -2 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1创建的事件和已解决的事件保持独立,因此相同的净变化无法隐藏截然不同的操作工作负载。
- 2签署的净变化暴露了未解决工作累积的天数。
- 3按队列分组可以保持所有权和升级路径清晰。
需要决定的边缘情况
- 在逻辑作业达到记录的最终成功或放弃结果之前,重试并不是解决方案。
- 回填的生命周期事件可以改变历史网络移动。
- 单独跟踪当前队列库存或根据已知的期初余额计算累计总和。
推荐仪表板
- 堆叠条:按队列排列的 created_jobs 和 resolved_jobs
- 趋势:累积死信库存
- 表:error_type 最早的未解决作业
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。