关于数仓学习中的一些认知

一,数仓基础

        首先,数仓主要是用于存储过去既定发生的历史数据, 对这些数据进行数据分析的操作, 从而对未来提供决策支持。

最大的优点是:既不生产数据, 也不消耗数据, 数据来源于各个数据源

关于数据库和数据仓库的区别:
数据库(OLTP):  面向于事务(业务)的 , 主要是用于捕获数据 , 主要是存储的最近一段时间的业务数据, 交互性强 一般不允许出现数据冗余
数据仓库(OLAP): 面向于分析(主题)的 , 主要是用于分析数据, 主要是存储的过去历史数据 , 交互性较弱 可以允许出现一定的冗余

       数仓建模指的是如何在hive中构建表,提供两种理论来进行数仓建模:三范式建模和维度建模理论。

维度建模

        首先要明白什么是维度,维度一般分为定性维度和定量维度,简单来说就是定性维度会更宽泛一些,它是分类的依据,比如是按天按月按地区来划分整个数据,一般放在group by位置;定量维度更倾向于统计具体的维度,好比在一个定性维度下挑选其中一个变量来进行分析,比如在按年统分类的条件下,我只统计2024年度的订单额,这就是定量维度。
         还有有关维度下钻和上卷的知识,以某一个维度为基准,向上分层,就是上卷;向下分层,就是下钻。以及维度建模的两大核心概念:事实表和维度表
事实表的分类:
1) 事务事实表:
    保存的是最原子的数据,也称“原子事实表”或“交易事实表”。沟通中常说的事实表,大多指的是事务事实表。
2) 周期快照事实表:
    周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等
    周期表由事务表加工产生
3) 累计快照事实表:
    完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点

维度表
高基数维度表: 指的表中的数据量是比较庞大的, 而且数据也在发送的变化
    例如: 商品表, 用户表
低基数维度表: 指的表中的数据量不是特别多, 一般在几十条到几千条左右,而且数据相对比较稳定
    例如: 日期表,配置表,区域表
维度建模的三种模型
  • 第一种: 星型模型
    • 特点: 只有一个事实表, 那么也就意味着只有一个分析的主题, 在事实表的周围围绕了多个维度表, 维度表与维度表之间没有任何的依赖
    • 反映数仓发展初期最容易产生模型
  • 第二种: 雪花模型
    • 特点: 只有一个事实表, 那么也就意味着只有一个分析的主题, 在事实表的周围围绕了多个维度表, 维度表可以接着关联其他的维度表
    • 反映数仓发展出现了畸形产生模型, 这种模型一旦大量出现, 对后期维护是非常繁琐, 同时如果依赖层次越多, SQL分析的难度也会加大
    • 此种模型在实际生产中,建议尽量减少这种模型产生
  • 第三种: 星座模型
    • 特点: 有多个事实表, 那么也就意味着有了多个分析的主题, 在事实表的周围围绕了多个维度表, 多个事实表在条件符合的情况下, 可以共享维度表
    • 反映数仓发展中后期最容易产生模型

缓慢渐变维
解决问题: 解决历史变更数据是否需要维护的情况
  • SCD1: 直接覆盖, 不维护历史变化数据
    • 主要适用于: 对错误数据处理
  • SCD2:不删除、不修改已存在的数据, 当数据发生变更后, 会添加一条新的版本记录的数据, 在建表的时候, 会多加两个字段(起始时间, 截止时间), 通过这两个字段来标记每条数据的起止时间 , 一般称为拉链表
    • 好处: 适用于保存多个历史版本, 方便维护实现
    • 弊端: 会造成数据冗余情况, 导致磁盘占用率提升
数仓建模分层:
ODS层: 源数据层
    作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的拷贝到ODS层中)
    注意:
        如果数据来源于文本文件, 可能会需要先对这些文本文件进行预处理(spark)操作, 将其中不规则的数据, 不完整的数据, 脏乱差的数据先过滤掉, 将其转换为一份结构化的数据, 然后灌入到ODS层
    
    一般放置 事实表数据和少量的维度表数据
DW层:  数据仓库层
    DWD层: 明细层
        作用: 用于对ODS层数据进行清洗转换工作 , 以及进行少量的维度退化操作
                少量: 
                    1) 将多个事实表的数据合并为一个事实表操作
                    2) 如果维度表放置在ODS层 一般也是在DWD层完成维度退化
    DWM层: 中间层
        作用:  1) 用于进行维度退化操作  2) 用于进行提前聚合操作(周期快照事实表)
    DWS层: 业务层
        作用: 进行细化维度统计分析操作
DA层:  数据应用层
    作用: 存储基于DWS层再次分析的结果, 用于对接后续的应用(图表, 推荐系统...)
    例如:
        比如DWS层的数据表完成了基于订单表各项统计结果信息,  但是图表只需要其中销售额, 此时从DWS层将销售额的数据提取出来存储到DA层
DIM层: 维度层
    作用: 存储维度表数据

什么叫做维度退化: 是为了减少维度表的关联工作
    做法: 将数据分析中可能在维度表中需要使用的字段, 将这些字段退化到事实表中, 这样后续在基于维度统计的时候, 就不需要在关联维度表, 事实表中已经涵盖了维度数据了
    例如:    订单表, 原有订单表中只有用户id, 当我们需要根据用户维度进行统计分析的时候, 此时需要关联用户表, 找到用户的名称, 那么如果我们提前将用户的名称放置到订单表中, 那么是不是就不需要关联用户表, 而则就是维度退化
    
    好处: 减少后续分析的表关联情况
    弊端: 造成数据冗余
  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值