跳转到内容
Telemetry
浏览文档
概念与 SQL 模式更新于 2026年7月28日由 Telemetry 编辑团队和产品团队审核阅读约需 2 分钟

让编程智能体使用这篇文档

打开 Claude Code、Codex、Cursor 或其他编码代理的集中提示包,然后将其适应此处介绍的工作流程。

使用 SQL 对结构化事件去重

重复数据删除首先是一个业务定义问题,然后才是一个 SQL 问题。两个看起来相似的事件可能表示重复传递、有意重试或两个有效的用户操作。从源生成的逻辑事件或交付标识符开始。不要从时间戳和消息字符串推断身份,除非生产者合约保证该组合是唯一的。

为每个稳定标识符选择一行

WITH ranked AS (
  SELECT
    event_id,
    account_id,
    event_name,
    timestamp_utc,
    received_at,
    ROW_NUMBER() OVER (
      PARTITION BY event_id
      ORDER BY received_at ASC
    ) AS delivery_rank
  FROM product_events
  WHERE timestamp_utc >= now() - INTERVAL '7 days'
)
SELECT
  account_id,
  event_name,
  timestamp_utc
FROM ranked
WHERE delivery_rank = 1;

此版本保留第一个收到的副本。状态同步表可能会保留最新记录。将选择写在查询旁边,因为更改顺序会更改结果的含义。

在删除重复项之前测量它们

计算原始行、不同标识符以及多次交付的标识符。当这些维度可以识别来源时,按生产商、SDK 版本、发布或交付路径细分结果。重复数据删除 CTE 可以使下游仪表板正确,同时隐藏日益严重的摄取问题。

不要单独对 account_idevent_name 进行重复数据删除。一个帐户可以合法地多次完成同一操作。同样,当问题是可靠性时,即使产品转化只计算最终的成功结果,重试也可能是有效的分析事件。

晚期事件需要有界的修正窗口。报告导出后到达的副本可能会更改最终计数,因此请记录报告截止日期以及结果是否是临时的。

使用 重复的事件 ID 配方 量化源重复,使用 窗口函数 了解排名操作。 事件架构指南 解释了如何添加使规则可审核的标识符。

相关产品功能

对结构化事件表运行只读 DataFusion SQL 并重用结果。

内容责任与技术参考

Telemetry 编辑团队负责维护本文;产品团队审核功能行为、示例和适用范围。

查看编辑规范