1. 数仓概念

1.1 为什么学习数据仓库

  • 数据不兼容, 很难被整合
  • 战略决策需要数据的分析
  • 推荐系统

1.2 什么是数据仓库

数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合。

数据仓库的概念介绍

1.2.1 面向主题

  • 主题(Subject)是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念
  • 每一个主题基本对应一个宏观的分析领域
  • 在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象

例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”

一个面向事务处理的“商场”数据库系统,其数据模式如下:

  • 采购子系统:
    订单(订单号,供应商号,总金额,日期)
    订单细则(订单号,商品号,类别,单价,数量)
    供应商(供应商号,供应商名,地址,电话)

  • 销售子系统:
    顾客(顾客号,姓名,性别,年龄,文化程度,地址,电话)
    销售(员工号,顾客号,商品号,数量,单价,日期)

  • 库存管理子系统:
    领料单(领料单号,领料人,商品号,数量,日期)
    进料单(进料单号,订单号,进料人,收料人,日期)
    库存(商品号,库房号,库存量,日期)
    库房(库房号,仓库管理员,地点,库存商品描述)

  • 人事管理子系统:
    员工(员工号,姓名,性别,年龄,文化程度,部门号)
    部门(部门号,部门名称,部门主管,电话)

1.2.2 集成

  • 集成性是指数据仓库中数据必须是一致的
    • 数据仓库的数据是从原有的分散的多个数据库、数据文件和数据段中抽取来的
    • 数据来源可能既有内部数据又有外部数据
      • 例如F/M,0/1,A/B
  • 集成方法
    • 统一:消除不一致的现象
    • 综合:对原有数据进行综合和计算

1.2.3 非易失

  • 数据仓库中的数据是经过抽取而形成的分析型数据
    • 不具有原始性
    • 主要供企业决策分析之用
    • 执行的主要是‘查询’操作,一般情况下不执行‘更新’操作
    • 一个稳定的数据环境也有利于数据分析操作和决策的制订

1.2.4 随时间变化

  • 数据仓库以维的形式对数据进行组织,时间维是数据仓库中很重要的一个维度
    • 不断增加新的数据内容
    • 不断删去旧的数据内容
    • 更新与时间有关的综合数据

1.3 数据仓库和数据库的区别

  • 数据库是为捕获和存储数据而设计
  • 数据仓库是为分析数据而设计
** ** 数据库 数据仓库
本质 数据的集合 数据的集合
定位 事务处理OLTP 数据分析OLAP
面向群体 前端用户 管理人员
操作 增删改查 查询
数据粒度 事件记录 维度
表结构 3NF 星型、雪花

1.4 OLTP和OLAP的区别

  • 联机事务处理OLTP
    On-Line Transaction Processing
    OLTP是传统的关系型数据库的主要应用
对比属性 OLTP OLAP
读特性 每次查询只返回少量记录 对大量记录进行汇总
写特性 随机、低延时写入用户的输入 批量导入
使用场景 用户,Java EE项目 内部分析师,为决策提供支持
数据表征 最新数据状态 随时间变化的历史状态
数据规模 GB TB到PB

2. 数据仓库的架构

2.1 Inmon架构

数据仓库的概念介绍

2.2 Kimball架构

数据仓库的概念介绍

2.3 混合型架构

数据仓库的概念介绍

3. 数据仓库的解决方案

  • 数据采集
    Flume,Sqoop,Logstash,Datax
  • 数据存储
    MySQL,HDFS,HBase,Redis,MongoDB
  • 数据计算
    Hive,Tez,Spark,Flink,Storm,Impala
  • 数据可视化
    Tableau,Echarts,Superset,QuickBI,DataV
  • 任务调度
    Oozie,Azkaban,Crontab

4. 数据ETL

  • 抽取(Extract)
    从操作型数据源获取数据
  • 转换(Transform)
    转换数据,使之转变为适用于查询和分析的形式和结构
  • 装载(Load)
    将转换后的数据导入到最终的目标数据仓库

ETL工具

  • Oracle
    OWB和ODI
  • 微软
    SQL Server Integration Services
  • SAP
    Data Integrator
  • IBM
    InfoSphere DataStage、Informatica
  • Pentaho
    Kettle

5. 数据仓库的建模

5.1 选择业务流程

  • 确认哪些业务处理流程是数据仓库应该覆盖的
    例如:了解和分析一个零售店的销售情况
  • 记录方式
    使用纯文本
    使用业务流程建模标注(BPMN)方法
    使用同一建模语言(UML)

5.2 声明粒度

  • 用于确定事实中表示的是什么
    例如:一个零售店的顾客在购物小票上的一个购买条目
  • 选择维度和事实前必须声明粒度
  • 建议从原始粒度数据开始设计
    • 原始记录能够满足无法预期的用户查询
  • 不同的事实可以有不同的粒度

5.3 确认维度

  • 说明了事实表的数据是从哪里采集来的
  • 典型的维度都是名词
    例如:日期、商店、库存等
  • 维度表存储了某一维度的所有相关数据
    例如:日期维度应该包括年、季度、月、周、日等数据

5.4 确认事实

  • 识别数字化的度量,构成事实表的记录
  • 和系统的业务用户密切相关
  • 大部分事实表的度量都是数字类型的
    可累加,可计算
    例如:成本、数量、金额

5.5 星型模型

5.5.1星型模型特点

  • 由事实表和维度表组成
  • 一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表
  • 星型模式将业务流程分为事实和维度
    • 事实包含业务的度量,是定量的数据
      如销售价格、销售数量、距离、速度、重量等是事实
    • 维度是对事实数据属性的描述
      如日期、产品、客户、地理位置等是维度

数据仓库的概念介绍

5.5.2 优点

  • 简化查询
  • 简化业务报表逻辑
  • 获得查询性能
  • 快速聚合
  • 便于向立方体提供数据

5.5.3 缺点

  • 不能保证数据完整性
  • 对于分析需求来说不够灵活

5.6 雪花模型

5.6.1 雪花模型特点

  • 一种多维模型中表的逻辑布局
  • 由事实表和维度表所组成
  • 将星型模式中的维度表进行规范化处理
  • ​ 把低基数的属性从维度表中移除并形成单独的表
  • 一个维度被规范化成多个关联的表

数据仓库的概念介绍

5.6.2 优点

  • 一些OLAP多维数据库建模工具专为雪花模型进行了优化
  • 规范化的维度属性节省存储空间

5.6.3 缺点

  • 维度属性规范化增加了查询的连接操作和复杂度
  • 不确保数据完整性

6. 数仓分层

6.1 数仓分层

数据仓库的概念介绍

ODS层:原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。

DWD层:对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据)、维度退化、脱敏等

DWS:以DWD为基础,按天进行轻度汇总。

DWT:以DWS为基础,按主题进行汇总。

ADS层:为各种统计报表提供数据

6.2 数据仓库为什么要分层

1)把复杂问题简单化。将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题。

2)减少重复开发。规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算结果的复用性。

3)隔离原始数据。不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。

相关文章:

  • 2021-11-25
  • 2021-04-18
  • 2021-11-21
  • 2022-02-10
  • 2021-12-03
  • 2021-11-20
  • 2021-04-26
猜你喜欢
  • 2021-07-18
  • 2021-08-29
  • 2021-08-12
  • 2021-10-03
  • 2022-01-27
  • 2021-12-13
相关资源
相似解决方案