活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 月末快照时间。 |
| account_id | Utf8 | 稳定的计费帐户标识符。 |
| starting_mrr_usd | Float64 | 测量月份开始时的 MRR。 |
| ending_mrr_usd | Float64 | 测量月末的 MRR。 |
DataFusion SQL
复制查询
sql
SELECT
date_trunc('month', timestamp_utc) AS month,
COUNT(*) AS starting_accounts,
SUM(starting_mrr_usd) AS starting_mrr_usd,
SUM(ending_mrr_usd) AS ending_mrr_usd,
100.0 * SUM(ending_mrr_usd)
/ NULLIF(SUM(starting_mrr_usd), 0) AS net_revenue_retention_pct,
100.0 * SUM(CASE
WHEN ending_mrr_usd < 0.0 THEN 0.0
WHEN ending_mrr_usd > starting_mrr_usd THEN starting_mrr_usd
ELSE ending_mrr_usd
END) / NULLIF(SUM(starting_mrr_usd), 0)
AS gross_revenue_retention_pct
FROM account_mrr_snapshots
WHERE timestamp_utc >= now() - INTERVAL '12 months'
AND starting_mrr_usd > 0.0
GROUP BY date_trunc('month', timestamp_utc)
ORDER BY month;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
按月划分的净收入保留
5 月和 6 月,扩张使 NRR 保持在 100% 以上,而 GRR 下降表明收缩或流失加剧。
2026-05
105.14%
2026-06
102.41%
2026-07
98.24%
| month | starting_accounts | starting_mrr_usd | ending_mrr_usd | net_revenue_retention_pct | gross_revenue_retention_pct |
|---|---|---|---|---|---|
| 2026-05 | 418 | 126,400 | 132,900 | 105.14 | 96.44 |
| 2026-06 | 431 | 132,900 | 136,100 | 102.41 | 94.88 |
| 2026-07 | 446 | 136,100 | 133,700 | 98.24 | 93.31 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1只有具有起始 MRR 的账户才会进入分母,从而将新业务排除在保留之外。
- 2NRR 将总的结束 MRR 与起始 MRR 进行比较,因此包括扩展。
- 3GRR 将每个账户的起始 MRR 限制为上限,因此扩张无法抵消收缩或流失。
需要决定的边缘情况
- 在拍摄快照之前规范年度合同、基于使用情况的合同和多货币合同。
- 当父级和子级订阅可以独立移动时,一致地使用一个帐户层次结构。
- 协调回溯的账单更正,以便历史快照不会悄无声息地发生变化。
推荐仪表板
- 趋势:NRR 和 GRR(按月)
- 条形图:扩张、收缩和流失 MRR
- 表:最大账户级收入变化
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。