和 GA4 的对比
适用于Alpha
只列产品团队真正用得上的能力。「部分」表示能力存在但形态更窄,具体差别写在备注里。
| GA4 能力 | OpenRUM | 备注 |
|---|---|---|
自动 page_view |
✅ | SPA 路由切换单独归为 navigation 类型 |
| 自动点击采集 | ✅ | ui.click,严格 schema,不采文本内容 |
| 自动滚动 / 文件下载 / 出站点击 / 站内搜索 / 视频 | ❌ | 需要自己发自定义事件 |
| 自定义事件 | ✅ | captureEvent() |
| 事件参数 | ✅ | attributes,≤ 20 个,可作为 property:<key> 维度查询 |
| 数值型参数 | ✅ | measurements,≤ 20 个,聚合出总和、估算总和、平均、最值、p50 与 p90 |
| 关键事件 / 转化 | ❌ | 无法把某个事件标记为转化;漏斗最后一步是最接近的替代 |
| 漏斗探索 | ✅ | 2–5 步,会话级,开放式漏斗 |
| 路径探索 | ⚠️ 部分 | 只能从会话开头锚定,不支持从终点倒推 |
| 同期群 / 留存 | ⚠️ 部分 | 只有周度,只按匿名访客 ID |
| 细分与受众 | ❌ | 每次查询一个维度,没有可保存的细分 |
| 用户属性 | ❌ | 有上下文标签,但不是行为维度 |
| User-ID 报告 | ⚠️ 部分 | setUser() 会存进事件,但所有行为指标数的都是匿名 ID |
| UTM / 广告归因 | ❌ | 查询串在归一化阶段就被剥掉了,source 只有 Referrer 域名 |
| 渠道分组 | ❌ | 除 Referrer 域名外没有 direct / organic / paid 的分类 |
| 实时报告 | ⚠️ 部分 | 会报数据新鲜度,通常 2 分钟内,但没有专门的实时视图 |
| 电商报告 | ⚠️ 部分 | 收入和客单价可以通过 measurements 得到,但没有商品级 schema |
| DebugView | ⚠️ 部分 | 事件样本接口能看某个事件名最近的原始事件 |
| 数据导出 | ✅ | ClickHouse 是你自己的,直接查 |
| 数据留存控制 | ✅ | 按项目分别设置原始和聚合留存,物理过期 |
| 不用 Cookie、免同意横幅 | ✅ | 匿名 ID、不采原始输入、自部署 |
measurement 聚合覆盖了什么、没覆盖什么
Section titled “measurement 聚合覆盖了什么、没覆盖什么”每个 measurement key 都会算出总和、按采样率还原的估算总和、平均值、最小值、最大值,
以及 p50 和 p90。任意一个 key 还可以按当前选中的维度拆分,包括 property:<key>——
「收入按支付方式拆分」就是这么来的。
两个限制值得知道。这个聚合只收自定义事件(其他事件类型本来就不带 measurements), 而且它从迁移执行的那一刻才开始积累:物化视图无法回填历史,所以升级之前入库的事件 没有 measurement 聚合,以后也不会有。
已识别用户不计入用户数
Section titled “已识别用户不计入用户数”setUser() 会把 user_id 写到之后的每条事件上,也确实存下来了。但 uniqueUsers、
留存同期群、漏斗身份,用的全都是匿名访客 ID。同一个人用手机和笔记本访问,
在所有行为报告里都是两个用户——哪怕你的应用清楚知道那是同一个账号。
广告归因是有意不做的
Section titled “广告归因是有意不做的”URL 的查询串在归一化阶段、也就是事件入库之前就被移除了,所以 utm_source 之类根本到不了数据库。
source 只有 Referrer 域名,没有别的。这是一条有意划下的隐私边界,不是疏漏——
但确实意味着付费投放的归因分析在这里目前没有对应能力。
Release Alpha · commit local