大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习!

感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦。


前期回顾:
⼤数据是如何产⽣的?大数据的特点是什么?什么是埋点?如何进行数据埋点?【超详细介绍】

对于这么多种类,这么大体量的数据是如何存储的呢?

所以数据仓库就应景而生了。

数据仓库(数据是如何存储的)

1 什么是数据仓库?

数据仓库(Data Warehouse),简称DW。数据仓库顾名思义,是⼀个很⼤的数据存储集合,出于企业的分析性报告和决策⽀持⽬的⽽创建,对多样的业务数据进⾏筛选与整合。它能为企业提供⼀定的BI(商业智能:例如数据挖掘、数据分析和数据报表)能⼒。有了数据报表,还可以指导业务流程改进。
在这里插入图片描述

2 数据仓库解决什么问题?

数据仓库是应景大数据而生的,解决的问题无非就是存储和快速提取, 另外还有跨部⻔应⽤的功能。
在这里插入图片描述
对于不同数据整合到了数据仓库之后,也就是大数据有了存储的位置;我们可以不同的部门进行不同的应用(例如数据挖掘、数据分析、报表展示和查询等等);而快速提取是我们对于数据仓库的基本需求,所以数据仓库在设计起初就要具备快速提取的功能。而技术实现呢,就是分布式。

3 数据仓库的主要特征

  • ⾯向主题的
    传统数据库最大的特点就是面向应用进行组织数据,一个业务系统管理一部分企业数据,多个业务系统之间呢是相互分离的,而数据仓库则是面向主题的。
    我们可以通过从上图中的源数据那部分看到,它把多个业务的数据来整合,所以是面向主题的。
    在这里插入图片描述

  • 集成的
    集成是指数据仓库中数据必须是一致的,也就是我们要通过ETL进行软码编辑。数据仓库的数据是从原有的、分散多个数据仓库、数据文件、用户日志中抽取出来的,那数据来源上可能既有内部数据,又有外部数据。
    数据仓库中的数据是为分析而服务的,而分析呢又需要多种、广泛的不同数据源、数据,以便进行比较、鉴别。因此数据仓库中的数据必须从多个数据源中获取。那这些数据源就包括我们在上篇博客介绍过的内部数据、外部数据、文件系统以及网上的其他数据等。这些是通过数据集成而形成数据仓库的数据,所以它是集成的。

  • 稳定的(不易失的)
    数据仓库中的数据反映的是一段相当长时间内历史数据的内容,是不同时间点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的一个导出数据,一旦数据进入仓库以后,一般情况下会较长时间的保留。数据经加工和集成进入数据仓库后极少更新,所以是稳定的,它保留的时间长也是稳定的、不易失的。

  • 时变的(反映历史变化的)
    数据仓库中包含各种意思的历史数据。数据仓库中的数据与某个特定的日期,例如星期、月份是有关系的。虽然数据仓库不会修改数据,但并不是说数据仓库的数据啊是永远不变的,数据仓库的数据也需要更新以适应新的需求。数据仓库的数据随时间的变化主要表现在以下几个方面:
    1.数据仓库的数据时限一般来说远远长于操作类型的数据库时限;
    2.业务系统存储的是当前数据,而数据仓库中的数据是历史数据;
    3.数据仓库中的数据是按照时间顺序进行追加的,都在于时间属性,这就是反映了历史变化的数据。

4 数据仓库与数据库区别

在这里插入图片描述
数据仓库与数据库的区别,实际上就是OLTP(联机事物处理过程),也称为面向交易的处理过程,和OLAP(联机分析处理)的区别。

在看具体的差异之前,需要特别提醒的是,数据仓库的出现并不是要取代数据库,它们是各有各的用处的

  1. 先从面向来看,数据库面向的是事务,也就是OLTP(联机事务处理过程),而数据仓库呢面向的是分析,也就是OLAP(联机分析处理)。

  2. 再看一下用户,对于数据库来说,它的用户是DBA开发;对于数据仓库来说呢,它的用户就是经理、主管、分析人员,可以看出数据仓库是针对于分析的;

  3. 对于功能而言,数据库是针对于日常操作的,而数据仓库是对于长期信息需求,用来决策支持的。

  4. 再看一下数据,数据库当中存储的是当前的、最新的,而数据仓库呢存储的是历史的、跨时间维护的,所以数据库当中信息比较久远的数据可以入仓,也就是存储到数据仓库中来。

  5. 再看一下用户数,数据库是数百到数亿的,例如我们是一个电商数据库,那他的用户可能就达到了上亿,而对于数据仓库可能只达到了数百,因为是给企业内部人员来进行使用的。

  6. 再看一下设计规模,数据库呢是GB到TB的,那对于数据仓库来说呢,它存在是历史数据,所以肯定是大于TB的。

我们以银行业务为例来具体的说明一下。数据库是事务系统的数据平台,那客户在银行做的每一笔交易都写入数据库记录下来,这里可以简单的理解为用数据库来记账。而数据仓库是分析系统的数据平台,它从事务系统获取数据,也就是从数据库中获取数据,并做汇总、加工,为决策者提供决策的依据。比如某银行某分行一个月发生多少交易,该分行当前存款余额是多少,如果存款多、消费交易多,那么该地区就有必要设立ATM。银行的交易量是巨大的,通常以百万甚至千万来计算。税务系统是实时的,这就要求时效性,客户存一笔钱需要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。而分析系统是事后的,它要提供关注时间段内所有的有效数据,这些数据就是海量的,汇总计算比较慢一些,但是只要能够提供有效的分析数据就达到了目的了。

因此数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、决策需要而产生的,它绝不是所谓的大型数据库。

5 数据仓库架构

在这里插入图片描述
数据仓库是大数据时代的必然产物,而且它还具有四个特征:面向主题的、集成的、稳定的、时变的。那么我们用它来解决的问题就是存储大数据量、快速提取、还有跨部门应用。那针对于跨部门应用和快速提取,我们就要设计好数据仓库的架构。那数据仓库的架构主要从四个方面来考虑:一个是性能,比如提取速度快;一个是成本,也就是数据仓库到底有多少个集群等等;还有效率和还有质量,这四点之间取得最佳的平衡。

而主流的方法呢是分层架构。
在这里插入图片描述

  • 第一层,ODS层,是数据准备区,数据来源是各个业务系统的数据,物理模型和业务系统模型是一致的。

  • 第二层,DWD层,数据来至于ODS层,数学模型与ODS层一致,那其实也是与业务系统模型一致。

  • 第三层,DW层,数据来自是第二层DWD层,是DW事实层,采用维度建模,星型架构。这一层可细分为dwb和dws。

  • 第四层,DM层,数据来自于下一层的DW层,采用了维度建模,也是星型架构,和DW层是一样的。

  • 第五层,ST层,数据来自于DW层,采用的也是维度建模和星型架构。

上述内容是从数据来源及建模方式来说的这样五层的作用。

接下来我们从服务领域、数据ETL来看一下这五层的作用。

数据仓库系统的数据来源于不同的数据源,例如MySQL、ORACLE和文档等等,而且还提供不同的数据应用。数据是自下层流入到数据仓库,然后向上层开放数据应用。数据仓库只是中间的一个数据管理平台,所以我们在架构数据仓库系统的时候都采用分层架构。

来看一下名企的数据仓库。

华为采用的是分层架构。
在这里插入图片描述
星环专有采用的也是分层架构。
在这里插入图片描述

6 数据仓库元数据管理

我们介绍在数据仓库进行架构的时候,从四个方面进行考量和平衡,如质量、性能、效率、还有成本。那分层架构上可以看出来,它是在效率和效能上进行考察的,质量方面就要靠元数据的管理和数据治理来实现了。

什么是元数据?

那我们先来介绍一下什么是元数据。

元数据主要是记录数据仓库中模型的定义、各层级间的映射关系(例如我们架构的这五层,层与层之间的映射关系要靠元数据来保存),监控数据仓库的数据状态以及ETL任务的运行。一般会通过元数据质量库来统一地存储和管理原数据,其主要目的呢就是使数据仓库的设计、部署、操作和管理达成协同和一致,保证数据质量,这是元数据的定义。

而我们关键要看的就是模型的定义、层级的映射关系、ETL的任务运行状态,这都是元数据来负责的。所以说元数据是数据仓库系统的一个重要的组成部分,贯穿数据仓库构建的整个过程,直接影响了数据仓库的构建、使用和维护。由于数据仓库的数据来源种类比较多,例如MySQL、日志、外部数据等等。在这些元数据进入数据仓库时,要经历ETL(抽取、转换、加载)这些操作步骤,所以元数据就是定义源数据到数据仓库的映射关系、转换规则等等。同理,在数据应用层,也就是用户在使用数据的时候,也是通过元数据来访问数据的,因为元数据记录了数据的位置。
在这里插入图片描述

元数据具体的工作内容

那在数据分析的时候,我们也要知道数据清洗的规则是如何的,所以我们来看一下元数据具体的工作内容。

在这里插入图片描述

  • 元数据针对于ETL,它存储了抽取方法、映射规则等等。

  • 对于清洗工具,它又存储了这样清洗的一些规则。

  • 对于相关人员使用,它存储了一些数据质量、数据是如何组织的。

  • 对于数据仓库的建模,它存储数据是如何定义的、数据有效值、数据仓库的模型等等。

  • 对于查询工具、前端工具、报表工具,也就是数据应用层,用户在使用的时候,元数据它包含了查询的定义、数据导出属性以及数据之间的映射关系。

元数据分为技术元数据和业务元数据

从我们介绍元数据保存的信息,我们可以看出,元数据分为技术性的元数据,还有业务性的元数据。

技术元数据,它是被开发或者是管理数据仓库的这些IT人员使用的,它描述了与数据仓库的开发管理,以及维护相关的数据。例如包含数据源的信息都来自于哪一个部分的数据(比如MySQL,或者哪一个业务的)、数据转换的描述(也就是不同的数据源是如何入仓的)、数据仓库的模型、数据的清洗与更新的规则、数据映射和访问权限等等。

对于业务元数据呢,它是对管理层和分析人员来服务的,但是从业务角度来描述数据,包括一些商务数据、数据仓库中有什么数据、数据的具体位置在什么地方和数据可用性等等。

这就是我们元数据的作用,所以说元数据贯穿了数据仓库构建的整个过程,直接影响了数据仓库的构建(也就是IT人员使用的那部分元数据)、使用(也就是管理层和分析人员)和维护(也是IT人员)。

所以数据仓库的元数据管理记录很重要,保证数据仓库中的数据质量,可以对元数据进行管理。那还有一点呢,就是对数据进行治理。数据治理有广义上的,还有狭义上的。在这里我们只介绍狭义的,也就是从数据分析的角度来介绍一下数据治理如何影响数据质量、影响分析的。

7 数据治理

都知道数据是企业的核心资产,而数据治理能成就企业的未来,特别是那种进行数据服务的公司,还有银行等。数据治理涉及到数据质量、数据管理、数据政策以及商业过程管理等。治理呢主要治理的是脏数据。那我们先来看一下脏数据的种类,以及对于不同种类的脏数据我们是如何处理的。

脏数据的种类

在这里插入图片描述

  1. 数据缺失。
    为了不影响分析的准确性,一般情况下我们是有两种方案来应对这种缺失数据的。
    第一种就是对于这种缺失数据,我们不把它纳入到分析范围里面,那这种情况适合于我们数据量比较多的情况下,也就是当我们数据量比较多,那对于缺失的数据我们删除可能不会影响我们最终的分析结果。但是如果我们样本量比较少,又把缺失的删除掉,那它可能会影响我们的分析。
    第二种方式,就是想办法想一些计算逻辑,或者是数据进行重新提取这样的方式来对数据进行填充。如填充中位数、众数或者均值。

  2. 数据重复。
    那在这种时候,就要进行分析去掉重复记录了。

  3. 数据错误。
    数据没有严格按照规范进行记录,这种情况下只能人工干预了,而干预的方式呢就有很多种了。那因为公司、业务、甚至数据,干预手段都是不一样的,可以做一张清洗规则表来进行错误匹配

  4. 数据不可用。
    也就是数据正确但不可用,也就是这个数据没有价值了。例如我们要收集所有的全国学生的一些基本信息,结果只收集了学生的姓名,名字是没有错,但是不知道是哪个学校的,不知道年龄、专业、班级等等,甚至所在的城市。那这样的数据是毫无价值的,即数据不可用。从源头也就是你数据收集就出错了,就只能从源头来改了。

数据治理原则

在这里插入图片描述

虽然不同的脏数据种类,我们有不同的解决方案,但是真的有一些脏数据出现了,我们的代价是很大的。比如第四类数据不可用,真的是从头再来。所以说我们一定要对数据进行治理,治理的原则就是两方面。

一方面是约束输入,比如必须添加的、数据的类型是什么,也就是规则要统一;另一方面就是规范的输出——统一语义,也就是我们口径、计算方式都一样,然后要有一个公司级别的语义字典。这样我们在用数据的时候就不会出现错误了,在收集数据的时候也不会出现数据不可用了。

知识拓展(数据集市)

数据仓库规模⼤、周期⻓,⼀些规模⽐较⼩的企业⽤户难以承担。因此,作为快速解决企业当前存在的实际问题的⼀种有效⽅法,独⽴型数据集市成为⼀种既成事实。

数据集市(Data Mart) ,也叫数据市场,数据集市就是满⾜特定的部⻔或者⽤户的需求,按照多维的⽅式进⾏存储,包括定义维度、需要计算的指标、维度的层次等,⽣成⾯向决策分析需求的数据⽴⽅体。

数据集市主要是针对⼀组特定的某个主题域、部⻔或者特殊⽤户需求的数据集合。这些数据需要针对⽤户的快速访问和报表展示进⾏优化,优化的⽅式包括对数据进⾏轻量级汇总,在数据结构的基础上创建索引。

数据集市的⽬标分析过程包括对数据集市的需求进⾏拆分,按照不同的业务规则进⾏组织,将与业务主题相关的实体组织成主题域,并且对各类指标进⾏维度分析,从⽽形成数据集市⽬标说明书。内容包括详细的业务主题、业务主题域和各项指标及其分析维度。

结束语

一直在学习路上!

推荐关注的专栏

👨‍👩‍👦‍👦 机器学习:分享机器学习理论基础和常用模型讲解
👨‍👩‍👦‍👦 数据分析:分享数据分析实战项目和常用技能整理


关注我,了解更多相关知识!

CSDN@报告,今天也有好好学习

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐