一、维表&事实表
- 说法一
以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了:
维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进行分析,或按区域来分析. 这样的按..分析就构成一个维度。前面的示例就可以有两个维度:类型和区域。另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性。下面是两个常见的维度表结构:
产品维度表:Prod_id, Product_Name, Category, Color, Size, Price
时间维度表:TimeKey, Season, Year, Month, Date
而事实表是数据聚合后依据某个维度生成的结果表。它的结构示例如下:
销售事实表:Prod_id(引用产品维度表), TimeKey(引用时间维度表), SalesAmount(销售总量,以货币计), Unit(销售量)
上面的这些表就是存在于数据仓库中的。从这里可以看出它有几个特点:
- 维度表的冗余很大,主要是因为维度一般不大(相对于事实表来说的),而维度表的冗余可以使事实表节省很多空间。
- 事实表一般都很大,如果以普通方式查询的话,得到结果一般发的时间都不是我们可以接受的。所以它一般要进行一些特殊处理。如SQL Server 2005就会对事实表进行如预生成处理等。
- 维度表的主键一般都取整型值的标志列类型,这样也是为了节省事实表的存储空间。
- 说法二
事实是各个维度的的交点,是对某个特定事件的度量。若干个一致的事实能够被组合到一个公共的结构中就是事实表。
关于事实的描述性属性能够被组合到一个或多个公共的结构中就是维表。维表的本质是多维分析空间在某个角度的投影,多个维表共同建立一个多维的分析空间。
维表是用户分析决策的角度,事实表是分析主体的量化体现。
网友评论