跳转到内容
Telemetry
数据质量 SQL查询示例

查找重复的事件 ID

识别多次传递的事件标识符并衡量重复处理是否有效。

入门telemetry_events已审核 2026-07-27测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . SQL 兼容性、事件契约、合成输出和操作注意事项. 审查标准和所有权

问题已回答

哪些事件 ID 被多次接收?

重试在分布式系统中是正常的。当下游分析将每次交付都视为新的业务成果时,重复标识符就会成为数据质量问题。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp事件发生时间。
event_idUtf8重试传送时重复使用的稳定标识符。
event_nameUtf8事件合约名称。
sourceUtf8生产者名称。
DataFusion SQL

复制查询

sql
SELECT
  event_id,
  event_name,
  source,
  COUNT(*) AS deliveries,
  MIN(timestamp_utc) AS first_seen_at,
  MAX(timestamp_utc) AS last_seen_at
FROM telemetry_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
  AND event_id IS NOT NULL
GROUP BY event_id, event_name, source
HAVING COUNT(*) > 1
ORDER BY deliveries DESC, last_seen_at DESC
LIMIT 100;

此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。

查询结果

按事件 ID 重复投递

发票事件已交付四次,需要下游幂等计数。

event_idevent_namesourcedeliveriesfirst_seen_atlast_seen_at
evt_8f31invoice_paidstripe_webhook412:01:0312:06:44
evt_77acjob_completedbilling_worker210:14:2210:14:39

综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。

Repeated deliveries by event ID:来自 Find Duplicate Event IDs 示例结果的合成 deliveries 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

JSON 包包含类型化事件契约, illustrative 输入行、确切的 SQL、预期输出、审阅注释和引擎版本。 CSV 包含显示的结果。

SQL 是如何工作的

  1. 1按 event_id 分组公开重试传递,而不假设及时关闭的事件是重复的。
  2. 2包括 event_name 和源代码可以捕获意外地在不同合约中重复使用标识符的生产者。
  3. 3第一个和最后一个时间戳显示重复项是在短重试突发中还是更晚到达。

需要决定的边缘情况

  • 如果下游消费者需要幂等性,则不要为每次重试生成新的事件 ID。
  • 在不相关的事件中重复使用标识符是一种检测缺陷,而不是无害的重复。
  • 如果在存储之前删除重复项,则发出单独的重复数据删除结果,以便重试行为仍然可观察。

推荐仪表板

  • 统计:所选时间段内重复的事件 ID
  • 酒吧:按来源重复交付
  • 表:最新重复标识符

警报指导

当重复量或最大传递计数高于正常重试基线时发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

定义源数据

此分析的事件模式

继续分析

在真实事件中运行它

创建表,调整字段并保存结果

免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。

获取 API 密钥