目录
概念 | 解释 |
数据仓库 Data Warehouse DW DWH | 数据仓库是面向主题的,集成的(非简单的数据堆积)、相对稳定的、反应历史变化的数 据集合,数仓中的数据是有组织有结构的存储数据集合,用于对管理决策过程的支持。 |
数据库三范式
1NF:原子性。字段不可分
2NF:唯一性。有主键,非主键字段依赖主键
3NF:非主键字段不能相互依赖
数据仓库发展历史
自上而下,缺点:业务系统来的关系型数据,经过数仓,又要转换回关系型送到数据集市。
自下而上,缺点:业务系统来的关系型数据,关联后构建各个数据集市(数仓包含各种集市)。但各个集市的数据(1)数据冗余(2)难关联起来(维度建模是反范式的)
数据仓库分层设计
实战
维度建模![](https://i-blog.csdnimg.cn/blog_migrate/3f041bc3eff8ee80e36f67318d834789.png)
事实表&维度表
事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录等;事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。
维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。
使用维度表有诸多好处,具体如下:
缩小了事实表的大小。
便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动。
维度表可以为多个事实表重用,以减少重复工作。
PS:这种解释,每个字都能看懂,但是连起来都不知道说啥?
个人觉得维度表可能会兼顾1~3NF范式,事实表基本不兼顾。
简单的说维度表就是你观察该事物的角度(维度);事实表就是你要关注的内容。
比如要分析产品销售情况, 你可以选择按产品类别来进行分析,或按时间来分析,这样的按…分析就构成一个维度。这样就有两个维度:产品类别和时间。
下面是两个维度表结构:
产品维度表:Prod_id, Product_Name, Category, Color, Size, Price
时间维度表:TimeKey, Season, Year, Month, Date而事实表是数据聚合后依据某个维度生成的结果表,例如:
销售事实表:Prod_id(引用产品维度表), TimeKey(引用时间维度表), SalesAmount(销售总量,以货币计), Unit(销售量)
事实数据和维度数据的识别必须依据具体的主题问题而定。“事实表”,用来存储事实的度量(measure)及指向各个维的外键值。维表用来保存该维的元数据,即维的描述信息,包括维的层次及成员类别等
所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与纬度表中对应项的相关索引字段之外的任何数据。
包含在事实数据表中的“度量值”有两种:一种是可以累计的度量值,另一种是非累计的度量值。最有用的度量值是可累计的度量值,其累计起来的数字是非常有意义的。用户可以通过累计度量值获得汇总信息,例如可以汇总具体时间段内一组商店的特定商品的销售情况。非累计的度量值也可以用于事实数据表,单汇总结果一般是没有意义的,例如,在一座大厦的不同位置测量温度时,如果将大厦中所有不同位置的温度累加是没有意义的,但是求平均值是有意义的。
一般来说,一个事实数据表都要和一个或多个纬度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。
维度表可以看作是用户来分析数据的窗口,纬度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。例如,包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构,这些产品中的每一类进一步多次细分,直到各产品达到最低级别。
在维度表中,每个表都包含独立于其他维度表的事实特性,例如,客户维度表包含有关客户的数据。维度表中的列字段可以将信息分为不同层次的结构级。
数据分析模型
(1)星型模型
(2)雪花模型
星型模型:反范式建模。基本关联一层(圈) ,维度表可能有数据冗余。
雪花模型:满足1~3NF范式建模。关联多层(圈),维度表没有数据冗余,但是查询数据需要多表关联,效率低。