Telemetry · 学习短文 · 简体中文
缺少事件记录,不等于学生放弃了
8 次开始、6 次打开题目、3 次提交答案。记录的数量清楚,背后的原因却不清楚。
假设一款练习题应用会记录开始、打开题目和提交答案。演示后,文件里有 18 条虚构事件。有人问:“有多少学生完成了?”这份文件回答不了。它记录的是尝试 ID,不是人的身份。同一个人可能尝试多次,一次尝试也可能产生多条记录。
| 已记录事件 | 不同的尝试 ID 数 |
|---|---|
flow_started | 8 |
question_opened | 6 |
answer_submitted | 3 |
记录数量先减少 2,再减少 3。这只是文件中的缺口,不能证明有人在相应页面放弃。使用者可能停下,应用可能崩溃,请求可能失败,日志事件也可能没有送达。
先统计尝试,再问数字意味着什么
将虚构 CSV 导入名为 prototype_events 的表后,可以用下面的查询核对三个数量: 虚构 CSV
SELECT
COUNT(DISTINCT CASE WHEN event = 'flow_started' THEN trial_id END) AS started,
COUNT(DISTINCT CASE WHEN event = 'question_opened' THEN trial_id END) AS opened,
COUNT(DISTINCT CASE WHEN event = 'answer_submitted' THEN trial_id END) AS submitted
FROM prototype_events;结果为 8、6、3。COUNT(*) 统计的是收到的行数,回答的是另一个问题。事件重试可能造成重复行。稳定的尝试 ID 有帮助,但前提是应用正确生成并复用它;若新尝试误用了旧 ID,去重计数就会漏掉它。
还需要哪些证据来区分原因?
服务器端的 submission_accepted 事件可以表明答案已到达,即使浏览器事件丢失。客户端错误事件可以解释部分失败。有记录的明确退出操作可以确认相应尝试中的主动退出;没有这条记录,仍不能推断意图。新增的每种信号本身也有覆盖和送达限制。
在修改界面或宣称原型失败前,先说明统计单位,以及现有数据无法排除哪些解释。事件图表并不会自动告诉我们人的真实经历。