N7. 层次结构与雪花模式
一. 钻取
我们经常将分析当作”钻取数据”的过程.例如,在阅读一份报表时,我们可能想知道更多的东西,此时可以选择”向下钻取”.采用更加详细的细节视图替换汇总视图.可能选择更深入的钻取或者上下反复,用不同的方法来观察某一事情
钻取的定义
钻取这个次意味着对某些事情的深入挖掘.从维度环境来看,某些事情代表事实.钻取的一般概念简单来说就是添加维度细节,下图对此概念进行了说明,图的左边显示的基本报表展示的时一个事实,order dollars是按照被称为category的维度进行划分的
Untitled.png (1310×765) (amazonaws.com)
增加维度细节
二. 属性层次和钻取
属性层次
许多维度可以被理解为包含连续主从关系的属性层次.此类层级的最底层代表维度表中描述的最低级别的详细信息,最高层代表最高级别的概要信息.每一级别都有可能有一个属性的集合,该集合与下一级别存在主从关系
Untitled.png (1270×950) (amazonaws.com)
产品表中的属性层次
在属性层次中钻取
一些软件工具将钻取的概念与属性层次的概念关联起来,这些工具将层次作为预先定义的钻取路径.查询事实时,通过在层级的下一个级别中添加一个维度属性来完成向下钻取.这种方法对于理解事实表中的信息非常有用 — 连续地提供有关事实的详细视图.依照这样的思路,上钻操作是通过去除属于当前层次结构级别的属性而开展的
钻取的其他方法
- 维度的多重层次结构
- 维度交叉
- 回避层次结构
- 实例层次结构
文档化属性层次结构
- 配置基于属性的钻取特征
- 信息收集
Untitled.png (1312×890) (amazonaws.com)
文档属性层次结构
三. 雪花模式
规范化原则适用于操作型系统的应用模式,支持各种能更新数据的并发事务,分析型数据库不能共享该应用模式且不需要此类规范化.没有必要为确保数据的完整性而增加复杂性,规范化降低了可用性,使得ETL过程复杂化,并且可能会对性能产生影响.事实上,数据冗余带来了一些好处,其中一个优点就是可理解性.商业用户能容易理解星型模式的含义.相对度量处于星型模式的中间部分,围绕中间部分的是对其过滤和分组的选项,许多查询可以按照简单的模板构造.
四. 支架表
Untitled.png (575×897) (amazonaws.com)
维度表中重复的地点和日期属性
有时,属性的重复集合可能导致忽视表达的不一致的情况,特别是当属性在多表中重复出现时.如果属性集合比较大,属性对行长度的影响这一次要问题可能会变的重要.出现这些情况时,设计者可能会考虑放松对雪花模式的限制,将重复属性放置在新表中,并通过主键/外键关系连接到维度.这样的表称为支架表.支架表可以确保采用单一的ETL过程和一致性的表示,但是对可用性和性能有一定的影响.维度表设计的一个常见问题是属性的重复组问题.当维度表中包含的一组属性多次出现或者出现在多个维度表中,可能需要关注行的长度或者一致性.如果其他解决该问题的机制不能高效的解决此问题时,可以采用支架表解决方案
通过支架表消除重复组
Untitled.png (1313×1004) (amazonaws.com)
销售人员维度的两个支架表
其实很好理解就是抽象出来两张维度表,日期表和地点支架表,这两张表比较通用,可以同时关联用户维度表,门店维度表,订单事实表,可以看到,冗余被大量减少了,结构也看起来舒服多了,常见的支架有:日期表,时间表,地点表等.(正如雪花模型的ETL令人头痛一样,支架表的ETL也极为复杂)