《面试题-ETL.doc》由会员分享,可在线阅读,更多相关《面试题-ETL.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date面试题-ETL面试题-ETL1. What are the primary goals of the data discovery phase of the data warehouse project?在数据仓库项目中,数据探索阶段的主要目的是什么?答:在逻辑数据映射进行之前,需要首先对所有的源系统进行分析。对源系统的分析通常包括两个阶段,一个是数据探索阶段(Dat
2、a Discovery Phase),另一个是异常数据检测阶段。数据探索阶段包括以下内容:1收集所有的源系统的文档、数据字典等内容。2收集源系统的使用情况,如谁在用、每天多少人用、占多少存储空间等内容。3判断出数据的起始来源(System-of-Record)。4通过数据概况(Data Profiling)来对源系统的数据关系进行分析。数据探索阶段的主要目的是理解源系统的情况,为后续的数据建模和逻辑数据映射打下坚实的基础。2. What are the four basic Data Flow steps of an ETL process?在ETL过程中四个基本的过程分别是什么?答:Kimb
3、all数据仓库构建方法中,ETL的过程和传统的实现方法有一些不同,主要分为四个阶段,分别是抽取(extract)、清洗(clean)、一致性处理(comform)和交付(delivery),简称为ECCD。1抽取阶段的主要任务是:读取源系统的数据模型。连接并访问源系统的数据。变化数据捕获。抽取数据到数据准备区。2清洗阶段的主要任务是:清洗并增补列的属性。清洗并增补数据结构。清洗并增补数据规则。增补复杂的业务规则。建立元数据库描述数据质量。将清洗后的数据保存到数据准备区。3一致性处理阶段的主要任务是:一致性处理业务标签,即维度表中的描述属性。一致性处理业务度量及性能指标,通常是事实表中的事实。去
4、除重复数据。国际化处理。将一致性处理后的数据保存到数据准备区。4交付阶段的主要任务是:加载星型的和经过雪花处理的维度表数据。产生日期维度。加载退化维度。加载子维度。加载1、2、3型的缓慢变化维度。处理迟到的维度和迟到的事实。加载多值维度。加载有复杂层级结构的维度。加载文本事实到维度表。处理事实表的代理键。加载三个基本类型的事实表数据。加载和更新聚集。将处理好的数据加载到数据仓库。从这个任务列表中可以看出,ETL的过程和数据仓库建模的过程结合的非常紧密。换句话说,ETL系统的设计应该和目标表的设计同时开始。通常来说,数据仓库架构师和ETL系统设计师是同一个人。3. Describe the di
5、fferent types of ETL metadata and provide examples of each.举例说明各种ETL过程中的元数据。答:元数据是ETL项目组面对的一个非常重要的主题,对于整个数据仓库项目也是非常重要的一部分。对于元数据的分类和使用没有很确定的定义。通常来说,我们可以把元数据分为三类,分别为业务元数据(Business Metadata),技术元数据(Technical Metadata)和过程处理元数据(Process Execution Metadata)。业务元数据,是从业务的角度对数据的描述。通常是用来给报表工具和前端用户对数据进行分析和使用提供帮助。
6、技术元数据,是从技术的角度对数据的描述。通常包括数据的一些属性,如数据类型、长度、或者数据概况分析后一些结果。过程处理元数据,是ETL处理过程中的一些统计数据,通常包括有多少条记录被加载,多少条记录被拒绝接受等数据4. What steps do you take to determine the bottleneck of a slow running ETL process?如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。答:ETL系统遇到性能问题,运行很慢是一件较常见的事情,这时要做的是逐步找到系统的瓶颈在哪里。首先要确定是由CPU、内存、I/O和网络等产生的瓶颈,还是由
7、ETL处理过程产生的瓶颈。如果环境没有瓶颈,那么需要分析ETL的代码。这时,我们可以采用排除的方法,需要隔离不同的操作,并分别对它们进行测试。如果是采用纯手工编码方式的ETL处理,隔离不同的操作要麻烦一些,这时需要根据编码的实际情况来处理。如果是采用ETL工具的话,目前的ETL工具应该都有隔离不同处理的功能,隔离起来相对容易一些。分析最好从抽取操作开始,然后依次分析各种计算、查找表、聚集、过滤等转换环节的处理操作,最后分析加载操作。实际的处理中,可以按照下面的七个步骤来查找瓶颈。1隔离并执行抽取查询语句。先将抽取部分隔离出来,去掉转换和交付,可以将数据直接抽取到文件中。如果这一步效率很差,基本
8、确定是抽取SQL的问题。从经验来看,未经调优的SQL是一个最常见的导致ETL效率差的原因。如果这步没有问题进入第二步。2去掉过滤条件。这一条是针对全抽取,然后在ETL处理中进行过滤的处理方式而言。在ETL处理中做过滤处理有时会产生瓶颈。可以先将过滤去掉,如果确定为这个原因,可以考虑在抽取时进行数据过滤。3排除查找表的问题。参照数据在ETL处理过程中通常会加载到内存中,目的是做代码和名称的查找替换,也称查找表。有时查找表的数据量过大也会产生瓶颈。可以逐个隔离查找表,来确定是否是这里出现问题。注意要将查找表的数据量降到最低,通常一个自然键一个代理键就可以,这样可以减少不必要的数据I/O。4分析排序
9、和聚集操作。排序和聚集操作都是非常费资源的操作。对这部分隔离,来判断是否因为它们引起性能问题。如果确定是因为这个,需要考虑是否可以将排序和聚集处理移出数据库和ETL工具,移到操作系统中来处理。5隔离并分析每一个计算和转换处理。有时转换过程中的处理操作也会引起ETL工作的性能。逐步隔离移除它们来判断哪里出了问题。要注意观察像默认值、数据类型转换等操作。6隔离更新策略。更新操作在数据量非常大时是性能非常差的。隔离这部分,看看是否这里出了问题。如果确定是因为大批量更新出了性能问题。应该考虑将insert、update和delete分开处理。7检测加载数据的数据库I/O。如果前面各部分都没有问题,最后需要检测是目标数据库的性能问题。可以找个文件代替数据库,如果性能提高很多,需要仔细检测目标数据库的加载过程中的操作。例如是否关闭了所有的约束,关闭了所有的索引,是否使用了批量加载工具。如果性能还没有提高,可以考虑使用并行加载策略。-
限制150内