一、宽表的设计
在数据仓库实践中,宽表模型以结构简单,模型容易理解,数据访问效率等优势,被业界广泛采用。 所谓宽表就是,基于某个实体分析对象而建立的一个逻辑数据体系,由实体的维度、描述信息、以及基于这个实体一系列度量组成。
作为数仓里面非常重要的一块,前面我们介绍过了维度表、事实表,今天我们介绍一下宽表。前面也说过了数仓是分层的,这是技术进步和时代变化相结合的产物,数仓的分层是为了更好地管理数仓以及更加高效地进行数据开发。
而宽表主要出现在 DWD 明细层和 ADS 报表层,当然有的人说 DWS 层也有。宽表:从字面意义上讲就是字段比较多的数据库表,通常情况下是将很多相关的数据包括维度表、实时、已有的指标或者是 DWS/DWD 表关联在一起形成的一张数据表。
由于把不同的内容都放在同一张表存储,宽表已经不符合数据仓库三范式的模型设计规范,将大量不同范畴的字段放到一张表里,故随之带来的主要坏处就是数据的大量冗余;但也带来了好处,与之相对应的好处就是查询性能的提高与便捷,查询时不需要跨表只需在这张宽表里进行即可,不需要与许多维度表进行join操作,故节省并减轻了系统资源开销(网络+内存+算力等等),这在数据体量较大时尤为明显 。
这种宽表的设计广泛应用于机器学习/数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提高数据挖掘模型训练过程中迭代计算时的效率问题。(总之,利用空间换时间,在大数据环境下便于训练迭代、减少表关联数量,修改少量数据时不需要管多张表)。