核心概念
Fact / Dimension(事实 / 维度)
事实记录发生了什么,维度提供观察事实的角度。星型模型把事实放在中心,通过连接键关联客户、账户、机构、产品和日期等维度。
一笔账户交易记录发生了什么,又应该从哪些角度观察?从问题出发推导事实表和维度表。
事实记录发生了什么,维度提供观察事实的角度。星型模型把事实放在中心,通过连接键关联客户、账户、机构、产品和日期等维度。
账户 A001 在 2026-09-15 14:20 发生了一笔 5,000 元的转账。记录 T10001 带着客户、账户、机构、产品、渠道和交易类型等信息,但这些字段回答的不是同一个问题。
先把事件说清楚:发生的是一笔账户交易,分析对象是 Transaction,交易金额是这次事件的度量。接下来才需要问,业务人员想从什么角度观察它。
先查看一条交易记录,再把字段放回事件、观察角度和事实度量,最后观察事实表如何连接五个维度并切换分析视角。
同一条 fact_transaction 记录,可以沿 customer_id 看客户,沿 branch_id 看机构,沿 product_id 看产品,也可以沿 event_date 看日期。观察角度变化了,事实事件和 transaction_amount 没有被改写。
本例里的 customer_id、account_id 等是业务键,负责把事实连接到稳定的业务对象。需要保留客户属性历史时,代理键会在下一节的版本问题中出现;这里不把键设计单独拆成一门课。
先读业务事件,再决定从哪些角度观察它。
transaction_id | customer_id | account_id | branch_id | product_id | channel | transaction_type | transaction_amount | event_time | event_date |
|---|---|---|---|---|---|---|---|---|---|
| T10001 | C001 | A001 | B01 | P01 | 手机银行 | 转账 | 5,000 | 2026-09-15 14:20 | 2026-09-15 |
交易金额属于这次事件;客户、账户、机构、产品是描述它的不同观察角度。