Kimball关于维度的讲解摘要

该内容主要探讨了Kimball在数据仓库中处理维度设计的方法,包括解决操作型系统ID重用问题,集成多元源系统,利用自增整数提升性能,并介绍了如何通过代理键追踪维度属性的变化,尤其是对匿名用户的处理。
维度表是用于描述环境的。谁、什么、哪里、何时、如何、为什么等等。

列多,行少,多文本列。
维度属性用于查询约束、分组、报表标识等。
维度表中尽量使用文本描述。

数据仓库的好坏直接取决于维度属性的设置,DW/BI的分析能力直接取决于维度属性的质量和深度。

维度代理键:维度表的主键,不能采用操作型系统的自然键,避免出现不同业务系统的兼容性问题;
为什么用代理键?
  1. 解决操作型系统ID重用的问题
  2. 集成多个源系统
  3. 使用自增整数改进性能
  4. 特点的代理键可以用来记录不在操作型系统中的维度条件,如匿名用户等
  5. 支持维度属性变化跟踪


退化维度:除了主键没有其它内容;所以没有维度表,只在事实表中出现,但是是维度项;如零售中的POS事务号码,可以标识哪些事务是在一个事务中发生。
               退化维度没有属性,但是维度值可以用来比较是否相同,这也是其意义所在。

维度属性中的空值最好用Unknow或者not applicable。

支架维度:被其它维度引用的维度称为支架维度;比如银行账户维度表中的开户日期字段引用日期维度表。 构成雪花模型。常用作支架维度的是日期。

杂项维度:每个维度的不同值都比较少,而且互相之间往往有关联,所以把它们看成是一组,当成一个维度来用,减少事实表中的外键数量。
                如125页给出的,将支付类型、支付类型分组、订单类型、授信标识当成一组杂项维度。 
               杂项维度应该是针对一个事实表而言的,如果杂项维度中包含在整个数据仓库中通用的维度,那么反而会因为优化了一个事实表的构建损害了数据仓库中的一致性维度。
### 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、付费专栏及课程。

余额充值