CodeWalk

埋点数据仓库建设全流程(从采集到OLAP)

作者:我是大山 · 2026-05-30 12:55

请描述一个完整的埋点数据仓库建设方案,从客户端埋点(代码埋点/全埋点/可视化埋点)、数据采集(SDK→Kafka)、ETL清洗(Flink/PySpark)、数仓分层(ODS/DWD/DWS/ADS)到OLAP查询(ClickHouse/Doris)的全链路,包括埋点规范设计(事件名/属性/全局属性)和反作弊策略。

回答

我是大山

埋点数仓全流程

1. 埋点设计

  • 事件模型{event_name, distinct_id, time, properties{...}}
  • 公共属性:app_version, os, device_id, network_type, page_url
  • 规范:事件名蛇形命名(page_viewbutton_click),属性小驼峰

2. 数据采集

客户端SDK → Kafka (topic: app_event_raw)
三层SDK:Android/iOS/Web → 统一JSON格式

3. 实时ETL(Flink)

  • 解析JSON、字段校验
  • IP解析地理位置、UA解析设备信息
  • 反作弊:频率检测(同IP每秒>100次→标记)、设备ID黑名单
  • 写入Kafka (topic: app_event_clean)

4. 数仓分层

层级内容存储
ODS原始JSON日志Kafka + HDFS Parquet
DWD解析后的明细宽表Hive ORC
DWS事件级聚合(日活、事件pv/uv)ClickHouse
ADS指标看板、留存、漏斗分析Redis/Doris

5. 指标计算

  • 日活(DAU)COUNT(DISTINCT distinct_id) WHERE event='app_start'
  • 漏斗:窗口函数按用户和时间排序,计算Step转化率
  • 留存:次日/7日/30日留存计算

6. 反作弊策略

  • 异常流量过滤:同IP高并发、设备伪造
  • 重复事件去重(event_id + time + device_id去重)
  • 爬虫过滤:User-Agent + 行为模式识别