#博学谷IT学习技术支持#
1. 数据仓库介绍
1.1 数据仓库概念
《建立数据仓库》一书中对数据仓库的定义是:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、数据集成的(Integrated)、相对稳定(非易失)的(Non-Volatile)、反映历史变化(时变)(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。数据仓库是决策支持系统(dss)的结构化数据环境,如下图,决策支持系统基于数据仓库进行联机分析处理 ( OLAP ) 。常用的技术有,HDFS、HBase、Hive、SparkSql等。
- 数据采集, 将源数据采集到数据仓库
- 基于数据仓库进行数据分析
- 生成报表
1.2 OLTP和OLAP区别
OLTP(On-Line Transaction Processing)即联机事务处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一,比如ERP系统,CRM系统,互联网电商系统等,这类系统的特点是事务操作频繁,数据量小。
OLAP(On-Line Analytical Processing)即联机分析处理,有时也称为决策支持系统(DSS),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。这类系统的特点是没有事务性操作,主要是查询操作,数据量大。
详细的区别如下:
| 对比项目 | OLTP | OLAP |
|---|---|---|
| 功能 | 面向交易的事务处理 | 面向分析查询 |
| 设计 | 面向业务 | 面向主题 |
| 数据 | 最新数据,二维数据 | 历史数据,多维数据 |
| 存储 | M,G ( 存储单位 ) | T、P、E |
| 响应时间 | 快 | 慢 |
| 用户 | 业务操作人员 | 管理决策人员 |
1.3 数据仓库的特点
1.3.1 面向主题
理解主题的概念可以和数据库应用系统对比理解,数据库应用是以业务内容来划分应用程序和数据库,比如ERP(Enterprise Resource Planning)包括:进销存系统、人力资源管理系统、财务管理系统、仓库管理系统等,进销存系统管理了进货、销售、存储等业务流程,人力资源系统管理了员工的信息、待遇等相关信息;
数据仓库是以数据分析需求来对数据进行组织划分若干主题,比如销售主题、员工主题、产品主题,主题是一个抽象的概念,可以理解为相关数据的分类、目录等,通过销售主题可以进行销售相关的分析,如年度销量排行、月度订单量统计等。
总之,主题是以分析需求为导向来组织数据,数据库应用系统是以业务流程为导向来组织数据,注意:主题中的数据是跨应用系统的。
1.3.2 数据集成
主题中的数据是跨应用系统的,也就是说数据是分散在各各应用系统,比如销售数据在进销存系统中有,财务系统中也有,为了进行销售分析需要将销售数据进行集成,集成在销售主题中,就可以从销售主题来进行数据分析。
1.3.3 非易失
数据库应用系统是根据业务需求进行数据处理和存储,而数据仓库是根据数据分析需求来进行数据存储,数据仓库中的数据用于查询和分析,为了保证数据分析的准确性和稳定性,数据仓库中的数据一般是很少更新的。
1.3.4 时变
数据仓库中的数据存储的是历史数据,历史数据是随时间变化的,比如历年的销售数据都会存储到数据仓库中,即使数据仓库中的数据很少更新,但也不能保证没有变化,如下需求:
- 会不断添加新数据
每年的销售数据会逐渐添加到数据仓库。
- 删除过期数据
数据仓库中的数据会保存很长的时间(5--10年),但也有过期时间,到过期 时间会删除过期数据。
- 对历史明细数据进行聚合
为了方便数据分析,根据分析需求会将比较细粒度的数据进行数据聚合存储,这也是时变的一种表现,比如:为了方便统计年度销售额会将销售记录按月进行统计,统计年度销售额时只需要针对月度销售结果进行统计即可。
2. 数据仓库系统架构
2.1 系统结构图
数据仓库提供企业决策分析的数据环境,数据从哪里获取?数据如何存储到数据仓库?决策分析系统如何从数据仓库获取数据进行分析?我们可以把数据从获取、存储到数据仓库、数据分析的所有部分称为一个数据仓库系统,本节讲解数据仓库系统的工作流程和系统架构。
下图是数据仓库系统的结构图:
以下系统各部分的执行流程是:
- 确定分析所依赖的源数据。
- 通过ETL将源数据采集到数据仓库。
- 数据按照数据仓库提供的主题结构进行存储。
- 根据各部门的业务分析要求创建数据集市(数据仓库的子集)。
- 决策分析、报表等应用系统从数据仓库查询数据、分析数据。
- 用户通过应用系统查询分析结果、报表。
2.2 源数据
源数据是指用于分析的原始数据,这一步主要是根据分析需求确定源数据,这个数据分布在内部系统和外部分系统中,内部数据主要是企业ERP系统、外部数据是指企业外部分系统所产生的数据,通常是指行业数据。源数据最大的特点是格式不统一,如果要对源数据进行分析需要经过ETL 对数据进行集中获取、过虑、转换等处理。
2.3 ETL
ETL(Extra, Transfer, Load)包括数据抽取、数据转换、数据装载三个过程。
- 抽取
数据抽取是从各各业务系统、外部系统等源数据处采集源数据。
- 转换
采集过来的源数据如果要存储到数据仓库需要按照一定的数据格式对源数据进行转换,常见的转换方式有数据类型转换、格式转换、缺失值补充、数据综合等。
- 装载
转换后的数据就可以存储到数据仓库中,这个过程要装载。数据装载通常是按一定的频率进行的,比如每天装载当天的订单数据、每星期装载客户信息等。
2.4 数据仓库与数据集市
数据仓库是用于企业整体分析的数据集合,比如分为:销售主题、客户主题、产品主题等。数据集市是用于部门分析的数据集合,从范围上来讲它属于数据仓库的子集,比如:销售部门的数据集市只有销售主题。
为什么会有数据集市的概念?
通常从企业整体出发去建数据仓库比较困难,所涉及到的业务及分析需求比较多,所以提出数据集市的概念,可以先从某个部门开始建设数据仓库,这样效率就比较高。
业界把从企业整体出发建设数据仓库的过程叫自顶向下,把从数据集市开始建设数据仓库再逐渐完善整个数据仓库的过程叫自下向上。通常建议自下向上建设数据仓库,不过这个在业界也存在争议。
数据仓库和数据集市具有什么区别?
- 范围的区别
数据仓库是针对企业整体分析数据的集合。数据集市是针对部门级别分析的数据集合。
- 数据粒度不同
数据仓库通常包括粒度较细的数据明细。
数据集市则会在数据仓库的基础上进行数据聚合,这些聚合后的数据就会直接用于部门业务分析。
2.5 应用系统
这里的应用系统是指使用数据仓库完成数据分析、数据查询、数据报表等功能的系统。应用系统需要从数据仓库中查询数据、分析数据,比如:OLAP 系统、数据查询系统等。
2.6 用户
使用数据仓库系统的用户主要有数据分析人员、管理决策人员(公司高层)等。
3. 维度分析
3.1 维度分析介绍
对数据进行分析通常采取维度分析,比如:用户提出分析网站访问量的指标,为了满足不同的分析需求可以从时间维度分析网站访问量,分析每天、每小时的网站访问量;也可以从地域维度来分析网站访问量,分析每个省、每个市分类的访问量。
3.2 指标与维度
要进行维度分析需要先理解两个术语:指标和维度。指标是衡量事务发展的标准,也叫度量,如价格,销量等;指标可以求和、求平均值等计算,指标分为绝对数值和相对数值,绝对数值反映具体的大小和多少,如价格、销量、分数等;相对数值反映一定的程度,如及格率、购买率、涨幅等。
维度是事务的特征,如颜色、区域、时间等,可以根据不同的维度来对指标进行分析对比。比如根据区域维度来分析不同区域的产品销量,根据时间来分析每个月产品的销量,同一个产品销量指标从不同的维度分析会得出不同的结果。
维度分为定性和定量两种,定性维度就是字符类型的特征,比如区域维度包括全国各省份;定量维度就是数值类型的特征,如价格区间、销量区间等,如价格区间维度分为0--100、100-1000两个区间,可以按价格区间维度来对指标进行分析。
用具体的指标数值, 来度量不同的维度。x轴和y轴的关系。
3.3 关键指标
在进行维度分析前需要收集关键指标,关键指标就是运营管理者最关心的指标,比如市场总监提出的产品销量、新增客户等指标;财务经理提出的营业额、利润率等。
3.4 识别维度
在日常生活中,我们从不同的角度看待事务会有不同的体会,数据分析也如此,比如:一个在线教育的平台,作为运营方会关注按时间段分析课程的访问量,作为教育机构则关注单个课程的访问量,都是课程访问量指标根据不同的维度去分析得到结果不同,这就是维度分析。
比如:按时间分析课程访问量,时间维度是课程访问量的分析依据,时间维度和业务中的课程访问量是对应的,下表列出了课程访问量明细记录:
上表中显示了部分课程访问的记录,每条记录表示一次课程访问,记录内容包括:IP,访问时间、课程ID,根据上边的记录可以按时间统计每天所有课程的访问量,时间就是一个维度,如下是按时间维度分析的课程访问量:
时间维度(天)
维度是数据仓库建模的基础,维度是在分析时从多个方面来进行分析,根据上边的例子,将课程访问作为度量,识别的维度包括:课程、时间、机构、课程分类等,如下图:
将课程购买作为度量的维度包括:
3.5 分层与分级
通常在分析结果中首先看到的是一个总数,比如全年课程购买量,然后会详细去看每个季度、每个月的课程购买量,全年、季度、月这些属于时间维度的一个层次,年、季度、月是这个层次的三个级别,比如按地区分析课程购买量,全国、省、市、县属于地区维度的一个层次,层次中共有四个级别。
每个维度至少有一个层次且该层次至少有一个级别。下边将课程访问的各各维度定义层次和级别,如下:
时间维度:
一个层次四个级别:年、月、天、小时课程维度:
课程名称:只有一个级别,每门课程的名称课程分类:两个级别,大类和小类
课程难度:只有三个级别,简单、一般、难
课程等级:只有三个级别,初、中、高地区维度:
一个层次三个级别:省、市、县
3.6 下钻与上卷
维度中有不同的层次,每个层次可以有多个级别,这样就可以根据多个维护层次和级别进行分析,可以灵活获取高级别的汇总信息,获取低级别的明细信息,把获取高级别的汇总信息的过程叫上卷,把获取低级别的明细信息的过程叫下钻。
比如:网站访问量分析,时间维度有四个级别,分别是年、月、天、小时,现在我们某个级别分析每天的网站访问量,比如按天分析网站访问量,此时我们可以按小时下钻分析,得出一天内每小时的网站访问量,也可以按月上卷,得到月度的网站访问量。
-
下钻维度:
- 天、小时
-
上卷维度:
- 年、月