数据仓库开发工程师面试经典问题及解答

Posted 勿忘初心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据仓库开发工程师面试经典问题及解答相关的知识,希望对你有一定的参考价值。

1.什么叫数据仓库?(相信inmon的数据仓库概念的四个特点是最基本的吧,当然需要加上自己的理解) 

答:数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。数据仓库研究和解决从数据库中获取信息的问题。数据仓库的特征在于面向主题、集成性、稳定性和时变性。用于支持经营管理中的决策支持过程,从广义上讲数据仓库是指存储大量历史数据的数据库。每一个记录代表特殊时间点上的一个数据。

1、数据仓库是面向主题的;操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。 

2、数据仓库是集成的,数据仓库的数据有来自于分散的操作型数据,将所需数据从原来的数据中抽取出 

来,进行加工与集成,统一与综合之后才能进入数据仓库;

3、数据仓库是稳定的,数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询;

4、数据仓库是随时间而变化的,传统的关系数据库系统比较适合处理格式化的数据,能够较好的满足商业商务处理的需求。稳定的数据以只读格式保存,且不随时间改变。

2.数据仓库和数据库有什么区别?(事务性数据库和决策支持数据库的区别,当然包括目标、用途、设计等等) 

答:数据仓库是面向分析的,数据库是面向事务处理. 
数据仓库的数据是基本不变得,而数据库的数据是由日常的业务产生的,常更新。数据仓库的数据一般有数据库的数据经过一定的规则转换得到的。 
数据仓库主要用来分析数据,一般是tb级的的数据,比如决策支持系统,数据挖掘等。

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

2.数据库一般是用来存储当前交易数据,数据仓库存储一般存储的是历史数据。

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


3.什么叫OLAP?用途是什么?(OLAP指多维数据库了,主要用于多维分析了;包括三种实现方式) 

答:联机分析处理,On-Line Analysis Processing 即从数据仓库中抽取详细数据的一个子集并经过必要的聚集,存储到OLAP存储器中供前端分析工具读取。

OLAP系统按照数据存储格式可以分为关系OLAP(RelationalOLAP,简称ROLAP)、多维OLAP(MultidimensionalOLAP,简称MOLAP)和混合型OLAP(HybridOLAP,简称HOLAP)三种类型。

ROLAP将分析要用的多维数据存储在关系数据库中,并根据应用的需要有选择的定义一批实视图也存储在关系数据库中。MOLAP将OLAP分析所要用到的多维数据物理上存储为多维数组的形式,形成“立方体”的结构。

HOLAP能把MOLAP和ROLAP两种结构的优点有机的结合起来,能满足用户各种复杂的分析请求。

4.什么叫维度和度量值?(一个是出发点,一个是观察值) 

答:1. 维度(Dimension) 维度是用来反映业务的一类属性,这类属性的集合构成一个维度。如时间、地理位置或产品。

各分析角度(维度)和统计数值型数据(量度)之间的关系,

5.数据仓库的基本架构是什么?(数据源,ETL,data stage,ODS,data warehouse,datamart,OLAP等等,可能为针对每一个结构进行发问啊) 

答:数据仓库系统体系结构

1.数据源-> 2.ETL -> 3.数据仓库存储与管理-> 4.OLAP -> 5.BI工具

6.什么叫缓慢维度变化?(为了表现和记录基础数据变化情况在数据仓库中的记录,包括三大类维度处理方式,缓慢变化维包括三小类) 

答:缓慢变化维:在实际情况下,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。处理方法: 
1)新信息直接覆盖旧信息
2)保存多条记录,并添加字段加以区分(用y,n;0,1,2或用时间来区别新旧记录)
3).保存多条记录,并添加字段加以区分
4).另外建表保存历史记录.
5)混合模式

7.什么叫查找表,为什么使用替代键?(其实目的和上面一样,从基础表到缓慢维度表的过程中的一种实现途径) 

替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。

8.如何实现增量抽取?

(主要采用时间戳方式,提供数据抽取和处理的性能) 

9.用过什么ETL工具(informatica,ssis,owb,datastage),以及该工具简单讲述特点。 

10.用过什么报表工具(bo,hyperion,congo,reporing serVCe),以及该工具基本特点。 

11.数据仓库项目最重要或需要注意的是什么,以及如何处理?(一般答数据质量,主要是数据源数据质量分析,数据清洗转换,当然也可以定量分析) 

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

一、 确定主题

即确定数据分析或前端展现的主题(例:某年某月某地区的啤酒销售情况)。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑.

二、 确定量度

确定主题后,需要考虑分析的技术指标(例:年销售额等等)。它们一般为数据值型数据,其中有些度量值不可以汇总;些可以汇总起来,以便为分析者提供有用的信息。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性指标(KPI)的设计和计算。

三、 确定事实数据粒度

确定量度之后,需要考虑该量度的汇总情况和不同维度下量度的聚合情况.例如在业务系统中数据最小记录到秒,而在将来分析需求中,时间只要精确到天就可以了,在ETL处理过程中,按天来汇总数据,些时数据仓库中量度的粒度就是”天”。如果不能确认将来的分析需求中是否要精确的秒,那么,我们要遵循”最小粒度原则”,在数据仓库中的事实表中保留每一秒的数据,从而在后续建立多维分析模型(CUBE)的时候,会对数据提前进行汇总,保障产生分析结果的效率。

四、 确定维度

维度是分析的各个角度.例:我们希望按照时间,或者按照地区,或者按照产品进行分析。那么这里的时间,地区,产品就是相应的维度。基于不同的维度,可以看到各个量度汇总的情况,也可以基于所有的维度进行交叉分析。

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

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

建立维度表时要充分使用代理键.代理键是数据值型的ID号码(每张表的第一个字段),它唯一标识了第一维度成员。在聚合时,数值型字段的匹配和比较,join效率高。同时代理键在缓慢变化维中,起到了对新数据与历史数据的标识作用。

五、 创建事实表

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

我们的做法是将原始表与维度表进行关联,生成事实表。关联时有为空的数据时(数据源脏),需要使用外连接,连接后将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各度量数据,不应该存在描述性信息。

事实表中的记录条数据都比较多,要为其设置复合主键各蛇引,以实现数据的完整性和基于数据仓库的查询性能优化。 

元数据:

描述数据及其环境的数据。两方面用途:

首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据。

其次,元数据能支持系统对数据的管理和维护,如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据。

元数据机制主要支持以下五类系统管理功能:

(1)描述哪些数据在数据仓库中;

(2)定义要进入数据仓库中的数据和从数据仓库中产生的数据;

(3)记录根据业务事件发生而随之进行的数据抽取工作时间安排;

(4)记录并检测系统数据一致性的要求和执行情况;

(5)衡量数据质量。

OLTP与OLAP的区别

OLTP OLAP
用户 操作人员 决策人员

功能 日常操作 分析决策

DB设计 面积应用 面向主题

数据 当前,最新,细节,二维 历史,概括,多维集成的,统一
存取及规模 读取少 大规模读

事实表 

事实表是包含大量数据值的一种结构。事实数据表可能代表某次银行交易,包含一个顾客的来访次数,并且这些数字信息可以汇总,以提供给有关单位作为历史的数据。

每个数据仓库都包含一个或者多个事实数据表。事实数据表只能包含数字度量字段和使事实表与维度表中对应项的相关索引字段.,该索引包含作为外键的所有相关性维度表的主键。

事实数据表中的“度量值”有两中:一种是可以累计的度量值,另一种是非累计的度量值。用户可以通过累计度量值获得汇总信息。

维度表

用来描述事实表的某个重要方面,维度表中包含事实表中事实记录的特性:有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构

缓慢变化维:在实际情况下,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。

处理方法: 
1新信息直接覆盖旧信息
2,保存多条记录,并添加字段加以区分(用y,n;0,1,2或用时间来区别新旧记录)
3.保存多条记录,并添加字段加以区分
4.另外建表保存历史记录.
5混合模式
退化维

般来说事实表中的外键都对应一个维表,维的信息主要存放在维表中。但是退化维仅仅是事实表中的一列,这个维的相关信息都在这一列中,没有维表与之相关联。比如:发票号,序列号等等。
那么退化维有什么作用呢?
1、退化维具有普通维的各种操作,比如:上卷,切片,切块等

(上卷汇总,下钻明细;切片,切块:对二维数据进行切片,三维数据进行切块,,可得到所需要的数据)
2、如果存在退化维,那么在ETL的过程将会变得容易。
3、它可以让group by等操作变得更快

粒度:(granularity)

是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度就越小。

钻取:

首先从某一个汇总数据出发,查看组成该数据的各个成员数据。

KPI(Key Performance Indication)关键业绩指标用来衡量业绩好坏比如销售这个主题,销售增长率、销售净利润就是一个KPI

E T L

extract/transformation/load寻找数据,整合数据,并将它们装入数据仓库的过程。

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析的依据。

工作流 抽取à清洗,转换à加载 数据流 业务系统àODSà数据仓库

一.抽取

方法有三种:1.利用工具,例如datastage,informatic,OWB,DTS,SISS. 2,利用存储过程. 3,前两种工具结合.

抽取前的调研准备工作:1.弄清数据是从哪几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS. 2.是否存在手工数据,手工数据量有多大。3.是否存在非结构化的数据。

抽取中的数据处理方法:

1. 业务系统服务器与DW的DBMS相同时,在DW数据仓库服务器与原业条系统之间建立直接的链接关系就可以写select语句直接访问.

2. 业务系统服务器与DW的DBMS不同时,对不能建立直接链接的话,可以将源数据导入.txt文件,在导入ODS中,或通过程序接口来完成.

3. 对于文件类型数据源(.txt.xls)利用数据库工程将这个数据导入指定的数据库,如(oracle的SQL*LOADER,db2的import)

如何实现增量抽取

业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。

二.清洗与转换

清洗

数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。

清洗的数据种类: 1,不完整数据,2,错误数据,3重复的数据.

转换

1.不一致数据转换:编码转换(m,f;男女);字段转换(balance,bal);度量单位的转换(cm,m)

2.数据粒度的转换;业务系统数据存储非常明细的数据,而数据仓库中数据是用分析的,不需要非常明细,会将业务系统数据按照数据仓库粒度进行聚合.

3.商务规则的计算.不同企业有不同的业务规则,不同的数据指标,在ETL过程,将这些数据计算好之后存储在数据仓库中,供分析使用(比如KPI)

三.加载经过前两步处理后的数据可直接加载入数据仓库

用过什么ETL工具(informatica,ssis,owb,datastage),以及该工具简单讲述特点。

 DataStage是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据仓库目标数据库的集成工具。

它有四个组件:Administrator:用来管理project和环境变量。Manager:用于job,表定义,的引导,引出。Designer:用来设计job。Direct:用运查看job运行日志。

Datastage  ETL 技能

1.JOIN和LOOKUP的区别?

1)使用的缓存方式,JOIN是先内存,后磁盘,LOOKUP全放到内存中进行查找,

2)默认的数据分区是不一样的JOIN是ROUND ROBIN,LOOKUP是ENTRY.

3)使用的场景也不一样,JOIN用于数据量大的时候进行查找,LOOKUP只有在内存宽松的情况下进行查找.

4)数据查找失败的方式也不一样.LOOKUP有REJECT LINK,JOIN 没(主要看是什么JOIN).

2.sequence file 和dataset的区别?

1)sequence file用于平面的字符文件,是串行读取的,dataset是Datastage FRAMEWORK的内部使用格式,是按照APT_CONFIG_FILE中的节点进行分区压缩存放.
2)sequence file可被外部程序读取,dataset是内部格式,只允许Datastage进行相关的读取.

3.fileset的使用:
fileset 是用于文件集的,可以进行相关的并行读取,但最大读取的文件为2G(这个有待考证,因为我也不太记得了)

4.APD_CONFILE_FILE的编写.
根据相关的模板,设置FASTNAME,POOL,SCRATCH,SORT DISK就OK.

5.如何在Datastage中配置ODBC.
1)在Datastage 安装目录下有个uvconfig,在里面按照模板进行选项的配置.
2)在工程目录下的ODBC.INI文件加入相关的连接就OK.

6.分区
回答几个Datastage的数据分区就OK了.一共8个左右..

7.调优
基于分区的调优,主要是分区的利用和瓶颈的分析.

8.Datastage的相关启动
要针对Datastage的安装方式,ROOT用户直接用ROOT用户可以进行启动,指定管理员方式的安装需要用指定管理用户进行启动.


以上是关于数据仓库开发工程师面试经典问题及解答的主要内容,如果未能解决你的问题,请参考以下文章

大数据面试题锦集 | 数据仓库工具HIVE篇

六个经典的HTML5面试问题奉上,太有用啦!

大数据开发工程师是做什么的?岗位要求高吗?

数据仓库面试题

(可打印)前端开发工程师面试题及答案汇总

深入解析数据仓库中的缓慢变化维