01

Original Data Warehouse Methodology

极致分区表的星系模型

一套面向事件上报型用户行为数据的数据仓库建模方法。它底层仍是维度建模、维度退化思路,但把分区从存储手段提升为组织事件、任务、依赖和分析的架构能力。

原创方法论广告与应用分发Kimball 维度建模扩展公开脱敏案例
适用场景事件上报型用户行为数据
核心判断分区也可以成为架构能力
验证领域广告、应用分发等事件链路
01 / Problem

传统做法为什么越建越难用

问题不只是表多,而是事件、代码、依赖、报表和历史修复被拆散在不同地方,长期没有统一的组织方式。

旧方案 A

生硬套用主题域

扣费、用户、流量和广告等主题里出现大量相似模型。使用者会发现每张表都能用,但每张又都差几个字段。

旧方案 B

一个事件一张明细表

曝光、点击、下载、扣费各建一张表,代码高度重复,跨事件报表则充斥大量 union all。

极致分区表解决的不是“怎么多加一个分区字段”,而是如何把复杂事件数据组织成长期可维护、可复用、可按需依赖的分析体系。

  • 事件类型多,字段多,明细数据量大。
  • 曝光、点击、下载、扣费和转化经常需要组合分析。
  • 下游容易依赖整张表,等待与自己无关的数据。
  • 单个事件出错时,历史重刷的影响范围过大。
02 / Decision

把分区提升为架构能力

表保持统一,任务保持独立。代码根据任务传参决定更新哪个业务分区,下游也只依赖自己真正需要的分区。

一套表,不是“一张表包打天下”

不同主题分别建设自己的极致分区表体系。一套表通常跨 ODS、DWD、DWS 等分层组织,底层仍遵循 Kimball 维度建模、一致性维度和事实模型思想。

统一表结构,拆开任务等待

曝光和下载可以进入同一张分析表,但分别由不同任务更新。下载分区完成后,下游下载报表即可继续运行,不必等待数据量更大的曝光分区。

统一原子指标

曝光量、点击量、下载量、扣费量、转化量等原子指标在 DWS 层统一定义;CTR、eCPM 等衍生指标再在更合适的分析层处理。

03 / Value

“极致”体现在七个长期收益

这套方法把日常维护、资源效率和故障修复放进同一套模型设计中,而不是等问题出现后再逐项补救。

01

可维护性

新增事件、修改逻辑和修复问题集中在一份核心代码中。

02

性能与费用

任务和查询按所需分区扫描,减少无效计算与存储。

03

任务依赖

下游只等待自己需要的分区,不被无关事件拖慢。

04

代码复用

多个业务分区复用同一套核心逻辑,避免重复开发。

05

报表与取数

围绕统一分析表配置多张报表,减少多表拼接。

06

计算与存储

减少重复逻辑、重复计算和重复事件明细存储。

07

历史重刷

哪个分区出错就重刷哪个分区,不波及其他事件。

04 / Boundary

能讲清边界,方法论才可信

它不是所有数仓问题的通用答案,最有价值的地方之一,就是明确知道什么时候该用、什么时候不该用。

非常适合

  • 广告请求、曝光、点击、下载、扣费、转化链路。
  • 应用分发领域的曝光、点击和下载事件。
  • App 埋点等多事件用户行为数据。

不宜生硬套用

  • 以订单、支付、商品等稳定实体为核心的交易数仓。
  • 事件种类少、分析组合简单的业务。
  • 无法建立清晰业务分区语义的模型。
05 / Proof

这个案例证明什么

架构抽象

从真实问题中提炼原创方法

不是套模板,而是从复杂事件体系中抽象可复用的建模结构。

维度建模

理解一致性维度与事实

分区设计建立在维度建模之上,而不是绕开数仓基本理论。

工程判断

综合考虑性能、依赖与治理

把长期维护成本和系统演进放进最初的架构决策。

方法边界

不把一种模型套到所有业务

明确交易型数据和事件型数据之间的建模差异。