对于数据仓库建立多维模型思考
首先要理解的一个问题就是,什么叫做多维模型?
就是使用一种方法来将现实世界的事物进行抽象,概括的一种方法。
对于多维的理解:像是写记叙文中需要的时间,地点,人物这几个基本要素,有这样的基本要素/限定条件,才能较为精确,完整的描述一件事情。
同样对于一条数据而言,数据本身没有意义,当你从不同维度加以修饰限定,加工出来的数据,对于数据仓库来说有这就是建立多为模型的意义所在
多维模型的类型
多维模型分为两类,星型和雪花,
给大家画个图吧:
星型模型
雪花模型
大概这两种模型就长这样,画的一般,大概知道意思就行~
星型模型一般不用那么多维度表,最后呈现的就是一张巨大的宽表
雪花模型的使用是为了部分公共维度的东西能被复用,就形成一张单独的维度表,如果维度拥有层级就形成了雪花,即子维度,例如机构树,分层,如果机构层级发生变化,其修改的成本将会降低许多。也算是对于星型模型的优化。
根据上图也能看出,多维模型分为两类表,事实表和维度表
事实表是啥?维度表又是啥?
事实表我的理解就是,演员列表,放着各种各样的演员,都有自己的编号。
维度表就是剧本,限定一个演员在电影里,在什么时间,什么地点,说什么话,做什么事等等东西。
这只是举个例子,在实际使用中事实表一般存放:
- 事实表主键(数据的粒度提现在这)
- 公共维度
- 度量(可以被统计的,计算的数据)
- 指标(根据需求而定)
- 隐藏指标(更具数据使用的经验而定)
- 常用的信息
维度表一般存放: - 类型
- 日期
- 标志
- 限定条件(可以被Where的字段)
根据目前的学习,总结出上述内容,个人理解。嘻嘻嘻