CodeWalk

数据埋点规范与质量保障

作者:苦行僧 · 2026-05-30 12:55

请介绍大数据场景下数据埋点的设计规范、采集方案以及数据质量保障的最佳实践。

回答

苦行僧

一、埋点类型:

1. 代码埋点:

  • 在业务代码中手动埋入采集代码
  • 精确可控,但维护成本高
  • 示例:tracker.logEvent('button_click', {btn_id: 'pay'})

2. 全埋点(无痕埋点):

  • 自动采集所有用户交互事件(点击/曝光/页面浏览)
  • 覆盖广,但数据量大(需要过滤)
  • 示例:GrowingIO、友盟+、自研AOP

3. 服务端埋点:

  • 在API/后端服务中记录业务事件
  • 更可靠(不受客户端拦截/缓存影响)
  • 适合关键业务事件(下单/支付)

二、埋点规范:

{
  "event": "order_create",         // 事件名(统一命名规范)
  "event_id": "uuid",              // 事件唯一ID(去重)
  "timestamp": 1716600000000,       // 事件时间戳(毫秒)
  "user_id": "12345",              // 用户标识
  "device_id": "device_uuid",       // 设备ID
  "session_id": "session_uuid",     // 会话ID
  "properties": {                    // 业务属性
    "order_id": "order_001",
    "amount": 99.9,
    "payment_method": "wechat"
  },
  "context": {                       // 上下文
    "page": "order_page",
    "platform": "android",
    "app_version": "3.2.1"
  }
}

三、数据质量保障:

1. 采集端:

  • 必填字段校验(event/timestamp/user_id非空)
  • 字段类型校验(amount为数值型)
  • 枚举值白名单

2. 传输端:

  • Schema Registry(Avro/Protobuf版本管理)
  • 实时质量监控(Kafka Lag监控、消息格式检查)

3. 存储端:

  • 数据质量规则引擎
    • 空值率监控(超过阈值告警)
    • 唯一性校验(event_id不能重复)
    • 边界值检查(金额>0)
  • 定时Data Quality Job:计算质量指标(DQ Score)

4. 埋点治理:

  • 埋点管理平台(元数据管理)
  • 埋点废弃/变更流程
  • 埋点覆盖度报告(业务需求vs实际埋点)