• 数据仓库维度建模


    (一)、事实表类型
    事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表和累计快照事实表。
    1、事务事实表
    用于承载事务数据,通常粒度比较低,例如产品交易事务事实、ATM交易事务事实。
    2、周期快照事实表
    用于记录有规律的、固定时间间隔的业务累计数据,通常粒度比较大,例如账户月平均余额事实表。
    3、累计快照事实表
    用于记录具有时间跨度的业务处理过程的整个信息,通常这类事实表相对比较少见。

    (二)、星型模型和雪花模型
    维度建模中,存在两种组合维度表和事实表的基本模型:星型模型和雪花模型。
    1、星形模型
    当所有维度表直接连接到事实表时,整个组合的形态类似于星星,所以被称为星形模型。
    星形模型是一种非规范的结构,其数据存储存在冗余,比如考虑商品的维度表,其品牌信息在商品的每一行中都存在,包括其中品牌ID、名称、品牌拥有者等。通常很多商品的品牌都是一样的,所以在商品维度表中品牌的信息被重复存储了很多次,也就是存在冗余。
    2、雪花模型
    当有一个或者多个维度表没有直接连接到事实表,而是通过其他维度表连接到事实表上时,整个组合的形状就像雪花一样,这种架构被称为雪花模型。
    雪花模型是对星形模型维度表的规范化,比如上述的商品表例子,在雪花模型中,其每一行仅存储品牌ID,而品牌的所有模型其他信息(包括品牌名称、拥有者、注册地等所有描述信息)都存储在单独的品牌维度表内。通过品牌ID这个外键,商品表可以间接获得所有品牌描述信息。
    雪花模型去除了数据冗余,节省了部分存储,但是也给下游用户的使用带来了不便,如下游用户需要分析品牌的销售额,必须自己先用订单表关联商品表,然后用商品表再关联品牌表。正式由于这一点,在维度建模的实际中,雪花模型很少使用。

    (三)、维度建模一般过程
    维度建模一般采用具有顺序的4个步骤来进行设计,即选择业务过程,定义粒度,确定维度和确定事实。
    1、选择业务过程
    业务过程即企业和组织的业务活动,它们一般都有相应的源头业务系统支持。对于一个超市来说,最基本的业务活动就是用户收银台付款;对于一个保险公司来说,最基本的业务活动是理赔和保单等。当然在实际操作中,业务活动有可能并不是那么简单直接,此时听取用户的意见通常是这一环节最为高效的方式。
    2、定义粒度
    定义粒度意味着对事实表行实际代表的内容和含义给出明确的说明。粒度传递了事实表度量值相联系的细节所达到的程度信息。其实质就是如何描述事实表的单个行。
    典型的粒度定义包括:
    超市顾客小票的每一个子项
    医院收费单的明细子项
    个人银行账户的每一次存款或者取款行为
    个人银行账户每个月的余额快照
    在定义粒度过程中,应该最大限度地选择业务过程中最为原子性的粒度,这样可以带来后续的最大灵活度,也可以满足业务用户的任何粒度的分析需求。
    3、确定维度
    定义了粒度之后,相关业务过程的细节也就确定了,对应的维度就很容易确定。维度是对度量的上下文和环境的描述。通过维度,业务过程度量与事实就会变得丰富和丰满起来。
    4、确定事实
    确定事实通过业务分析可能要分析什么来确定。

    (四)、缓慢变化维的处理方法
    1、重写维度值
    直接用新值覆盖旧值
    2、插入新的维度行
    通过在维度表中插入新的行来保存和记录变化的情况
    插入新的维度列

  • 相关阅读:
    MySQL - 多表查询与案例详解
    Element类型
    “勤学会”火爆来袭
    osg 操作 NodePathList 节点操作
    使用 Spring Security 实现安全认证的 Spring Boot 应用
    专业翻译哪家强?插件AI来帮忙!
    MFC Windows 程序设计[137]之坐标转换玄机(附源码)
    C++---链表
    最近对前端构建工具的一些理解
    k8s--基础--22.10--storageclass--类型--Azure 磁盘
  • 原文地址:https://blog.csdn.net/lin434406218/article/details/128061522