1. 数据仓库基础架构解析
数据仓库作为企业级数据分析的核心基础设施,其设计质量直接决定了后续BI应用和决策支持的效率。在星型模型和雪花模型这两种主流数据仓库建模方法中,维度表与事实表的设计始终是最关键的环节。从业15年来,我见证过太多因为表结构设计不当导致整个数据仓库推倒重来的案例。
1.1 维度表的核心特征
维度表(Dimension Table)是数据仓库中的"坐标轴",它为分析提供了上下文环境。一个设计良好的产品维度表可能包含以下字段:
sql复制CREATE TABLE dim_product (
product_sk INT PRIMARY KEY, -- 代理键
product_id VARCHAR(20), -- 业务键
product_name VARCHAR(100),
category_id INT,
category_name VARCHAR(50),
brand_id INT,
brand_name VARCHAR(50),
unit_price DECIMAL(10,2),
cost DECIMAL(10,2),
launch_date DATE,
is_active BOOLEAN,
version INT,
effective_date DATETIME,
expiry_date DATETIME
);
关键设计要点:
- 使用代理键(SK)而非业务主键,避免源系统变更影响数据仓库
- 包含详细的层级关系(如产品-类目-品牌)
- 采用缓慢变化维(SCD)策略处理属性变更
- 维护版本控制和有效期标记
1.2 事实表的本质特性
事实表(Fact Table)则是数据仓库中的"测量仪器",记录业务过程的数量化信息。典型的销售事实表结构如下:
sql复制CREATE TABLE fact_sales (
order_date_sk INT, -- 日期维度外键
product_sk INT, -- 产品维度外键
customer_sk INT, -- 客户维度外键
store_sk INT, -- 门店维度外键
order_number VARCHAR(20),-- 退化维度
quantity INT, -- 可加性度量
amount DECIMAL(18,2), -- 可加性度量
discount DECIMAL(18,2), -- 可加性度量
cost DECIMAL(18,2), -- 可加性度量
profit DECIMAL(18,2) -- 可加性度量
);
事实表设计的黄金法则:
- 80%的列应该是外键
- 度量值尽量设计为可加性(如数量、金额)
- 谨慎处理半可加性度量(如库存量)
- 避免非可加性度量(如单价、比率)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 维度表设计深度解析
2.1 缓慢变化维处理策略
在实际业务中,维度属性随时间变化是常态。以下是三
