数据仓库入门教程

1,115 阅读5分钟
1、数仓基础

(1)什么是数仓。

通俗的说,就是存放着大量数据的地方,它英文名称为Data Warehouse,可简写为DW。数仓最常见的组件是hive,clickhouse。

(2)用来做什么

大量的数据放在一起,有利于中寻找有用的信息,主要是用来做三方面的事情:

  • 了解现状:掌握占比、同比、环比等重要指标
  • 辅助决策:这里举个例子,上世纪90年代,沃尔玛引入算法后发现尿布与啤酒的关联度极高,市场调研发现是太太们叮嘱丈夫下班后为小孩买尿布,顺手就会带上啤酒
  • 预测走势:通过数据的分析,判断业务未来的变化

(3)为什么用数仓做而不是关系型数据库

如果没有数仓,报表、分析系统的数据可能就需要从OLTP的库中来,这样做有以下缺点:

  • 性能问题,OLAP业务往往会涉及到大量的数据,这会影响OLTP应用sql的性能
  • 数据格式的不统一,例如金额单位,时间单位
  • 业务系统变更频繁,数据库字段变更速度较快
  • 安全问题
  • 误用业务数据

(4)数仓的特征

  • 集成(核心特征)通常OLTP应用的数据都是比较分散的,数仓则会把这些数据集中到一起,有两个目的,一是要统一所有的数据的矛盾之处,二是要进行数据综合和计算
  • 面向主题(核心特征)网上乱七八糟概念太多,用人话解释,就是看问题的维度
  • 非易失性 一是指数据一般会被保留很久时间,二是指通常都是查看操作,很少有删除和修改这类操作
  • 时变性 指数据是按照时间顺序追加的,它们都带有时间属性

(5)数仓和数据库的区别

本质上还是OLAP和OLTP的区别。

OLTP:On-Line Transaction Processing,面向事务的处理系统,指系统的关注点主要集中在:响应时间、数据的安全性、完整性和并发支持的用户数等问题,主要使用传统的数据库系统作为数据管理的主要手段,主要用于操作型处理,像Mysql,Oracle等关系型数据库一般属于OLTP。

OLAP:On-Line Analytical Processing,面向分析的处理系统,一般针对某些主题的历史数据进行分析,支持管理决策。

冗余设计针对数据的主要操作数据规模延迟事务
数仓刻意冗余分析不支持
数据库避免冗余捕获支持
2、数仓架构

image.png

  • ODS(数据源层Operational Data Store)ODS 层,是最接近数据源中数据的一层,为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即可,至于数据的去噪、去重、异常值处理等过程可以放在后面的 DWD 层来做

  • DW(数据仓库层Data Warehouse)

    1)DWD (数据明细层Data WareHouse Detail)

    一般保持和 ODS 层一样的数据粒度,并且提供一定的数据质量保证。DWD 层要做的就是将数据清理、整合、规范化、脏数据、垃圾数据、规范不一致的、状态定义不一致的、命名不规范的数据都会被处理同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联

    另外,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

    其实上面的话,总结成一句人话,就是对此层会对数据做一个初步的处理,包括清洗,整理以及聚合之类的操作。

    2)DWM(数据中间层Data WareHouse Middle)

    基于 DWD 层上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。DWS 层应覆盖 80% 的应用场景。又称数据集市或宽表。

    按照业务划分,如主题域流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP 分析,数据分发等。

    3)APP(数据应用层)

    这时候已经是可以提供给业务直接使用的数据层了。

3、数仓建模方法

(1)范式建模:同关系型数据库三大范式,分别是:

每个属性值唯一,不具有多义性 ;
每个非主属性必须完全依赖于整个主键,而非主键的一部分 ;
每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去

(2)维度建模(最常用的方法):分为两种表:事实表和维度表,维度建模就是在这两种表的基础之上来构建数据集市的。

维度表:指根据分析数据的角度,来创建的表,所谓维度,即指分析事物的角度,这个思想是重中之重,常见的角度有时间、地 域、终端、用户等。

事实表:必然存在的一些数据,像采集的日志文件,订单表,都可以作为事实表 。 特征:是一堆主键的集合,每个主键对应维度表中的一条记录,客观存在的,根据主题确定出需要使用的数据。 用人话讲,事实表,就是包含着ODS层,DWS,DWD层的表,可以说,除过维度表,在维度建模中,其他所有表,几乎都是事实表。

image.png