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

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

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

使用 SQL 分析同期群留存

保留询问指定的参与者在开始里程碑后是否返回。有用的保留查询会说明参与者、队列事件、合格返回活动、间隔和观察窗口。在这五个选择明确之前,“每周保留”是不明确的。

分别构建队列和活动表

WITH cohorts AS (
  SELECT
    account_id,
    date_trunc('week', MIN(timestamp_utc)) AS cohort_week
  FROM product_events
  WHERE event_name = 'activation_completed'
  GROUP BY account_id
),
activity AS (
  SELECT DISTINCT
    account_id,
    date_trunc('week', timestamp_utc) AS activity_week
  FROM product_events
  WHERE event_name IN ('query_completed', 'dashboard_viewed')
)
SELECT
  cohort_week,
  activity_week,
  COUNT(DISTINCT cohorts.account_id) AS retained_accounts
FROM cohorts
JOIN activity
  ON cohorts.account_id = activity.account_id
 AND activity.activity_week >= cohorts.cohort_week
GROUP BY cohort_week, activity_week
ORDER BY cohort_week, activity_week;

这一结果保留了队列和活动周。在确认所选 SQL 引擎支持的日期算法后,报告层可以将间隙转换为第 0 周、第 1 周和后续周期。保持中间日期可见可以使边界错误更容易被发现。

定义一次分母

分母是队列中符合条件的参与者的数量,而不是产生后来活动事件的数量。单独计算队列大小并将其加入保留计数中。使用 NULLIF 保护百分比,并在输出中保留两个计数。

最近的队列没有时间达到较晚的间隔。将这些单元格标记为不完整,而不是将它们视为零保留。还要决定第零周是意味着激活本身还是激活后单独返回。

使用代表持久价值的事件而不是任何后台心跳。排除测试帐户和具有受控字段的自动化活动。使用小型装置验证身份合并、重复事件、迟到和时区边界。

阅读 漏斗分析 了解里程碑进展,阅读 时间分桶 了解间隔规则,并在采用另一种 SQL 方言的日期计算之前阅读 DataFusion SQL 参考

相关产品功能

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

内容责任与技术参考

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

查看编辑规范