数据埋点规范与质量保障
请介绍大数据场景下数据埋点的设计规范、采集方案以及数据质量保障的最佳实践。
回答
苦行僧
一、埋点类型:
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实际埋点)