《数据仓库中事实表和维度表在各层的角色与关系解析》
一、数据仓库分层概述
在数据仓库架构中,通常分为多层,常见的分层包括源数据层、操作数据存储(ODS)层、数据仓库明细层(DWD)、数据仓库汇总层(DWS)以及应用数据层(ADS)等,每一层都有其特定的功能和意义,而事实表和维度表在不同的层中扮演着不同的角色。
图片来源于网络,如有侵权联系删除
二、源数据层中的事实表和维度表相关数据
源数据层是数据仓库的数据源头,它包含了从各种业务系统中抽取出来的原始数据,在这个层面,事实数据和维度数据往往是混杂在一起的,以业务系统的原生格式存在,在一个电商系统的数据库中,订单表包含了订单金额(事实数据)、下单时间(事实数据),同时也包含了用户ID(可作为维度数据关联用户维度表)、商品ID(可作为维度数据关联商品维度表)等信息,这些数据可能存在于不同的数据库表中,并且数据结构和质量可能参差不齐。
三、操作数据存储(ODS)层的事实表和维度表
1、事实表相关
- ODS层的事实表主要是对源数据进行初步整合,它的主要目的是尽可能原汁原味地保存源数据的内容,对于电商系统中的订单数据,ODS层的订单事实表会将从各个数据源抽取来的订单数据进行简单的合并和清洗,它可能会处理一些明显的数据错误,如订单金额为负数(如果在业务逻辑中不允许)等情况,在这个层面,事实表中的数据粒度通常与源系统保持一致,也就是最细粒度的数据。
- 从数据量来看,ODS层的事实表数据量较大,因为它涵盖了所有的原始业务数据,电商系统每天可能会产生大量的订单,这些订单都会完整地记录在ODS层的订单事实表中。
2、维度表相关
- 维度表在ODS层也开始有初步的构建,对于一些相对稳定的维度数据,如用户的基本信息(用户名、性别、注册时间等),会从源系统抽取到ODS层的用户维度表中,这个维度表的作用是为了在后续的数据处理中能够方便地与事实表进行关联。
- 在ODS层,维度表的数据质量提升工作也开始启动,对用户性别数据可能会进行格式统一,确保所有记录的性别表示方式一致(如男/女,而不是1/0或者其他不规范的表示)。
四、数据仓库明细层(DWD)中的事实表和维度表
1、事实表相关
- 在DWD层,事实表会进行更深入的清洗和转换,以电商订单事实表为例,它可能会将订单金额按照不同的货币汇率进行统一换算(如果涉及多币种业务),并且对订单状态进行标准化处理,将不同来源表示订单已完成的状态码统一为一种标准状态。
图片来源于网络,如有侵权联系删除
- 事实表的结构也可能会进行调整,将一些与订单相关的衍生事实数据计算出来并添加到事实表中,像订单的利润(如果可以根据订单金额和成本计算得出)等,这样做的目的是为了在后续的分析中能够更方便地获取这些数据,同时减少在查询过程中的计算量。
- DWD层的事实表依然保持着最细的粒度,这是为了能够支持各种不同维度的分析需求,既可以按照天来分析订单量,也可以按照小时或者更小的时间单位进行分析。
2、维度表相关
- 维度表在DWD层得到进一步的完善,对于用户维度表,可能会增加一些新的维度属性,如用户的地域层级信息(从用户的注册地址解析出省、市、区等信息),这些新增加的维度属性可以为更深入的数据分析提供支持。
- 维度表在DWD层也会进行数据的整合和去重,对于从多个源系统抽取来的用户维度数据,如果存在重复的用户记录(可能由于系统间数据同步问题),会进行去重处理,确保维度表中的数据唯一性。
五、数据仓库汇总层(DWS)中的事实表和维度表
1、事实表相关
- 在DWS层,事实表开始进行汇总操作,以电商业务为例,订单事实表可能会按照不同的维度进行汇总,如按照天、地区、商品类别等进行订单金额的汇总,这些汇总后的事实表数据可以大大提高查询效率,满足一些常见的报表和分析需求。
- 汇总后的事实表数据量相对DWD层会减少很多,原本DWD层的订单事实表可能包含每天数以万计的订单记录,而在DWS层按照天汇总后的订单事实表,每天只有一条记录(包含当天的总订单金额、总订单数量等汇总信息)。
2、维度表相关
- 维度表在DWS层主要是为了与汇总后的事实表进行关联,它的结构相对稳定,主要是提供汇总事实表所需的维度信息,在按照地区汇总订单金额时,地区维度表提供了地区的名称、编码等信息,以便能够准确地将订单金额汇总到相应的地区。
六、应用数据层(ADS)中的事实表和维度表
图片来源于网络,如有侵权联系删除
1、事实表相关
- ADS层的事实表是为了满足特定的应用需求而定制的,对于一个电商的销售分析应用,ADS层的事实表可能会包含按照特定时间段(如最近一周、最近一个月)和特定商品类别(热门商品、滞销商品等)汇总的订单数据,这些数据已经经过了前面多层的处理和筛选,专门用于这个应用的展示和分析。
- 事实表在ADS层的结构和内容是高度定制化的,它可能只包含了满足应用需求的少数几个字段,而不像DWD层那样包含所有的原始事实数据字段。
2、维度表相关
- 维度表在ADS层也是为了配合事实表满足应用需求,在一个销售分析应用中,可能只需要商品维度表中的商品名称、类别和价格等几个字段,而不需要其他在DWD层或者DWS层可能存在的一些复杂的维度属性,维度表在这个层面主要是为了确保事实表中的数据能够在应用中被正确地解读和分析。
七、事实表和维度表在各层之间的关系与数据流向
从源数据层到ODS层,事实表和维度表相关数据是抽取和初步整合的关系,数据从源系统被抽取到ODS层,在这个过程中,事实表和维度表的数据开始有了初步的分离和清洗。
从ODS层到DWD层,是进一步的数据加工关系,事实表变得更加规范,维度表更加完善,数据的质量和可用性进一步提高。
从DWD层到DWS层,事实表进行汇总操作,维度表为汇总提供支持,数据量减少但信息更加集中,便于快速查询和分析。
从DWS层到ADS层,是根据特定应用需求进行定制化的关系,事实表和维度表都以最适合应用的形式存在,以满足最终的业务分析和决策需求。
事实表和维度表在数据仓库的不同层中经历了从原始数据到高度定制化数据的转变过程,每一层都在数据的处理、存储和分析中发挥着不可或缺的作用。
评论列表