Kimball 维度建模技术 (1)

本文介绍了Kimball维度建模技术,包括事实表的基础知识,如事实表结构、可加性分类、空值处理,以及不同类型的事实表,如事务事实表、周期快照事实表、累积快照事实表等,强调了事实的一致性和性能优化的策略。

Kimball 维度建模技术(1)

1 事实表技术基础
1.1 事实表结构

发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。
从最低的粒度级别来看,事实表行对应一个度量事件。
因此事实表的设计完全依赖于物理活动,不受可能产生的最终报表的影响。

1.2 可加、半可加、不可加事实

事实表中的数字度量可划分为三类。

    最灵活、最有用的事实是完全可加的,可加性度量可以按照与事实表关联的任意维度汇总。
    
    半可加度量可以对某些维度汇总,但不能对所有维度汇总。
    差额是常见的半可加事实,除了时间维度外,它们可以跨所有维度进行假发操作。另外,一些度量是完全不可加的,例如:比率。
    
    对非可加事实,一种好的方式是,尽可能存储非可加度量的完全可加的分量,并计算出最终的非可加事实前,将这些分量汇总到最终的结果集合中。
    最终计算通过发生在BI层或OLAP多维数据库层。

1.3 事实表中的空值

事实表中可以存在空值度量。所有聚集函数(sum、count、min、max、avg)均可针对空值实时计算。
然而,在事实表的外键中不能讯在空值,否则会导致违反参照完整性的情况发生。关联的维度表必须用默认行而不是空值外键表示未知的或无法应用的条件。

1.4 一致性事实

如果某些度量出现在不同的事实表中,需要注意,如果需要比较或计算不同事实表中的事实,应保证针对事实的技术定义是相同的。如果不同的事实表定义是一致的,则这些一致性事实应该具有相同的命名,如果它们不兼容,则应该有不的命名用于告诫业务用户和BI应用。

1.5 事务事实表

事务事实表的一行对应空间或时间上某点的度量事件。原子事务粒度事实表是维度化及可表达的事实表,这类

### Kimball 数据仓库维度建模方法与原则 #### 1. 明确区分维度和事实 在Kimball方法论中,维度和事实的划分被视为构建数据仓库的核心要素[^4]。维度代表业务中的关键概念,描述业务中的特征;而事实则是与业务过程相关的度量。这种明确的划分不仅使数据仓库结构更加清晰易懂,还提高了其灵活性。 #### 2. 构建星型模式 Kimball模型中最常见的架构是星型模式(Star Schema),其中心是一个或多个事实表,周围环绕着多个维度表。每个维度表都包含有关特定主题的信息,如客户、产品、时间等。这样的设计简化了查询操作并提升了性能。 #### 3. 使用雪花模式优化存储 对于某些复杂场景,可以采用更为复杂的雪花模式(Snowflake Schema)。在这种情况下,一些维度会被进一步规范化成子维度表格,从而减少冗余并节省空间。然而,这可能会稍微增加查询复杂度。 #### 4. 定义粒度级别 为了确保一致性以及支持不同层次上的聚合计算,在创建事实表之前必须先确定合适的粒度水平。例如,“每日销售总额”就是一种较粗略级别的汇总指标,而“每笔交易金额明细”则属于细颗粒度的数据点。 #### 5. 创建桥接表处理多值属性 当遇到一个多对多关系时,则需引入桥梁表作为中介连接两方实体之间的联系。比如某位顾客可以在一次购物活动中购买多种商品项目,此时就需要建立一张关联两者ID号的新表来进行表达。 #### 6. 应用快照技术捕捉历史状态变迁 针对那些随时间推移会发生改变的对象特性,可以通过设置累积型快照事实表来追踪这些变化情况。这类特殊形式的事实表会保存每次重要事件发生前后所涉及的所有相关信息,并允许后续按需回溯查看任意时刻的状态快照[^5]。 ```sql -- 示例SQL语句展示如何创建一个简单的星型模式 CREATE TABLE sales_fact ( sale_id INT PRIMARY KEY, date_key DATE NOT NULL, -- 外键指向日期维度表 product_key VARCHAR(50), -- 外键指向产品维度表 store_key CHAR(8), -- 外键指向店铺维度表 quantity_sold DECIMAL(9,2), dollar_sales DECIMAL(10,2) ); CREATE INDEX idx_date ON sales_fact(date_key); CREATE INDEX idx_product ON sales_fact(product_key); CREATE INDEX idx_store ON sales_fact(store_key); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值