第2章 Reach指标定义与量化方法

2.1 适用场景

Reach(用户触达范围)是RICE优先级评分模型中第一个量化维度,用于评估一个功能、活动或产品版本在特定时间周期内能够独立覆盖的用户规模。以下场景必须计算Reach:

  • 路线图功能排序:对比不同功能可触达的用户基数,决定交付优先级
  • 市场活动规划:评估 campaign 在目标人群中的覆盖广度
  • AB实验受众筛选:确认实验组和对照组的最小可触达用户量
  • 跨渠道投放策略:合并多触点数据,计算去重后的真实独立用户数
  • 产品价值论证:向 stakeholders 展示功能影响的用户量级

2.2 前置条件

在开始Reach量化前,必须完成以下准备工作:

  1. 目标用户群体已定义:明确用户范围(如“近30天活跃用户”或“已订阅付费用户”),并提供可操作的筛选规则。
  2. 触达渠道清单已建立:列出所有可能触达用户的渠道(App推送、短信、邮件、站内信、广告等),并标注每个渠道的可用性状态(已上线 / 待开发 / 外部采买)。
  3. 用户身份标识体系已就绪:存在跨渠道统一的用户ID(如 UserID、DeviceID、手机号脱敏哈希),支持去重合并。
  4. 数据采集通道已配置:各渠道的曝光日志、埋点事件或API报表已接入数据仓库,或至少有可用的估算基准。
  5. 时间窗口已确定:约定统一的统计周期(日 / 周 / 月 / 版本周期),避免口径不一致。
💡 最佳实践: 在首次计算Reach时,建议先选择“近30天全量活跃用户”作为基线用户池,后续再根据具体功能缩小范围。基线池可复用,降低重复定义成本。

2.3 操作步骤

Reach量化遵循“定义 → 识别 → 采集 → 去重 → 输出”五步法。每一步必须记录执行细节,确保结果可追溯。

  1. 步骤一:定义目标用户群体

    用结构化规则描述用户范围,例如:

    用户群体 = { 用户 | 注册时间 ≥ 2024-01-01 
                && 最近登录时间 ≤ 当前时间-7天 
                && 用户标签包含 "活跃" }

    输出:用户群体定义文档(含筛选规则、时间戳、版本号)。

  2. 步骤二:识别触达渠道

    逐渠道确认触达能力,填写渠道清单表:

    渠道名称触达方式状态数据来源
    App Push推送通知已上线推送后台日志
    短信文本短信已上线短信平台报表
    邮件EDM待开发暂用行业基准估算
    站内信应用内消息已上线埋点事件

    注意:状态为“待开发”的渠道需在异常处理中说明估算依据。

  3. 步骤三:采集各渠道曝光数据

    从每个数据源拉取用户级曝光记录,保留最小字段集:

    字段: user_id, channel, exposure_time, unique_id_source
    示例:
    user_id=U1001, channel=app_push, exposure_time=2025-04-01 10:23:00, source=push_log
    user_id=U1001, channel=sms,     exposure_time=2025-04-01 14:05:00, source=sms_platform

    如果某个渠道没有全量日志,使用抽样估算或行业基准,并在记录中标注置信度(高/中/低)。

  4. 步骤四:去重合并计算

    以统一用户ID为key,对多渠道曝光数据进行全外连接去重:

    原始曝光用户列表:
      渠道A: [U1001, U1002, U1003, U1004]
      渠道B: [U1001, U1003, U1005]
      渠道C: [U1002, U1005, U1006]
    
    去重合并结果:
      独立用户集合 = {U1001, U1002, U1003, U1004, U1005, U1006}
      Reach = 6  (去重前曝光总和=10,去重后=6)

    使用Python或SQL脚本完成去重,脚本版本需纳入版本管理。

  5. 步骤五:输出Reach值

    最终输出包含:

    • Reach绝对值(去重独立用户数)
    • 用户群体总基数(用于计算覆盖率%)
    • 数据置信区间(高/中/低)
    • 采集时间窗口
    输出示例:
    {
      "reach": 1250000,
      "total_user_base": 5000000,
      "coverage_rate": "25%",
      "confidence": "high",
      "time_window": "2025-04-01 ~ 2025-04-30",
      "data_sources": ["app_push", "sms", "in_app_message"]
    }
Reach指标量化流程 Reach 指标量化五步流程 1. 定义目标用户群体 2. 识别触达渠道 3. 采集渠道曝光数据 4. 去重合并计算 5. 输出 Reach 值 📌 Reach = 跨渠道去重后的独立用户总数 数据来源、去重逻辑、置信区间必须随结果一同交付
📊 可视化解读: 五个步骤必须依次执行,不可跳过。步骤三和步骤四是数据质量的关键控制点——采集阶段需标注每条记录的来源和置信度,去重阶段需保留去重脚本的版本号,以备审计。

2.4 输入输出物

类别内容描述格式 / 载体
输入目标用户群体定义规则Markdown 文档 / Confluence
输入触达渠道清单(含状态、数据来源)表格(Google Sheets / Excel)
输入各渠道用户级曝光日志 / API 报表Parquet / CSV / JSON
输入去重脚本(SQL / Python).sql / .py 文件,Git 管理
输出Reach 值、覆盖率、置信区间JSON / 数据卡片 / BI 看板
输出数据溯源说明(字段映射、采样率、基准来源)附录文档

2.5 责任边界

角色职责交付物
产品经理定义用户群体规则,确认渠道清单,审核Reach合理性用户群体定义文档、渠道清单
数据分析师采集曝光数据,执行去重计算,输出Reach值及置信区间去重脚本、Reach计算结果、数据溯源说明
数据工程师保障各渠道数据管道稳定,提供统一用户ID映射表数据管道监控报告、ID映射表
项目负责人仲裁数据冲突,审批Reach值的最终版本Reach值审批记录

2.6 记录材料

以下材料必须归档至课程项目共享目录(如 Notion / Confluence / 飞书文档),保留至少两个版本周期:

  • 用户群体定义 v1.0:包含筛选规则、定义时间、负责人。
  • 触达渠道清单:渠道名称、触达方式、状态、数据来源、备注。
  • 曝光数据采集日志:每个渠道的拉取时间、记录数、缺失率。
  • 去重脚本(含版本号):SQL 或 Python 脚本,需包含注释说明去重逻辑。
  • Reach 计算结果记录:每次计算的 Reach 值、覆盖率、置信区间、时间窗口。
  • 数据溯源附录:各渠道数据来源的详细说明(API 名称、抽样率、估算基准等)。

2.7 异常处理

异常场景处理方式记录要求
某个渠道无曝光日志使用行业基准估算(如:App Push 平均打开率 20%),并在数据来源中标注为“估算”,置信度降级为“低”记录估算公式和基准来源
用户ID跨渠道不统一基于手机号 / 邮箱 / DeviceID 做多对一映射,映射表需人工抽检(抽检率 ≥ 5%)记录映射冲突数量和解决方式
渠道曝光数据时间窗口不一致以最晚结束时间为准,统一归齐到同一时间窗口;无法对齐的渠道单独标注时间段记录每个渠道的实际时间窗口
去重后 Reach 值超过用户总基数立刻中止计算,检查是否存在渠道间 ID 映射错误或重复计数;修正后重新执行记录异常原因和修正过程
渠道数据量级差异悬殊(如 100:1)小渠道单独标注置信度,并在最终 Reach 值中提供“含/不含小渠道”两个版本记录差异分析结论
⚠️ 常见错误: 直接将各渠道曝光用户数简单相加(非去重),会导致 Reach 被高估 30%~200%。必须使用去重逻辑,保留用户级粒度。

2.8 验收标准

本章节内容交付前,需逐项检查以下标准是否满足:

  • 定义明确:Reach 术语在本团队内有唯一解释,并与“曝光量”“展示次数”清晰区分。
  • 规则可执行:用户群体定义、渠道清单、去重脚本均可被其他成员直接使用或复现。
  • 数据可追溯:每个渠道的曝光数据都能追溯到原始来源(日志表名 / API 名称 / 估算文档)。
  • 置信度可感知:每次输出的 Reach 值都附带置信区间(高/中/低)和原因说明。
  • 异常有预案:至少覆盖上述 5 类异常场景的处理方式,且责任到人。
  • 文档已归档:所有记录材料按 2.6 节清单完整提交,版本号与课程进度一致。