数仓建模
数仓建模
- 什么是事实表?如何理解事实表?
- 介绍
- 事实表,通常记录的是一次事实行为,比如一个鼠标点击动作,一个下单动作。类似于记录行为的流水表,它的数据是实时产生和动态变化的。
- 作用
- 保存的是某个主题的行为。比如上网主题、订单主题。
- 特点
- 数据量相对较大,且是实时产生和动态变化的。
- 介绍
- 什么是维度表?如何理解维度表?
- 介绍
- 维度表,是事实表的补充,是一次事实行为的描述信息(某人,某地,某时)。这类信息不会频繁变化,但又会重复出现。我们可以将这些信息拆分出来,形成维度表。
- 作用
- 辅助事实表中的数据,加以说明、补充的。
- 特点
- 数据量相对较小,且相对静态,不易发生变化。
- 介绍
- 什么是粒度?什么是度量值?
- 粒度
- 某一维度某事实行为下统计数据的粗细程度,比如统计某人一次下单金额中的一次是细粒度,统计某人一天下单金额中的一天是粗力度。
- 度量值
- 某一维度某事实行为下统计数据产生的数值,比如统计某人一次下单金额中的金额数值就是度量值。
- 粒度
- 什么是宽表?如何理解宽表?
- 安瑞哥是码农【什么是宽表?如何理解宽表?】 介绍
- 也是事实表,比普通表(事实表)来说字段更多。
- 作用
- 因为有很多的字段,意味着包含着很多的数据信息,很多的数据信息能提供更完整的业务价值。
- 好处
- 效率比普通表更快
- 为什么?
- 普通表考虑维度拆分和数据库范式等。
- 对于同一个业务需求来说,宽表直接可以提供满足业务需求的所有维度。
- 而普通表需要和各种维度信息join操作后才能达到目的,而join一定会触发shuffle,而shuffle会影响效率,让整个数据分析流程变的缓慢。
- 为什么?
- 效率比普通表更快
- 坏处
- 1)因为宽表把所有跟某个事件相关的维度都揉在了一起,所以会保存很多重复的变化缓慢的维度信息,浪费存储空间。
- 2)宽表通常是为满足某个业务需求设计,若需求有变更就要重新设计一张宽表,导致宽表使用场景范围很窄,如果类似的需求很多,系统会出现大量的数据复用度很低的宽表。
- 导致
- 数仓建设缺少设计感,长此以往系统的开发效率变低,因为没有中间层的概念,就没有模块复用的这一说法。
- 因为大家都只想着数据为最终的业务目标服务,就不会考虑数据建设和规范,陷入一种比较极端的开发状态中。
- 数据仓库建模概念就是让数据的功能和属性拆分,目的是用最小的开发成本,来满足多变的业务需求。如果系统都用宽表实现的话,那么建模工作所带来的收益,自然就会被大大的削弱,让系统的数据存储变得十分臃肿。
- 导致
- 总结
- 所以说宽表是一把双刃剑,它在带来数据处理效率提升的同时,也破坏了数据库建模的很多规范。
- 安瑞哥是码农【什么是宽表?如何理解宽表?】 介绍