首页/数据/数仓建模速查/点击流事实的粒度选择
维度与事实设计149 条

点击流事实的粒度选择

曝光、点击、页面浏览分别建事实表:粒度不同、生命周期不同;请求级明细是基础,会话/天级由派生汇总产出。

数仓建模速查数据更新于 2026-10-13

三张表而不是一张

点击流不是一张表能装下的:曝光、点击、页面浏览是三种事件,各有生命周期与统计口径,通常分别建事实表,以请求级明细为基础,会话级与天级由派生汇总产出。粒度定得太粗会失去留存、路径分析所需的用户级细节;把不同事件混在一张表里,则会让去重与漏斗计算反复出错,同一份数据在不同报表上给出不同答案。

基本信息

曝光一次有效展示一行
点击一次点击动作一行
页面浏览一次页面打开一行
派生层会话级、天级由明细汇总产出
必需键事件 ID、用户键、内容或页面键

典型使用场景

  • 计算曝光点击率、点击转化率等多段漏斗指标
  • 用户路径与页面流转分析,需要请求级明细支撑
  • 渠道效果评估:按来源参数聚合曝光与转化
  • 异常流量与作弊识别,依赖明细与设备信息
  • 内容推荐效果评估:内容维键与曝光去重规则必须先定

请求级明细

请求级明细
-- 请求级点击明细,保留渠道与内容键
CREATE TABLE dwd_click (
  click_id   string,
  user_id    string,
  page_id    string,
  content_sk bigint,
  channel    string COMMENT '规范化后的渠道标识',
  event_ts   timestamp
) PARTITIONED BY (dt string) STORED AS ORC;

-- 曝光去重:同一用户对同一内容的多次曝光按规则合并
SELECT dt, count(DISTINCT concat(user_id, '#', content_sk)) AS uv_expose
FROM dwd_expose WHERE dt = '2026-10-12' GROUP BY dt;

事件粒度对照

事件粒度口径要点
曝光一次展示一行需区分请求曝光与可见曝光
点击一次点击一行去重键决定点击量口径
页面浏览一次打开一行停留时长需前后事件配对
会话按超时窗口切分窗口长度不同会话数不同
URL 参数携带的渠道信息要先规范化再入仓:同一来源可能有大写、短链、带追踪参数等多种写法,不统一则渠道口径会散成十几个。
曝光去重规则,是否按用户去重、是否按天去重,直接决定 CTR 的量级,规则要写进指标卡并在各报表间保持一致。
曝光明细的采集量通常远大于点击,常按位置、内容、设备多列展开,存储与分区要按保留期规划;行为时间以客户端上报为准,服务端接收时间只作延迟参考。

易错点

  • 曝光与点击混在一张表里,去重与漏斗计算反复出错
  • 渠道参数未规范化,同一来源被拆成多个渠道
  • 直接落天粒度,用户路径与留存分析无法开展
  • 曝光去重规则不统一,跨报表 CTR 无法对齐

数据来源与参考

  • 流量数仓实践:点击流建模
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌