Data Warehousing基本表:
- Dimension(维度表): 度量表
- Fact(事实表): 数字表,倾向于更多的行和更少的列
建模四步曲:
- 选取业务处理过程
- 定义业务处理粒度
- 选定维度
- 确定事实
最重要的事情:规范。名称的规范,计算方式的规范.....
在事实表和维度表中,尽量不要使用本身已有的关键字,而使用数字类型的代理关键字。
原因:
- 速度更快
- 可能会存在本身已有的关键字(比如产品SKU)会同时存在多行的情况(缓慢变化维).
退化维度:只有一个维度属性值,比如订单编号,就应该直接放入到事实表中
缓慢变化维(Slowly Changing Dimensions):“基本”保持不变的维度
以产品维度来介绍三种做法:
- 直接修改属性:
优点:快速、方便,适用于更正作用的属性值。
缺点:丢失了历史变化 - 添加维度行:
优点:保持历史变化,不需要变动事实表(一个产品SKU可能对应不同的代理关键字)。
缺点:加速了维度表的膨胀,不能将新属性值同旧事实历史联系起来。 - 添加维度列:
优点: 适用于同时强烈需要为两个方面的视图提供支持的应用,可以同时跟踪维度值转换的变化。比如用户可能希望按照新的地区名称跟踪历史,并且反过来按照旧的地区名称跟踪新的数据。
缺点:不适用于跟踪大量的中间属性值带来的影响。
混合渐变维:
- 可预见的“多”重变化(比如按年审视销售地域分布):添加多个可遇见的维度列,如2001年地区,2002年地区,2003年地区,当年地区....
- 不可预见的“单”重变化:增加新行捕获变化内容,并且增加新列跟踪变动情况。
维度角色模仿:
- 同样的维度(比如说订单事实表中的订单日期和发货日期)需要用不同的视图(View)来表示,否则在把这两种日期列都拖入报表时,SQL可能无法区分Or的关系(会认为要求这两个日期是and的关系)。