每周 · 面试题 | 数据仓库建模篇

爱数据精选
爱数据精选
爱数据精选
609
文章
0
评论
2021-03-3011:45:38 评论 1,177 2619字
摘要

数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。

每周 · 面试题 | 数据仓库建模篇

1、什么叫数据仓库?数据仓库的特点?

首先,用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;

其次,对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。

2、数据仓库和数据库有什么区别?

事务性数据库和决策支持数据库的区别,当然包括目标、用途、设计等等

(1)数据是面向事务处的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源于数据库或文件,经过一定的规则转换得到,用来分析的。

(2)数据库一般是用来存储当前交易数据;数据仓库存储一般存储的是历史数据

(3)数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入;数据仓库的设计一般是星型的,有利于查询

3、数据仓库的基本架构是什么?

数据源,ETL,data stage,ODS,data warehouse,datamart,OLAP等等,可能为针对每一个结构进行发问啊

(1)数据源

数据仓库系统的数据源泉,通常包括企业各类信息,包括存放于RDBMS中的各种业务处理数据和各类文档数据;各类法律法规、市场信息和竞争对手的信息等等;

(2)数据的存储与管理

数据的存储和管理是整个数据仓库的核心,是关键。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。

从数据仓库的技术特点着手分析,来决定采用什么产品和技术来建立数据仓库,然后针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。

数据仓库按照数据的覆盖范围可以分为企业级数据仓库部门级数据仓库(通常称为数据集市)。

(3)OLAP服务器

对需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层次的分析,并发现趋势。其具体实现可以分为:ROLAP(关系型在线分析处理)、MOLAP(多维在线分析处理)和HOLAP(混合型线上分析处理)。

  • ROLAP基本数据和聚合数据均存放在RDBMS之中;
  • MOLAP基本数据和聚合数据均存放于多维数据库中;
  • HOLAP基本数据存放于RDBMS之中,聚合数据存放于多维数据库中。

(4)前端工具

主要包括各查询工具、数据分析工具、数据挖掘工具、种报表工具以及各种基于数据仓库或数据集市的应用开发工具。数据分析工具主要针对OLAP服务器。报表工具、数据挖掘工具主要针对数据仓库。

4、模型设计的思路、业务需求与数据驱动

构造数据仓库有两种方式:

  • 自上而下
  • 自下而上

Bill Inmon先生推崇"自上而下"的方式,即一个企业建立唯一的数据中心,就像一个数据的仓库,其中数据是经过整合、经过清洗、去掉脏数据的、标准的,能够提供统一的视图。

要建立这样的数据仓库,并不从它需要支持哪些应用入手,而是要从整个企业的环境入手,分析其中的概念,应该有什么样的数据,达成概念完成整;(会考虑到很全面的设计)

Ralph Kimball先生推崇"自下而上"的方式,他认为建设数据仓库应该按照实际的应用需求,加载需要的数据,不需要的数据不要加载到数据仓库中。这种方式建设周期较短,客户能够很快看到结果。(针对客户的需求,需求要什么就做什么)

二者都要达到同一个目标:企业级数据仓库。实际上在建设数据仓库的时候,一般都参照这两种方式结合使用没有硬性规定。

5、模型设计的步骤

构建企业级数据仓库五步法:

(1)确定主题

确定数据分析或前端展现的主题。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑。

(2)确定量度

确定主题后,需要考虑分析的技术指标。它们一般为数据值型数据,其中有些度量值不可以汇总;有些可以汇总起来,以便为分析者提供有用的信息。

量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性指标(KPI)的设计和计算。

(3)确定事实数据粒度

确定量度之后,需要考虑该量度的汇总情况和不同维度下量度的聚合情况。

例如:在业务系统中数据最小记录到秒,而在将来分析需求中,时间只要精确到天就可以了。

在ETL处理过程中,按天来汇总数据,些时数据仓库中量度的粒度就是"天"。如果不能确认将来的分析需求中是否要精确的秒,那么,我们要遵循"最小粒度原则"

在数据仓库中的事实表中保留每一秒的数据,从而在后续建立多维分析模型(CUBE)的时候,会对数据提前进行汇总,保障产生分析结果的效率。

(4)确定维度

维度是分析的各个角度

例如:我们希望按照时间,或者按照地区,或者按照产品进行分析。那么这里的时间,地区,产品就是相应的维度。

基于不同的维度,可以看到各个量度汇总的情况,也可以基于所有的维度进行交叉分析。

维度的层次(Hierarchy)和级别(Level)。

例如:在时间维度上,按照"度-季度-月"形成了一个层次,其中"年" ,"季度" ,"月"成为了这个层次的3个级别。我们可以将"产品大类-产品子类-产品"划为一个层次,其中包含"产品大类"、"产品子类"、"产品"三个级别。

我们可以将3个级别设置成一张数据表中的3个字段,比如时间维度;我们也可以使用三张表,分别保存产品大类,产品子类,产品三部分数据,比如产品维度。

建立维度表时要充分使用代理键。代理键是数据值型的ID号码(每张表的第一个字段),它唯一标识了第一维度成员。

在聚合时,数值型字段的匹配和比较,join效率高。同时代理键在缓慢变化维中,起到了对新数据与历史数据的标识作用。

5、创建事实表

在确定好事实数据和维度后,将考虑加载事实表业务系统的的一笔笔生产,交易记录就是将要建立的事实表的原始数据。

我们的做法是将原始表与维度表进行关联,生成事实表。关联时有为空的数据时(数据源脏),需要使用外连接,连接后将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各度量数据,不应该存在描述性信息。事实表中的记录条数据都比较多,要为其设置复合主键各蛇引,以实现数据的完整性和基于数据仓库的查询性能优化。

End.

作者:爱数据data

本文为挖数网专栏作者原创文章,未经允许禁止转载,需要转载请微信联系授权(微信号:lovedata0520)

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: