精华内容
下载资源
问答
  • ETL面试题

    千次阅读 2019-03-22 00:02:44
    ETL面试题 What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据...

    ETL面试题

    1. What is a logical data mapping and what does it mean to the ETL team?

    什么是逻辑数据映射?它对ETL项目组的作用是什么?

    答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据仓库的模型以及将源系统的数据转换到数据仓库中需要做操作和处理方式的说明文档,通常以表格或Excel的格式保存如下的信息:

    目标表名:
    目标列名:
    目标表类型:注明是事实表、维度表或支架维度表。
    SCD类型:对于维度表而言。
    源数据库名:源数据库的实例名,或者连接字符串。
    源表名:
    源列名:
    转换方法:需要对源数据做的操作,如Sum(amount)等。
    逻辑数据映射应该贯穿数据迁移项目的始终,在其中说明了数据迁移中的ETL策略。在进行物理数据映射前进行逻辑数据映射对ETL项目组是重要的,它起着元数据的作用。项目中最好选择能生成逻辑数据映射的数据迁移工具。

    1. What are the primary goals of the data discovery phase of the data warehouse project?

    在数据仓库项目中,数据探索阶段的主要目的是什么?

    答:在逻辑数据映射进行之前,需要首先对所有的源系统进行分析。对源系统的分析通常包括两个阶段,一个是数据探索阶段(Data Discovery Phase),另一个是异常数据检测阶段。

    数据探索阶段包括以下内容:

    1.收集所有的源系统的文档、数据字典等内容。

    2.收集源系统的使用情况,如谁在用、每天多少人用、占多少存储空间等内容。

    3.判断出数据的起始来源(System-of-Record)。

    4.通过数据概况(Data Profiling)来对源系统的数据关系进行分析。

    数据探索阶段的主要目的是理解源系统的情况,为后续的数据建模和逻辑数据映射打下坚实的基础。

    1. How is the system-of-record determined?

    如何确定起始来源数据?

    答:这个问题的关键是理解什么是System-of-Record。System-of-Record和数据仓库领域内的其他很多概念一样,不同的人对它有不同的定义。在Kimball的体系中,System-of-Record是指最初产生数据的地方,即数据的起始来源。在较大的企业内,数据会被冗余的保存在不同的地方,在数据的迁移过程中,会出现修改、清洗等操作,导致与数据的起始来源产生不同。

    起始来源数据对数据仓库的建立有着非常重要的作用,尤其是对产生一致性维度来说。我们从起始来源数据的越下游开始建立数据仓库,我们遇到垃圾数据的风险就会越大。

    1. What are the four basic Data Flow steps of an ETL process?

    在ETL过程中四个基本的过程分别是什么?

    答:Kimball数据仓库构建方法中,ETL的过程和传统的实现方法有一些不同,主要分为四个阶段,分别是抽取(extract)、清洗(clean)、一致性处理(comform)和交付(delivery),简称为ECCD。

    1.抽取阶段的主要任务是:

    读取源系统的数据模型。
    连接并访问源系统的数据。
    变化数据捕获。
    抽取数据到数据准备区。
    2.清洗阶段的主要任务是:

    清洗并增补列的属性。
    清洗并增补数据结构。
    清洗并增补数据规则。
    增补复杂的业务规则。
    建立元数据库描述数据质量。
    将清洗后的数据保存到数据准备区。
    3.一致性处理阶段的主要任务是:

    一致性处理业务标签,即维度表中的描述属性。
    一致性处理业务度量及性能指标,通常是事实表中的事实。
    去除重复数据。
    国际化处理。
    将一致性处理后的数据保存到数据准备区。
    4.交付阶段的主要任务是:

    加载星型的和经过雪花处理的维度表数据。
    产生日期维度。
    加载退化维度。
    加载子维度。
    加载1、2、3型的缓慢变化维度。
    处理迟到的维度和迟到的事实。
    加载多值维度。
    加载有复杂层级结构的维度。
    加载文本事实到维度表。
    处理事实表的代理键。
    加载三个基本类型的事实表数据。
    加载和更新聚集。
    将处理好的数据加载到数据仓库。
    从这个任务列表中可以看出,ETL的过程和数据仓库建模的过程结合的非常紧密。换句话说,ETL系统的设计应该和目标表的设计同时开始。通常来说,数据仓库架构师和ETL系统设计师是同一个人。

    1. What are the permissible data structures for the data staging area? Briefly describe the pros and cons of each.

    在数据准备区中允许使用的数据结构有哪些?各有什么优缺点?

    1.固定格式的文本文件。(Flat File)

    Flat File指的是一种保存在系统上的一种文本文件格式,它以类似数据库的表的方式用行和列来保存数据。这种文件格式经常用来进行数据交换。用于保存数据不太合适。

    2.XML数据集。

    多用于数据交换,用户保存数据不太合适。

    3.关系数据库的表。

    保存数据的较理想选择。

    4.独立的数据库表。

    独立的数据库表一般指建立的表和其他表没有外键约束关系。这样的表多用于数据处理。

    5.三范式或者关系型模型。

    6.非关系型数据源。

    非关系型数据源一般包括COBOL copy books、VSAM文件、Flat文件、Spreadsheets等。

    7.维度模型。

    8.原子事实表和聚集事实表。

    9.代理键查找表。

    1. When should data be set to disk for safekeeping during the ETL?

    简述ETL过程中哪个步骤应该出于安全的考虑将数据写到磁盘上?

    答:Staging的意思就是将数据写到磁盘上。出于安全及ETL能方便重新开始,在数据准备区(Staging Area)中的每个步骤中都应该将数据写到磁盘上,即生成文本文件或者将建立关系表保存数据,而不应该以数据不落地方式直接进行ETL。

    例如,在数据抽取阶段,我们需要连接到源系统,为了对源系统的影响尽量小,我们需要将抽取的数据保存成文本文件或者放入数据准备区的表中,这样,当ETL过程出现错误而失败时,我们就可以从这些文本文件开始ETL,而不需要再次影响源系统。

    1. Describe techniques for extracting from heterogeneous data sources.

    简述异构数据源中的数据抽取技术。

    答:在数据仓库项目中,需要抽取的数据经常来自不同的数据源,它们的逻辑结构和物理结构都可能不同,即称之为异构数据源。

    在对异构数据源进行整合抽取时,我们需要做的事情依次是标识出所有的源系统,对源系统进行概况分析,定义数据匹配逻辑,建立筛选规则,生成一致性维度。

    对于源数据的操作系统平台和数据平台各不相同的情况,我们需要根据实际情况来确定如何进行数据抽取,通常的方法有建立ODBC连接、定义接口文件、建立DBLINK等方法。

    1. What is the best approach for handling ERP source data?

    从ERP源系统中抽取数据最好的方法是什么?

    答:ERP系统的产生是为了解决企业内异构数据的整合。这个问题也是数据仓库系统面临的主要问题。ERP的解决方案是将企业内的各个应用(包括销售、会计、人力资源、库存和产品等)建立在相同的平台和相同的应用框架下,即在应用操作层将企业内的数据进行了一致性处理。而数据仓库是在应用操作层之上建立一致性的规则并进行一致性处理。目前比较流行的ERP系统有SAP、PeopleSoft、Oracle、Baan和J.D.EDwards(大部分没接触过)。

    如果企业内只有一套ERP系统,那么数据就已经是一致的了,为数据抽取提供了方便。如果企业内除了ERP外还有其他系统,则数据抽取会变得复杂。因为目前的ERP系统的数据模型都非常复杂,可能有几百几千个表,并且较难理解。直接在ERP系统上建立数据捕获和抽取是非常复杂的。最好的办法是购买能针对ERP系统数据抽取提供功能的ETL工具,将ERP内部的复杂性留给ETL厂商处理。

    1. Explain the pros and cons of communicating with databases natively versus ODBC.

    简述直接连接数据库和使用ODBC连接数据库进行通讯的优缺点。

    答:通常连接数据库的方式分为两类,一类是直接连接,另一类是通过ODBC连接。

    直接连接的方式主要是通过COBOL、PL/SQL、Transact-SQL等方式连接数据库。这种方式的优点是运行性能高,可以使用DBMS提供的一些特殊功能。缺点是通用性差。

    ODBC是为windows应用程序访问数据库提供的一组接口。ODBC的优点是灵活性,通过改变驱动和连接方式可以使用不同的数据库。ODBC方式的缺点是性能差。使用ODBC连接方式实现ETL的话,在ETL程序和至少要有两层,分别是ODBC Manager层和ODBC Driver层。另外,使用ODBC方式不能使用DBMS提供的一些特殊的功能。

    1. Describe three change data capture (CDC) practices and the pros and cons of each.

    简述出三种变化数据捕获技术及其优缺点。

    答:变化数据捕获(CDC)技术是ETL工作中的重点和难点,通常需要在增量抽取时完成。实现变化数据捕获时最理想的是找到源系统的DBA。如果不能找到,就需要ETL项目组自己进行检测数据的变化。下面是一些常用的技术。

    1.采用审计列

    审计列指表中如“添加日期”、“修改日期”、“修改人”等信息的字段。应用程序在对该表的数据进行操作时,同时更新这些字段,或者建立触发器来更新这些字段。采用这种方式进行变化数据捕获的优点是方便,容易实现。缺点是如果操作型系统没有相应的审计字段,需要改变已有的操作型系统的数据结构,以保证获取过程涉及的每张表都有审计字段。

    2.数据库日志

    DBMS日志获取是一种通过DBMS提供的日志系统来获得变化的数据。它的优点是对数据库或访问数据库的操作系统的影响最小。缺点是要求DBMS支持,并且对日志记录的格式非常了解。

    3.全表扫描

    全表扫描或者全表导出文件后进行扫描对比也可以进行变化数据捕获,尤其是捕获删除的数据时。这种方法的优点是,思路清晰,适应面广,缺点是效率比较差。

    1. What are the four broad categories of data quality checks? Provide an implementation technique for each.

    数据质量检查的四大类是什么?为每类提供一种实现技术。

    答:数据质量检查是ETL工作中非常重要的一步,主要关注一下四个方面。

    1.正确性检查(Corret)

    检查数据值及其描述是否真实的反映了客观事务。例如地址的描述是否完全。

    2.明确性检查(Unambiguous)

    检查数据值及其描述是否只有一个意思或者只有一个解释。例如地名相同的两个县需要加区分方法。

    3.一致性检查(Consistent)

    检查数据值及其描述是否统一的采用固定的约定符号来表示。例如币别中人民币用’CNY’。

    4.完全性检查(Complete)

    完全性有两个需要检查的地方,一个是检查字段的数据值及其描述是否完全。例如检查是否有空值。另一个是检查记录的合计值是否完全,有没有遗忘某些条件。

    1. At which stage of the ETL should data be profiled?

    简述应该在ETL的哪个步骤来实现概况分析?

    答:数据概况分析是对源数据内容的概况进行分析,应该在项目的开始后尽早完成,它会对设计和实现有很大的影响。在完成需求收集后就应该立即开始数据概况分析。

    数据概况分析不光是对源系统的数据概况的定量描述,而且为ETL系统中需要建立的错误事件事实表(Error Event Table)和审计维度表(Audit Dimension)打下基础,为其提供数据。

    1. What are the essential deliverables of the data quality portion of ETL?

    ETL项目中的数据质量部分核心的交付物有那些?

    答:ETL项目中数据质量部分的核心的交付物主要有下面三个:

    1.数据概况分析结果

    数据概况分析结果是对源系统的数据状况的分析产物,包括如源系统中有多少个表,每个表有多少字段,其中多少为空,表间的外键关系是否存在等反映源系统数据质量的内容。这些内容用来决定数据迁移的设计和实现,并提供给错误事件事实表和审计维度表需要的相关数据。

    2.错误事件事实表

    错误事件事实表及相关的一系列维度表是数据质量检查部分的一个主要交付物。粒度是每一次数据质量检查中的错误信息。相关维度包括日期维度表、迁移信息维度表、错误事件信息维度表,其中错误事件信息维度表中检查的类型、源系统的信息、涉及的表信息、检查使用的SQL等内容。错误事件事实表不提供给前台用户。

    3.审计维度表

    审计维度表是给最终用户提供数据质量说明的一个维度表。它描述了用户使用的事实表的数据来源,数据质量情况等内容。

    1. How can data quality be quantified in the data warehouse?

    如何来量化数据仓库中的数据质量?

    答:在数据仓库项目中,通常通过不规则数据的检测工作(Anomaly Detection)来量化源系统的数据质量。除非成立专门的数据质量调查项目组,否则这个工作应该由ETL项目组完成。通常可以采用分组SQL来检查数据是否符合域的定义规则。

    对于数据量小的表,可以直接使用类似下面的SQL完成。

    select state, count(*) from order_detail group by state

    对于数据量大的表,一般通过采样技术来减少数据量,然后进行不规则数据检测。类似SQL如下。

    select a.* from employee a, (select rownum counter, a.* from employee a) B where a.emp_id = b.emp_id and mod(b.counter, trunc((select count(*) from employee)/1000,0)) = 0

    如果可以采用专门的数据概况分析工具进行的话,可以减少很大的工作量。

    1. What are surrogate keys? Explain how the surrogate key pipeline works.

    什么是代理键?简述代理键替换管道如何工作。

    答:在维度表的迁移过程中,有一种处理方式是使用无意义的整型值分配给维度记录并作为维度记录的主键,这些作为主键的整型值称为代理键(Surrogate Key)。使用代理键有很多好处,如隔离数据仓库与操作环境,历史记录的保存,查询速度快等。

    同时,在事实表的迁移过程中,为了保证参照完整性也需要进行代理键的替换工作。为了代理键替换的效率高一些,我们通常在数据准备区中建立代理键查找表(Surrogate Mapping Table or Lookup Table)。代理键查找表中保存最新的代理键和自然键的对应关系。在对事实表进行代理键替换时,为了保证效率高,需要把代理键查找表中的数据加载到内存中,并可以开多线程依次替换同一记录的中的不同代理键,使一条事实记录在所有的代理键都替换完后再写如磁盘中,这样的替换过程称为代理键替换管道(Surrogate Key Pipeline)。

    1. Why do dates require special treatment during the ETL process?

    为什么在ETL的过程中需要对日期进行特殊处理?

    答:在数据仓库的项目中,分析是主导需求,而基于日期和时间的分析更是占了很大的比重。而在操作型源系统中,日期通常都是SQL的DATETIME型的。如果在分析时,使用SQL对这种类型的字段临时处理会出现一些问题,如效率很差,不同的用户会采用不同的格式化方法导致报表不统一。所以,在数据仓库的建模时都会建立日期维度表和时间维度表,将用到的和日期相关的描述都冗余到该表中。

    但是,并不是所有的日期都被转化为日期维度表的外键。日期维度表中的记录是有限的,有些日期如生日等可能会比日期维度表中记录的最小日期还要早,这类字段可以直接在数据仓库中保存SQL的DATETIME型。而像购买日期等与分析的业务紧密相关的通常都需要转化为日期维度表的外键,可以用日期维度表中统一的描述信息进行分析。

    1. Explain the three basic delivery steps for conformed dimensions.

    简述对一致性维度的三种基本的交付步骤。

    答:数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:

    1.标准化(Standardizing)

    标准化的目的是使不同数据源的数据编码方式,数据格式等相同,为下一步数据匹配打下基础。

    2.匹配(Matching and Deduplication)

    数据匹配的工作有两种,一种是将不同数据源的标识同一事物的不同属性匹配到一起,是数据更完善;另一种是将不同数据源的相同数据标识成重复,为下一步的筛选打下基础。

    3.筛选(Surviving)

    数据筛选的主要目的是选定一致性维度作为主数据(Master Data),也就是最终交付的一致性维度数据。

    1. Name the three fundamental fact grains and describe an ETL approach for each.

    简述三种基本事实表,并说明ETL的过程中如何处理它们。

    答:事实表从粒度的角色来划分可以分为三类,分别是交易粒度事实表(Transaction Grain)、周期快照粒度事实表(Periodic Snapshot)和累计快照粒度事实表(Accumulating Snapshot)。在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。

    交易粒度事实表的来源伴随交易事件成生的数据,例如销售单。在ETL过程中,以原子粒度直接进行迁移。

    周期快照事实表是用来记录有规律的,固定时间间隔的业务累计数据,例如库存日快照。在ETL过程中,以固定的时间间隔生成累计数据。

    累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息。在ETL过程中,随着业务处理过程的步骤逐步完善该表中的记录。

    1. How are bridge tables delivered to classify groups of dimension records associated to a singlefact?

    简述桥接表是如何将维度表和事实表进行关联的?

    答:桥接表(Bridge Table)是维度建模中的一类比较特殊的表。

    在数据仓库的建模时,会遇到具有层次结构的维度表,对于这样的表有一种建模方式是建立父子表,即每条记录上包括一个指向其父记录的字段。这种父子表的建立在层级深度可变时尤其有用,是一个紧凑而有效的建模方式。但是这种建模方式也有缺点,就是用标准SQL很难对递归结构进行操作。

    与这种递归结构的父子表不同,桥接表采用不同的建模方式也可以表示这种层级结构。桥接表是建立在维度表和事实表中间的一个具有较多冗余信息的表,其中的记录包含层级结构中节点到其下面每个节点的路径。表结构如下所示:

    父关键字
    子关键字
    父层数
    层名
    底端标识
    顶端标识
    在桥接表中,节点与其下面的任意一个节点都建立一个关联记录保存在表中,即父子关系不再局限在相邻层,如第一层与第三层同样有父子关系,通过父层数可以区分相隔了几层。这样,可以通过父层数和父子关系来进行层级结构的查询。

    当然,桥接表也不是一个完备的解决方案,它只能是在某些情况下是查询变得容易。

    1. How does late arriving data affect dimensions and facts? Share techniques for handling each.

    迟到的数据对事实表和维度表有什么影响?怎样来处理这个问题?

    答:迟到的数据分为两种,一种是迟到的事实表数据,另一种是迟到的维度表数据。

    对于迟到的事实记录,我们可以插入到相应的事实表中。在插入的同时,还需要做一些处理。首先,对于具有SCD TYPE 2型维度的事实记录需要在插入前判断该事实记录的发生日期到目前为止,维度记录是否发生过变化,如果有变化,该事实记录需要对应到事实发生时的维度记录上。其次,在事实记录插入完成后,与该事实表相关的聚集事实表和合并事实表需要做相应的处理。

    对于迟到的维度记录,我们需要做的处理要复杂一些。首先,如果迟到的维度记录是第一次进入数据仓库中,那么需要在维度表中生成一条维度记录,并将与该维度记录对应的事实记录的外键进行更新。其次,如果迟到的维度记录是对原维度进行的修改,那么我们在维度表中生成一条新记录的同时,还需要找到维度本次变化到下次变化间的事实行,并将其维度外键更新为新加维度的代理关键字。

    1. Describe the different types of ETL metadata and provide examples of each.

    举例说明各种ETL过程中的元数据。

    答:元数据是ETL项目组面对的一个非常重要的主题,对于整个数据仓库项目也是非常重要的一部分。对于元数据的分类和使用没有很确定的定义。

    通常来说,我们可以把元数据分为三类,分别为业务元数据(Business Metadata),技术元数据(Technical Metadata)和过程处理元数据(Process Execution Metadata)。

    业务元数据,是从业务的角度对数据的描述。通常是用来给报表工具和前端用户对数据进行分析和使用提供帮助。

    技术元数据,是从技术的角度对数据的描述。通常包括数据的一些属性,如数据类型、长度、或者数据概况分析后一些结果。

    过程处理元数据,是ETL处理过程中的一些统计数据,通常包括有多少条记录被加载,多少条记录被拒绝接受等数据

    1. Share acceptable mechanisms for capturing operational metadata.

    简述获取操作型元数据的方法。

    答:操作型元数据(Operational Metadata),也就是过程处理元数据,记录的是ETL过程中数据迁移情况,如上次迁移日期,加载的记录数等信息。这部分元数据在ETL加载失败时会非常重要。

    一般来说,对于使用ETL工具的数据加载,像迁移调度时间、迁移调度顺序,失败处理等内容都可以在由在迁移工具中定义生成。像上次迁移日期等数据可以建表保存。

    如果是手工编写ETL程序的话,操作型元数据的处理会麻烦一些,需要自己来获取和存储。获取的方式,不同的编程方式会不尽相同。

    1. Offer techniques for sharing business and technical metadata. Optimization/Operations

    简述共享业务元数据和技术元数据的方法。

    答:为了能共享各种元数据,在数据仓库的构建过程中必须要有一些元数据标准,并在实际开发中遵守这些标准。这些标准包括元数据命名规则、存储规则及共享规则等内容。有关元数据标准的内容可以参看公共仓库元模型(Common Warehouse Metamodel,CWM)的相关资料 。

    在最基本的层面上,企业应该在下面三个方面制定好标准。

    1.命名规则

    命名规则应该在ETL组开始编码前制定好,范围包括表、列、约束、索引等等数据库对象以及其他一些编码规则。如果企业有自己的命名规则,ETL组应该遵守企业的命名规则。当企业的命名规则不能完全满足需求时,ETL组可以制定补充规则或者新的规则。对企业命名规则的改变需要有详细的文档记录,并提交企业相关部门审核。

    2.架构

    在ETL组开始工作前,架构应该先被设计好。例如ETL引擎是和数据仓库放在同一台服务器上还是单独设立服务器;数据准备区是建立成临时的还是持久的;数据仓库是基于维度建模的还是3NF建模的。并且这些内容应该有详细的文档记录。

    3.基础结构

    系统的基础结构也应该先确定好。例如解决方案是基于Windows的还是基于UNIX的。这些企业基础结构元数据应该在ETL组开始工作前制定好。这些内容也应该有详细的文档记录。

    在ETL的开发中,制定好元数据标准并能很好的遵守,那么建立好的数据仓库的元数据就可以很好的完成共享功能。

    1. State the primary types of tables found in a data warehouse and the order which they must be loaded to enforce referential integrity.

    简述数据仓库中的表的基本类型,以及为了保证引用完整性该以什么样的顺序对它们进行加载。

    答:数据仓库中的表的基本类型有维度表、事实表、子维度表、桥接表等几类。其中子维度表即雪花模型由支架维度技术处理,桥接表用来处理多值维度或层级结构。

    数据仓库中需要加载的各类表之间有相互依赖的关系,所以加载时需要以一定的顺序进行加载。下面是一些加载的基本原则:

    子维度表加载成功后,再加载维度表。
    维度表加载成功后,再加载桥接表。
    子维度表、维度表和桥接表都加载成功后,再加载事实表。
    这个加载顺序可以通过主外键的关系来确定。(注意,此回答为总线架构的数据仓库的表的加载顺序。)

    1. What are the characteristics of the four levels of the ETL support model?

    简述ETL技术支持工作的四个级别的特点。

    答:数据仓库上线后,ETL组需要为保证ETL工作的正常运行提供技术支持。通常这种技术支持工作分为四个级别。

    1.第一级别的技术支持通常是电话支持人员,属于技术支持服务窗口(Help Desk)类型。如果数据迁移出现错误或者用户发现数据有问题,问题通过电话反映到第一级别的技术支持处。第一级别支持人员通过ETL项目组提供的一些问题的解决办法尽可能的解决发现的问题,阻止问题升级。

    2.第二级别的技术支持通常是系统管理员和DBA。如果第一级别不能解决问题,问题反映到第二级别。第二级别的人员通常技术上比较强,硬件基础结构和软件架构上的问题都可以解决。

    3.第三级别的技术支持通常是ETL项目负责人。如果第二级别不能解决问题,问题反映到第三级别。ETL项目负责人应该具备足够的知识,能够解决生产环境中的绝大部分问题。ETL项目负责人在必要时可以和开发人员或者外部产品提供商对某些问题进行交流,以便找出解决问题的办法。

    4.第四级别的技术支持通常是ETL的实际开发人员。如果第三级别不能解决问题,问题反映到第四级别。ETL的实际开发人员可以对代码进行跟踪分析并找到问题的解决办法。如果问题出现在产品供应商的应用中,还需要供应商提供技术支持。

    在小一些的数据仓库环境中,也是通常的情况下,第三级别和第四级别可以合并在一起。合并后对第二级别的要求会高一些。不建议每次出现问题都找ETL的开发人员。第一级别的技术支持人员不应该仅仅提供电话支持服务,在将问题反映给下一个级别前,要尽自己的能力去解决问题。

    1. What steps do you take to determine the bottleneck of a slow running ETL process?

    如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。

    答:ETL系统遇到性能问题,运行很慢是一件较常见的事情,这时要做的是逐步找到系统的瓶颈在哪里。

    首先要确定是由CPU、内存、I/O和网络等产生的瓶颈,还是由ETL处理过程产生的瓶颈。

    如果环境没有瓶颈,那么需要分析ETL的代码。这时,我们可以采用排除的方法,需要隔离不同的操作,并分别对它们进行测试。如果是采用纯手工编码方式的ETL处理,隔离不同的操作要麻烦一些,这时需要根据编码的实际情况来处理。如果是采用ETL工具的话,目前的ETL工具应该都有隔离不同处理的功能,隔离起来相对容易一些。

    分析最好从抽取操作开始,然后依次分析各种计算、查找表、聚集、过滤等转换环节的处理操作,最后分析加载操作。

    实际的处理中,可以按照下面的七个步骤来查找瓶颈。

    1.隔离并执行抽取查询语句。

    先将抽取部分隔离出来,去掉转换和交付,可以将数据直接抽取到文件中。如果这一步效率很差,基本确定是抽取SQL的问题。从经验来看,未经调优的SQL是一个最常见的导致ETL效率差的原因。如果这步没有问题进入第二步。

    2.去掉过滤条件。

    这一条是针对全抽取,然后在ETL处理中进行过滤的处理方式而言。在ETL处理中做过滤处理有时会产生瓶颈。可以先将过滤去掉,如果确定为这个原因,可以考虑在抽取时进行数据过滤。

    3.排除查找表的问题。

    参照数据在ETL处理过程中通常会加载到内存中,目的是做代码和名称的查找替换,也称查找表。有时查找表的数据量过大也会产生瓶颈。可以逐个隔离查找表,来确定是否是这里出现问题。注意要将查找表的数据量降到最低,通常一个自然键一个代理键就可以,这样可以减少不必要的数据I/O。

    4.分析排序和聚集操作。

    排序和聚集操作都是非常费资源的操作。对这部分隔离,来判断是否因为它们引起性能问题。如果确定是因为这个,需要考虑是否可以将排序和聚集处理移出数据库和ETL工具,移到操作系统中来处理。

    5.隔离并分析每一个计算和转换处理。

    有时转换过程中的处理操作也会引起ETL工作的性能。逐步隔离移除它们来判断哪里出了问题。要注意观察像默认值、数据类型转换等操作。

    6.隔离更新策略。

    更新操作在数据量非常大时是性能非常差的。隔离这部分,看看是否这里出了问题。如果确定是因为大批量更新出了性能问题。应该考虑将insert、update和delete分开处理。

    7.检测加载数据的数据库I/O。

    如果前面各部分都没有问题,最后需要检测是目标数据库的性能问题。可以找个文件代替数据库,如果性能提高很多,需要仔细检测目标数据库的加载过程中的操作。例如是否关闭了所有的约束,关闭了所有的索引,是否使用了批量加载工具。如果性能还没有提高,可以考虑使用并行加载策略。

    1. Describe how to estimate the load time of a large ETL job.

    Real Time ETL

    简述如何评估大型ETL数据加载时间。

    答:评估一个大型的ETL的数据加载时间是一件很复杂的事情。数据加载分为两类,一类是初次加载,另一类是增量加载。

    在数据仓库正式投入使用时,需要进行一次初次加载,而这次初次加载需要的时间一般较难预料。在数据仓库的日常使用和维护中,每天需要对数据仓库进行增量加载。增量加载的数据量要比初次加载小很多。

    下面以初次加载为例来谈谈如何评估大型ETL的数据加载时间。

    对初次加载的加载时间进行预估,需要将整个ETL过程分成抽取、转换和加载三部分,分别对这三部分进行评估。

    1.对抽取时间的评估。

    抽取通常占用的ETL的大部分时间,而且对这部分需要时间的评估也是非常困难的。为了对这部分时间进行评估,我们可以将查询时间分成两部分,一部分是查询响应时间,另一部分是数据返回时间。查询响应时间指从查询开始执行到结果开始返回这段时间。数据返回时间指第一条记录返回到最后一条记录返回的时间。

    另外,初次加载的数据量太大,我们可以考虑选择其中的一部分来评估整体的时间,实际处理中,可以选择事实表的一个分区。一般来说各个分区的数据量差不多,评估出一个分区的时间,乘上分区数可以作为整体的评估时间。

    2.对数据转换时间的评估

    数据转换工作通常在内存中完成,一般来说都有着非常快的速度,占总体时间的比重比较小。如果要评估这部分需要的时间的话,最简单的评估方法是先评估出抽取时间和加载时间,然后运行整个过程,用整体时间减去抽取时间和加载时间。

    3.对加载时间的评估

    很多原因都可能影响加载时间,其中最重要的两个分别是索引和日志。

    对加载时间的评估,也可以像评估抽取时间时一样,选择加载数据的一部分,如1/200进行加载,计算出时间后乘以200来作为整体加载时间。

    总之,大型ETL数据的加载时间的评估是很困难的,我们采用的方法主要是类比评估,即选择一部分数据减少整体时间进行评估。在进行评估时要注意到测试环境和生产环境的配置等的差别会引起评估结果的偏差。虽然这种对时间的评估一定会有误差,但是可以做为整体加载时间的一个参考。

    1. Describe the architecture options for implementing real-time ETL.

    简述在架构实时ETL时的可以选择的架构部件。

    答:在建立数据仓库时,ETL通常都采用批处理的方式,一般来说是每天的夜间进行跑批。

    随着数据仓库技术的逐步成熟,企业对数据仓库的时间延迟有了更高的要求,也就出现了目前常说的实时ETL(Real-Time ETL)。实时ETL是数据仓库领域里比较新的一部分内容。

    在构建实时ETL架构的数据仓库时,有几种技术可供选择。

    1.微批处理(microbatch ETL,MB-ETL)

    微批处理的方式和我们通常的ETL处理方式很相似,但是处理的时间间隔要短,例如间隔一个小时处理一次。

    2.企业应用集成(Enterprise Application Integration,EAI)

    EAI也称为功能整合,通常由中间件来完成数据的交互。而通常的ETL称为数据整合。

    对实时性要求非常高的系统,可以考虑使用EAI作为ETL的一个工具,可以提供快捷的数据交互。不过在数据量大时采用EAI工具效率比较差,而且实现起来相对复杂

    3.CTF(Capture, Transform and Flow)

    CTF是一类比较新的数据整合工具。它采用的是直接的数据库对数据库的连接方式,可以提供秒级的数据。CTF的缺点是只能进行轻量级的数据整合。通常的处理方式是建立数据准备区,采用CTF工具在源数据库和数据准备区的数据库之间相连接。数据进入数据准备区后再经过其他处理后迁移入数据仓库。

    4.EII(Enterprise Information Integration)

    EII是另一类比较新的数据整合软件,可以给企业提供实时报表。EII的处理方式和CTF很相似,但是它不将数据迁移入数据准备区或者数据仓库,而是在抽取转换后直接加载到报表中。

    在实际建立实时ETL架构的数据仓库时,可以在MB-ETL, EAI, CTF, EII及通常的ETL中作出选择或者进行组合。

    1. Explain the different real-time approaches and how they can be applied in different business scenarios.

    简述几种不同的实时ETL实现方法以及它们的适用范围。

    答:实时数据仓库在目前来说还不是很成熟,成功案例也比较少,下面列举了一些实时数据仓库架构的实现方法。

    1.EII ONLY

    使用EII技术来代替实时的数据仓库,数据延迟可以保证在1分钟左右,支持数据整合的复杂程度较低。无法保存历史数据。

    2.EII + Static DW

    使用EII技术联合非实时的数据仓库,数据延迟可以保证在1分钟左右,1天内的数据整合的复杂程度较低,1天前的数据整合的复杂程度可以较高。可以保存历史数据。

    3.ETL + Static DW

    普通的ETL处理,数据延迟在1天。支持复杂程度较高的数据整合。保存历史数据。

    4.CTF + Real-Time Partition + Static DW

    使用CTF技术建立实时数据仓库,数据延迟可保证在15分钟左右。数据整合的复杂程度较低。保存历史数据。

    5.CTF + MB-ETL + Real-Time Partition + Static DW

    使用CTF技术和MB-ETL联合处理数据迁移,数据延迟可保证在1小时左右,支持数据整合的复杂程度较高,保存历史数据。

    6.MB-ETL + Real-Time Partition + Static DW

    直接使用MB-ETL建立实时数据仓库,数据延迟可保证在1小时左右,支持数据整合的复杂程度较高,保存历史数据。

    7.EAI + Real-Time Partition + Static DW

    使用EAI技术建立实时数据仓库,数据延迟可保证在1分钟左右,支持数据整合的复杂程度较高。保存历史数据。

    1. Outline some challenges faced by real-time ETL and describe how to overcome them.

    简述实时ETL的一些难点及其解决办法。

    答:实时ETL的引入给数据仓库的建设带来了很多新的问题和挑战,下面列举了一些问题,其中有些问题有具体的解决办法,有些只能在实际情况下去斟酌。

    1.连续的ETL处理对系统可靠性提出更高的要求。

    2.离散快照数据的间隔时间变短。

    3.缓慢变化维变成快速变化维。

    4.如何确定数据仓库中数据的刷新频率。

    5.目的是只出报表还是要实现数据整合。

    6.做数据整合还是应用整合。

    7.采用点对点的方式还是集中的方式。

    原文地址
    http://blog.sina.com.cn/s/blog_5745722a0100t9cn.html

    http://blog.sina.com.cn/s/blog_5745722a0100t9ct.html

    http://blog.sina.com.cn/s/blog_5745722a0100t9d5.html

    展开全文
  • ETL面试题精华

    2014-07-21 20:57:23
    ETL面试相关题目,数据吗,模型结构,ETL步骤,数据抽取技术,数据质量检查
  • ETL面试题集锦

    千次阅读 2019-01-29 18:03:00
    1. What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据仓库的...

    1. What is a logical data mapping and what does it mean to the ETL team?

    什么是逻辑数据映射?它对ETL项目组的作用是什么?

    答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标数据仓库的模型以及将源系统的数据转换到数据仓库中需要做操作和处理方式的说明文档,通常以表格或Excel的格式保存如下的信息:

    • 目标表名:
    • 目标列名:
    • 目标表类型:注明是事实表、维度表或支架维度表。
    • SCD类型:对于维度表而言。
    • 源数据库名:源数据库的实例名,或者连接字符串。
    • 源表名:
    • 源列名:
    • 转换方法:需要对源数据做的操作,如Sum(amount)等。

    逻辑数据映射应该贯穿数据迁移项目的始终,在其中说明了数据迁移中的ETL策略。在进行物理数据映射前进行逻辑数据映射对ETL项目组是重要的,它起着元数据的作用。项目中最好选择能生成逻辑数据映射的数据迁移工具。


    2. What are the primary goals of the data discovery phase of the data warehouse project?

    在数据仓库项目中,数据探索阶段的主要目的是什么?

    答:在逻辑数据映射进行之前,需要首先对所有的源系统进行分析。对源系统的分析通常包括两个阶段,一个是数据探索阶段(Data Discovery Phase),另一个是异常数据检测阶段

    数据探索阶段包括以下内容:

    1.收集所有的源系统的文档、数据字典等内容。

    2.收集源系统的使用情况,如谁在用、每天多少人用、占多少存储空间等内容。

    3.判断出数据的起始来源(System-of-Record)。

    4.通过数据概况(Data Profiling)来对源系统的数据关系进行分析。

    数据探索阶段的主要目的是理解源系统的情况,为后续的数据建模和逻辑数据映射打下坚实的基础。


    3. How is the system-of-record determined?

    如何确定起始来源数据?

    答:这个问题的关键是理解什么是System-of-Record。System-of-Record和数据仓库领域内的其他很多概念一样,不同的人对它有不同的定义。在Kimball的体系中,System-of-Record是指最初产生数据的地方,即数据的起始来源。在较大的企业内,数据会被冗余的保存在不同的地方,在数据的迁移过程中,会出现修改、清洗等操作,导致与数据的起始来源产生不同。

    起始来源数据对数据仓库的建立有着非常重要的作用,尤其是对产生一致性维度来说。我们从起始来源数据的越下游开始建立数据仓库,我们遇到垃圾数据的风险就会越大。


    4. What are the four basic Data Flow steps of an ETL process?

    在ETL过程中四个基本的过程分别是什么?

    答:Kimball数据仓库构建方法中,ETL的过程和传统的实现方法有一些不同,主要分为四个阶段,分别是抽取(extract)、清洗(clean)、一致性处理(comform)和交付(delivery),简称为ECCD。

    1.抽取阶段的主要任务是:

    • 读取源系统的数据模型。
    • 连接并访问源系统的数据。
    • 变化数据捕获。
    • 抽取数据到数据准备区。

    2.清洗阶段的主要任务是:

    • 清洗并增补列的属性。
    • 清洗并增补数据结构。
    • 清洗并增补数据规则。
    • 增补复杂的业务规则。
    • 建立元数据库描述数据质量。
    • 将清洗后的数据保存到数据准备区。

    3.一致性处理阶段的主要任务是:

    • 一致性处理业务标签,即维度表中的描述属性。
    • 一致性处理业务度量及性能指标,通常是事实表中的事实。
    • 去除重复数据。
    • 国际化处理。
    • 将一致性处理后的数据保存到数据准备区。

    4.交付阶段的主要任务是:

    • 加载星型的和经过雪花处理的维度表数据。
    • 产生日期维度。
    • 加载退化维度。
    • 加载子维度。
    • 加载1、2、3型的缓慢变化维度。
    • 处理迟到的维度和迟到的事实。
    • 加载多值维度。
    • 加载有复杂层级结构的维度。
    • 加载文本事实到维度表。
    • 处理事实表的代理键。
    • 加载三个基本类型的事实表数据。
    • 加载和更新聚集。
    • 将处理好的数据加载到数据仓库。

    从这个任务列表中可以看出,ETL的过程和数据仓库建模的过程结合的非常紧密。换句话说,ETL系统的设计应该和目标表的设计同时开始。通常来说,数据仓库架构师和ETL系统设计师是同一个人。


    5. What are the permissible data structures for the data staging area? Briefly describe the pros and cons of each.

    在数据准备区中允许使用的数据结构有哪些?各有什么优缺点?

    1.固定格式的文本文件。(Flat File)

    Flat File指的是一种保存在系统上的一种文本文件格式,它以类似数据库的表的方式用行和列来保存数据。这种文件格式经常用来进行数据交换。用于保存数据不太合适。

    2.XML数据集。

    多用于数据交换,用户保存数据不太合适。

    3.关系数据库的表。

    保存数据的较理想选择。

    4.独立的数据库表。

    独立的数据库表一般指建立的表和其他表没有外键约束关系。这样的表多用于数据处理。

    5.三范式或者关系型模型。

    6.非关系型数据源。

    非关系型数据源一般包括COBOL copy books、VSAM文件、Flat文件、Spreadsheets等。

    7.维度模型。

    8.原子事实表和聚集事实表。

    9.代理键查找表。


    6. When should data be set to disk for safekeeping during the ETL?

    简述ETL过程中哪个步骤应该出于安全的考虑将数据写到磁盘上?

    答:Staging的意思就是将数据写到磁盘上。出于安全及ETL能方便重新开始,在数据准备区(Staging Area)中的每个步骤中都应该将数据写到磁盘上,即生成文本文件或者将建立关系表保存数据,而不应该以数据不落地方式直接进行ETL。

    例如,在数据抽取阶段,我们需要连接到源系统,为了对源系统的影响尽量小,我们需要将抽取的数据保存成文本文件或者放入数据准备区的表中,这样,当ETL过程出现错误而失败时,我们就可以从这些文本文件开始ETL,而不需要再次影响源系统。


    7. Describe techniques for extracting from heterogeneous data sources.

    简述异构数据源中的数据抽取技术。

    答:在数据仓库项目中,需要抽取的数据经常来自不同的数据源,它们的逻辑结构和物理结构都可能不同,即称之为异构数据源。

    在对异构数据源进行整合抽取时,我们需要做的事情依次是标识出所有的源系统,对源系统进行概况分析,定义数据匹配逻辑,建立筛选规则,生成一致性维度。

    对于源数据的操作系统平台和数据平台各不相同的情况,我们需要根据实际情况来确定如何进行数据抽取,通常的方法有建立ODBC连接、定义接口文件、建立DBLINK等方法。


    8. What is the best approach for handling ERP source data?

    从ERP源系统中抽取数据最好的方法是什么?

    答:ERP系统的产生是为了解决企业内异构数据的整合。这个问题也是数据仓库系统面临的主要问题。ERP的解决方案是将企业内的各个应用(包括销售、会计、人力资源、库存和产品等)建立在相同的平台和相同的应用框架下,即在应用操作层将企业内的数据进行了一致性处理。而数据仓库是在应用操作层之上建立一致性的规则并进行一致性处理。目前比较流行的ERP系统有SAP、PeopleSoft、Oracle、Baan和J.D.EDwards(大部分没接触过)。

    如果企业内只有一套ERP系统,那么数据就已经是一致的了,为数据抽取提供了方便。如果企业内除了ERP外还有其他系统,则数据抽取会变得复杂。因为目前的ERP系统的数据模型都非常复杂,可能有几百几千个表,并且较难理解。直接在ERP系统上建立数据捕获和抽取是非常复杂的。最好的办法是购买能针对ERP系统数据抽取提供功能的ETL工具,将ERP内部的复杂性留给ETL厂商处理。


    9. Explain the pros and cons of communicating with databases natively versus ODBC.

    简述直接连接数据库和使用ODBC连接数据库进行通讯的优缺点。

    答:通常连接数据库的方式分为两类,一类是直接连接,另一类是通过ODBC连接。

    直接连接的方式主要是通过COBOL、PL/SQL、Transact-SQL等方式连接数据库。这种方式的优点是运行性能高,可以使用DBMS提供的一些特殊功能。缺点是通用性差。

    ODBC是为windows应用程序访问数据库提供的一组接口。ODBC的优点是灵活性,通过改变驱动和连接方式可以使用不同的数据库。ODBC方式的缺点是性能差。使用ODBC连接方式实现ETL的话,在ETL程序和至少要有两层,分别是ODBC Manager层和ODBC Driver层。另外,使用ODBC方式不能使用DBMS提供的一些特殊的功能。


    10. Describe three change data capture (CDC) practices and the pros and cons of each.

    简述出三种变化数据捕获技术及其优缺点

    答:变化数据捕获(CDC)技术是ETL工作中的重点和难点,通常需要在增量抽取时完成。实现变化数据捕获时最理想的是找到源系统的DBA。如果不能找到,就需要ETL项目组自己进行检测数据的变化。下面是一些常用的技术。

    1.采用审计列目前多半是这种

    审计列指表中如“添加日期”、“修改日期”、“修改人”等信息的字段。应用程序在对该表的数据进行操作时,同时更新这些字段,或者建立触发器来更新这些字段。采用这种方式进行变化数据捕获的优点是方便,容易实现。缺点是如果操作型系统没有相应的审计字段,需要改变已有的操作型系统的数据结构,以保证获取过程涉及的每张表都有审计字段。

    2.数据库日志阿里巴巴好像用的是这种,可以实现数仓与业务库近乎实时的数据同步

    DBMS日志获取是一种通过DBMS提供的日志系统来获得变化的数据。它的优点是对数据库或访问数据库的操作系统的影响最小。缺点是要求DBMS支持,并且对日志记录的格式非常了解。

    3.全表扫描应该没人会用这种吧。。。

    全表扫描或者全表导出文件后进行扫描对比也可以进行变化数据捕获,尤其是捕获删除的数据时。这种方法的优点是,思路清晰,适应面广,缺点是效率比较差。


    11. What are the four broad categories of data quality checks? Provide an implementation technique for each.

    数据质量检查的四大类是什么?为每类提供一种实现技术。

    答:数据质量检查是ETL工作中非常重要的一步,主要关注一下四个方面。

    1.正确性检查(Corret)

    检查数据值及其描述是否真实的反映了客观事务。例如地址的描述是否完全。

    2.明确性检查(Unambiguous)

    检查数据值及其描述是否只有一个意思或者只有一个解释。例如地名相同的两个县需要加区分方法。

    3.一致性检查(Consistent)

    检查数据值及其描述是否统一的采用固定的约定符号来表示。例如币别中人民币用'CNY'。

    4.完全性检查(Complete)

    完全性有两个需要检查的地方,一个是检查字段的数据值及其描述是否完全。例如检查是否有空值。另一个是检查记录的合计值是否完全,有没有遗忘某些条件。


    12. At which stage of the ETL should data be profiled?

    简述应该在ETL的哪个步骤来实现概况分析?

    答:数据概况分析是对源数据内容的概况进行分析,应该在项目的开始后尽早完成,它会对设计和实现有很大的影响。在完成需求收集后就应该立即开始数据概况分析。

    数据概况分析不光是对源系统的数据概况的定量描述,而且为ETL系统中需要建立的错误事件事实表(Error Event Table)和审计维度表(Audit Dimension)打下基础,为其提供数据。


    13. What are the essential deliverables of the data quality portion of ETL?

    ETL项目中的数据质量部分核心的交付物有那些?

    答:ETL项目中数据质量部分的核心的交付物主要有下面三个:

    1.数据概况分析结果

    数据概况分析结果是对源系统的数据状况的分析产物,包括如源系统中有多少个表,每个表有多少字段,其中多少为空,表间的外键关系是否存在等反映源系统数据质量的内容。这些内容用来决定数据迁移的设计和实现,并提供给错误事件事实表和审计维度表需要的相关数据。

    2.错误事件事实表

    错误事件事实表及相关的一系列维度表是数据质量检查部分的一个主要交付物。粒度是每一次数据质量检查中的错误信息。相关维度包括日期维度表、迁移信息维度表、错误事件信息维度表,其中错误事件信息维度表中检查的类型、源系统的信息、涉及的表信息、检查使用的SQL等内容。错误事件事实表不提供给前台用户。

    3.审计维度表

    审计维度表是给最终用户提供数据质量说明的一个维度表。它描述了用户使用的事实表的数据来源,数据质量情况等内容。


    14. How can data quality be quantified in the data warehouse?

    如何来量化数据仓库中的数据质量?

    答:在数据仓库项目中,通常通过不规则数据的检测工作(Anomaly Detection)来量化源系统的数据质量。除非成立专门的数据质量调查项目组,否则这个工作应该由ETL项目组完成。通常可以采用分组SQL来检查数据是否符合域的定义规则。

    对于数据量小的表,可以直接使用类似下面的SQL完成。

    select state, count(*) from order_detail group by state

    对于数据量大的表,一般通过采样技术来减少数据量,然后进行不规则数据检测。类似SQL如下。

    select a.* from employee a, (select rownum counter, a.* from employee a) B where a.emp_id = b.emp_id and mod(b.counter, trunc((select count(*) from employee)/1000,0)) = 0

    如果可以采用专门的数据概况分析工具进行的话,可以减少很大的工作量。


    15. What are surrogate keys? Explain how the surrogate key pipeline works.

    什么是代理键?简述代理键替换管道如何工作。

    答:在维度表的迁移过程中,有一种处理方式是使用无意义的整型值分配给维度记录并作为维度记录的主键,这些作为主键的整型值称为代理键(Surrogate Key)。使用代理键有很多好处,如隔离数据仓库与操作环境,历史记录的保存,查询速度快等。

    同时,在事实表的迁移过程中,为了保证参照完整性也需要进行代理键的替换工作。为了代理键替换的效率高一些,我们通常在数据准备区中建立代理键查找表(Surrogate Mapping Table or Lookup Table)。代理键查找表中保存最新的代理键和自然键的对应关系。在对事实表进行代理键替换时,为了保证效率高,需要把代理键查找表中的数据加载到内存中,并可以开多线程依次替换同一记录的中的不同代理键,使一条事实记录在所有的代理键都替换完后再写如磁盘中,这样的替换过程称为代理键替换管道(Surrogate Key Pipeline)。


    16. Why do dates require special treatment during the ETL process?

    为什么在ETL的过程中需要对日期进行特殊处理?

    答:在数据仓库的项目中,分析是主导需求,而基于日期和时间的分析更是占了很大的比重。而在操作型源系统中,日期通常都是SQL的DATETIME型的。如果在分析时,使用SQL对这种类型的字段临时处理会出现一些问题,如效率很差,不同的用户会采用不同的格式化方法导致报表不统一。所以,在数据仓库的建模时都会建立日期维度表和时间维度表,将用到的和日期相关的描述都冗余到该表中。

    但是,并不是所有的日期都被转化为日期维度表的外键。日期维度表中的记录是有限的,有些日期如生日等可能会比日期维度表中记录的最小日期还要早,这类字段可以直接在数据仓库中保存SQL的DATETIME型。而像购买日期等与分析的业务紧密相关的通常都需要转化为日期维度表的外键,可以用日期维度表中统一的描述信息进行分析。


    17. Explain the three basic delivery steps for conformed dimensions.

    简述对一致性维度的三种基本的交付步骤。

    答:数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:

    1.标准化(Standardizing)

    标准化的目的是使不同数据源的数据编码方式,数据格式等相同,为下一步数据匹配打下基础。

    2.匹配(Matching and Deduplication)

    数据匹配的工作有两种,一种是将不同数据源的标识同一事物的不同属性匹配到一起,是数据更完善;另一种是将不同数据源的相同数据标识成重复,为下一步的筛选打下基础。

    3.筛选(Surviving)

    数据筛选的主要目的是选定一致性维度作为主数据(Master Data),也就是最终交付的一致性维度数据。


    18. Name the three fundamental fact grains and describe an ETL approach for each.

    简述三种基本事实表,并说明ETL的过程中如何处理它们。

    答:事实表从粒度的角色来划分可以分为三类,分别是交易粒度事实表(Transaction Grain)、周期快照粒度事实表(Periodic Snapshot)和累计快照粒度事实表(Accumulating Snapshot)。在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。

    交易粒度事实表的来源伴随交易事件成生的数据,例如销售单。在ETL过程中,以原子粒度直接进行迁移。

    周期快照事实表是用来记录有规律的,固定时间间隔的业务累计数据,例如库存日快照。在ETL过程中,以固定的时间间隔生成累计数据。

    累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息。在ETL过程中,随着业务处理过程的步骤逐步完善该表中的记录。


    19. How are bridge tables delivered to classify groups of dimension records associated to a singlefact?

    简述桥接表是如何将维度表和事实表进行关联的?

    答:桥接表(Bridge Table)是维度建模中的一类比较特殊的表。

    在数据仓库的建模时,会遇到具有层次结构的维度表,对于这样的表有一种建模方式是建立父子表,即每条记录上包括一个指向其父记录的字段。这种父子表的建立在层级深度可变时尤其有用,是一个紧凑而有效的建模方式。但是这种建模方式也有缺点,就是用标准SQL很难对递归结构进行操作。

    与这种递归结构的父子表不同,桥接表采用不同的建模方式也可以表示这种层级结构。桥接表是建立在维度表和事实表中间的一个具有较多冗余信息的表,其中的记录包含层级结构中节点到其下面每个节点的路径。表结构如下所示:

    • 父关键字
    • 子关键字
    • 父层数
    • 层名
    • 底端标识
    • 顶端标识

    在桥接表中,节点与其下面的任意一个节点都建立一个关联记录保存在表中,即父子关系不再局限在相邻层,如第一层与第三层同样有父子关系,通过父层数可以区分相隔了几层。这样,可以通过父层数和父子关系来进行层级结构的查询。

    当然,桥接表也不是一个完备的解决方案,它只能是在某些情况下是查询变得容易。


    20. How does late arriving data affect dimensions and facts? Share techniques for handling each.

    迟到的数据对事实表和维度表有什么影响?怎样来处理这个问题?

    答:迟到的数据分为两种,一种是迟到的事实表数据,另一种是迟到的维度表数据。

    对于迟到的事实记录,我们可以插入到相应的事实表中。在插入的同时,还需要做一些处理。首先,对于具有SCD TYPE 2型维度的事实记录需要在插入前判断该事实记录的发生日期到目前为止,维度记录是否发生过变化,如果有变化,该事实记录需要对应到事实发生时的维度记录上。其次,在事实记录插入完成后,与该事实表相关的聚集事实表和合并事实表需要做相应的处理。

    对于迟到的维度记录,我们需要做的处理要复杂一些。首先,如果迟到的维度记录是第一次进入数据仓库中,那么需要在维度表中生成一条维度记录,并将与该维度记录对应的事实记录的外键进行更新。其次,如果迟到的维度记录是对原维度进行的修改,那么我们在维度表中生成一条新记录的同时,还需要找到维度本次变化到下次变化间的事实行,并将其维度外键更新为新加维度的代理关键字。


    21. Describe the different types of ETL metadata and provide examples of each.

    举例说明各种ETL过程中的元数据。

    答:元数据是ETL项目组面对的一个非常重要的主题,对于整个数据仓库项目也是非常重要的一部分。对于元数据的分类和使用没有很确定的定义。

    通常来说,我们可以把元数据分为三类,分别为业务元数据(Business Metadata),技术元数据(Technical Metadata)和过程处理元数据(Process Execution Metadata)。

    业务元数据,是从业务的角度对数据的描述。通常是用来给报表工具和前端用户对数据进行分析和使用提供帮助。

    技术元数据,是从技术的角度对数据的描述。通常包括数据的一些属性,如数据类型、长度、或者数据概况分析后一些结果。

    过程处理元数据,是ETL处理过程中的一些统计数据,通常包括有多少条记录被加载,多少条记录被拒绝接受等数据


    22. Share acceptable mechanisms for capturing operational metadata.

    简述获取操作型元数据的方法。

    答:操作型元数据(Operational Metadata),也就是过程处理元数据,记录的是ETL过程中数据迁移情况,如上次迁移日期,加载的记录数等信息。这部分元数据在ETL加载失败时会非常重要。

    一般来说,对于使用ETL工具的数据加载,像迁移调度时间、迁移调度顺序,失败处理等内容都可以在由在迁移工具中定义生成。像上次迁移日期等数据可以建表保存。

    如果是手工编写ETL程序的话,操作型元数据的处理会麻烦一些,需要自己来获取和存储。获取的方式,不同的编程方式会不尽相同。


    23. Offer techniques for sharing business and technical metadata. Optimization/Operations

    简述共享业务元数据和技术元数据的方法。

    答:为了能共享各种元数据,在数据仓库的构建过程中必须要有一些元数据标准,并在实际开发中遵守这些标准。这些标准包括元数据命名规则、存储规则及共享规则等内容。有关元数据标准的内容可以参看公共仓库元模型(Common Warehouse Metamodel,CWM)的相关资料 。

    在最基本的层面上,企业应该在下面三个方面制定好标准。

    1.命名规则

    命名规则应该在ETL组开始编码前制定好,范围包括表、列、约束、索引等等数据库对象以及其他一些编码规则。如果企业有自己的命名规则,ETL组应该遵守企业的命名规则。当企业的命名规则不能完全满足需求时,ETL组可以制定补充规则或者新的规则。对企业命名规则的改变需要有详细的文档记录,并提交企业相关部门审核。

    2.架构

    在ETL组开始工作前,架构应该先被设计好。例如ETL引擎是和数据仓库放在同一台服务器上还是单独设立服务器;数据准备区是建立成临时的还是持久的;数据仓库是基于维度建模的还是3NF建模的。并且这些内容应该有详细的文档记录。

    3.基础结构

    系统的基础结构也应该先确定好。例如解决方案是基于Windows的还是基于UNIX的。这些企业基础结构元数据应该在ETL组开始工作前制定好。这些内容也应该有详细的文档记录。

    在ETL的开发中,制定好元数据标准并能很好的遵守,那么建立好的数据仓库的元数据就可以很好的完成共享功能。


    24. State the primary types of tables found in a data warehouse and the order which they must be loaded to enforce referential integrity.

    简述数据仓库中的表的基本类型,以及为了保证引用完整性该以什么样的顺序对它们进行加载。

    答:数据仓库中的表的基本类型有维度表、事实表、子维度表、桥接表等几类。其中子维度表即雪花模型由支架维度技术处理,桥接表用来处理多值维度或层级结构。

    数据仓库中需要加载的各类表之间有相互依赖的关系,所以加载时需要以一定的顺序进行加载。下面是一些加载的基本原则:

    1. 子维度表加载成功后,再加载维度表。
    2. 维度表加载成功后,再加载桥接表。
    3. 子维度表、维度表和桥接表都加载成功后,再加载事实表。

    这个加载顺序可以通过主外键的关系来确定。(注意,此回答为总线架构的数据仓库的表的加载顺序。)


    25. What are the characteristics of the four levels of the ETL support model?

    简述ETL技术支持工作的四个级别的特点。

    答:数据仓库上线后,ETL组需要为保证ETL工作的正常运行提供技术支持。通常这种技术支持工作分为四个级别。

    1.第一级别的技术支持通常是电话支持人员,属于技术支持服务窗口(Help Desk)类型。如果数据迁移出现错误或者用户发现数据有问题,问题通过电话反映到第一级别的技术支持处。第一级别支持人员通过ETL项目组提供的一些问题的解决办法尽可能的解决发现的问题,阻止问题升级。

    2.第二级别的技术支持通常是系统管理员和DBA。如果第一级别不能解决问题,问题反映到第二级别。第二级别的人员通常技术上比较强,硬件基础结构和软件架构上的问题都可以解决。

    3.第三级别的技术支持通常是ETL项目负责人。如果第二级别不能解决问题,问题反映到第三级别。ETL项目负责人应该具备足够的知识,能够解决生产环境中的绝大部分问题。ETL项目负责人在必要时可以和开发人员或者外部产品提供商对某些问题进行交流,以便找出解决问题的办法。

    4.第四级别的技术支持通常是ETL的实际开发人员。如果第三级别不能解决问题,问题反映到第四级别。ETL的实际开发人员可以对代码进行跟踪分析并找到问题的解决办法。如果问题出现在产品供应商的应用中,还需要供应商提供技术支持。

    在小一些的数据仓库环境中,也是通常的情况下,第三级别和第四级别可以合并在一起。合并后对第二级别的要求会高一些。不建议每次出现问题都找ETL的开发人员。第一级别的技术支持人员不应该仅仅提供电话支持服务,在将问题反映给下一个级别前,要尽自己的能力去解决问题。


    26. What steps do you take to determine the bottleneck of a slow running ETL process?

    如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。

    答:ETL系统遇到性能问题,运行很慢是一件较常见的事情,这时要做的是逐步找到系统的瓶颈在哪里。

    首先要确定是由CPU、内存、I/O和网络等产生的瓶颈,还是由ETL处理过程产生的瓶颈。

    如果环境没有瓶颈,那么需要分析ETL的代码。这时,我们可以采用排除的方法,需要隔离不同的操作,并分别对它们进行测试。如果是采用纯手工编码方式的ETL处理,隔离不同的操作要麻烦一些,这时需要根据编码的实际情况来处理。如果是采用ETL工具的话,目前的ETL工具应该都有隔离不同处理的功能,隔离起来相对容易一些。

    分析最好从抽取操作开始,然后依次分析各种计算、查找表、聚集、过滤等转换环节的处理操作,最后分析加载操作。

    实际的处理中,可以按照下面的七个步骤来查找瓶颈。

    1.隔离并执行抽取查询语句。

    先将抽取部分隔离出来,去掉转换和交付,可以将数据直接抽取到文件中。如果这一步效率很差,基本确定是抽取SQL的问题。从经验来看,未经调优的SQL是一个最常见的导致ETL效率差的原因。如果这步没有问题进入第二步。

    2.去掉过滤条件。

    这一条是针对全抽取,然后在ETL处理中进行过滤的处理方式而言。在ETL处理中做过滤处理有时会产生瓶颈。可以先将过滤去掉,如果确定为这个原因,可以考虑在抽取时进行数据过滤。

    3.排除查找表的问题。

    参照数据在ETL处理过程中通常会加载到内存中,目的是做代码和名称的查找替换,也称查找表。有时查找表的数据量过大也会产生瓶颈。可以逐个隔离查找表,来确定是否是这里出现问题。注意要将查找表的数据量降到最低,通常一个自然键一个代理键就可以,这样可以减少不必要的数据I/O。

    4.分析排序和聚集操作。

    排序和聚集操作都是非常费资源的操作。对这部分隔离,来判断是否因为它们引起性能问题。如果确定是因为这个,需要考虑是否可以将排序和聚集处理移出数据库和ETL工具,移到操作系统中来处理。

    5.隔离并分析每一个计算和转换处理。

    有时转换过程中的处理操作也会引起ETL工作的性能。逐步隔离移除它们来判断哪里出了问题。要注意观察像默认值、数据类型转换等操作。

    6.隔离更新策略。

    更新操作在数据量非常大时是性能非常差的。隔离这部分,看看是否这里出了问题。如果确定是因为大批量更新出了性能问题。应该考虑将insert、update和delete分开处理。

    7.检测加载数据的数据库I/O。

    如果前面各部分都没有问题,最后需要检测是目标数据库的性能问题。可以找个文件代替数据库,如果性能提高很多,需要仔细检测目标数据库的加载过程中的操作。例如是否关闭了所有的约束,关闭了所有的索引,是否使用了批量加载工具。如果性能还没有提高,可以考虑使用并行加载策略。


    27. Describe how to estimate the load time of a large ETL job.

    Real Time ETL

    简述如何评估大型ETL数据加载时间。

    答:评估一个大型的ETL的数据加载时间是一件很复杂的事情。数据加载分为两类,一类是初次加载,另一类是增量加载。

    在数据仓库正式投入使用时,需要进行一次初次加载,而这次初次加载需要的时间一般较难预料。在数据仓库的日常使用和维护中,每天需要对数据仓库进行增量加载。增量加载的数据量要比初次加载小很多。

    下面以初次加载为例来谈谈如何评估大型ETL的数据加载时间。

    对初次加载的加载时间进行预估,需要将整个ETL过程分成抽取、转换和加载三部分,分别对这三部分进行评估。

    1.对抽取时间的评估。

    抽取通常占用的ETL的大部分时间,而且对这部分需要时间的评估也是非常困难的。为了对这部分时间进行评估,我们可以将查询时间分成两部分,一部分是查询响应时间,另一部分是数据返回时间。查询响应时间指从查询开始执行到结果开始返回这段时间。数据返回时间指第一条记录返回到最后一条记录返回的时间。

    另外,初次加载的数据量太大,我们可以考虑选择其中的一部分来评估整体的时间,实际处理中,可以选择事实表的一个分区。一般来说各个分区的数据量差不多,评估出一个分区的时间,乘上分区数可以作为整体的评估时间。

    2.对数据转换时间的评估

    数据转换工作通常在内存中完成,一般来说都有着非常快的速度,占总体时间的比重比较小。如果要评估这部分需要的时间的话,最简单的评估方法是先评估出抽取时间和加载时间,然后运行整个过程,用整体时间减去抽取时间和加载时间。

    3.对加载时间的评估

    很多原因都可能影响加载时间,其中最重要的两个分别是索引和日志。

    对加载时间的评估,也可以像评估抽取时间时一样,选择加载数据的一部分,如1/200进行加载,计算出时间后乘以200来作为整体加载时间。

    总之,大型ETL数据的加载时间的评估是很困难的,我们采用的方法主要是类比评估,即选择一部分数据减少整体时间进行评估。在进行评估时要注意到测试环境和生产环境的配置等的差别会引起评估结果的偏差。虽然这种对时间的评估一定会有误差,但是可以做为整体加载时间的一个参考。


    28. Describe the architecture options for implementing real-time ETL.

    简述在架构实时ETL时的可以选择的架构部件。

    答:在建立数据仓库时,ETL通常都采用批处理的方式,一般来说是每天的夜间进行跑批。

    随着数据仓库技术的逐步成熟,企业对数据仓库的时间延迟有了更高的要求,也就出现了目前常说的实时ETL(Real-Time ETL)。实时ETL是数据仓库领域里比较新的一部分内容。

    在构建实时ETL架构的数据仓库时,有几种技术可供选择。

    1.微批处理(microbatch ETL,MB-ETL)

    微批处理的方式和我们通常的ETL处理方式很相似,但是处理的时间间隔要短,例如间隔一个小时处理一次。

    2.企业应用集成(Enterprise Application Integration,EAI)

    EAI也称为功能整合,通常由中间件来完成数据的交互。而通常的ETL称为数据整合。

    对实时性要求非常高的系统,可以考虑使用EAI作为ETL的一个工具,可以提供快捷的数据交互。不过在数据量大时采用EAI工具效率比较差,而且实现起来相对复杂

    3.CTF(Capture, Transform and Flow)

    CTF是一类比较新的数据整合工具。它采用的是直接的数据库对数据库的连接方式,可以提供秒级的数据。CTF的缺点是只能进行轻量级的数据整合。通常的处理方式是建立数据准备区,采用CTF工具在源数据库和数据准备区的数据库之间相连接。数据进入数据准备区后再经过其他处理后迁移入数据仓库。

    4.EII(Enterprise Information Integration)

    EII是另一类比较新的数据整合软件,可以给企业提供实时报表。EII的处理方式和CTF很相似,但是它不将数据迁移入数据准备区或者数据仓库,而是在抽取转换后直接加载到报表中。

    在实际建立实时ETL架构的数据仓库时,可以在MB-ETL, EAI, CTF, EII及通常的ETL中作出选择或者进行组合。


    29. Explain the different real-time approaches and how they can be applied in different business scenarios.

    简述几种不同的实时ETL实现方法以及它们的适用范围。

    答:实时数据仓库在目前来说还不是很成熟,成功案例也比较少,下面列举了一些实时数据仓库架构的实现方法。

    1.EII ONLY

    使用EII技术来代替实时的数据仓库,数据延迟可以保证在1分钟左右,支持数据整合的复杂程度较低。无法保存历史数据。

    2.EII + Static DW

    使用EII技术联合非实时的数据仓库,数据延迟可以保证在1分钟左右,1天内的数据整合的复杂程度较低,1天前的数据整合的复杂程度可以较高。可以保存历史数据。

    3.ETL + Static DW

    普通的ETL处理,数据延迟在1天。支持复杂程度较高的数据整合。保存历史数据。

    4.CTF + Real-Time Partition + Static DW

    使用CTF技术建立实时数据仓库,数据延迟可保证在15分钟左右。数据整合的复杂程度较低。保存历史数据。

    5.CTF + MB-ETL + Real-Time Partition + Static DW

    使用CTF技术和MB-ETL联合处理数据迁移,数据延迟可保证在1小时左右,支持数据整合的复杂程度较高,保存历史数据。

    6.MB-ETL + Real-Time Partition + Static DW

    直接使用MB-ETL建立实时数据仓库,数据延迟可保证在1小时左右,支持数据整合的复杂程度较高,保存历史数据。

    7.EAI + Real-Time Partition + Static DW

    使用EAI技术建立实时数据仓库,数据延迟可保证在1分钟左右,支持数据整合的复杂程度较高。保存历史数据。


    30. Outline some challenges faced by real-time ETL and describe how to overcome them.

    简述实时ETL的一些难点及其解决办法。

    答:实时ETL的引入给数据仓库的建设带来了很多新的问题和挑战,下面列举了一些问题,其中有些问题有具体的解决办法,有些只能在实际情况下去斟酌。

    1.连续的ETL处理对系统可靠性提出更高的要求。

    2.离散快照数据的间隔时间变短。

    3.缓慢变化维变成快速变化维。

    4.如何确定数据仓库中数据的刷新频率。

    5.目的是只出报表还是要实现数据整合。

    6.做数据整合还是应用整合。

    7.采用点对点的方式还是集中的方式。

     

    原文地址:

    http://www.cnblogs.com/xqzt/p/4472111.html

     

    全表扫描
    [Quán biǎo sǎomiáo]
    Full table scan
     

    转载于:https://www.cnblogs.com/shujuxiong/p/10335210.html

    展开全文
  • 面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助阅读博客之后,都需要通过以下自测题来巩固课程中所学习到的基本知识点。...

    开篇介绍

    本自测与 面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助阅读博客之后,都需要通过以下自测题来巩固课程中所学习到的基本知识点。具体相关学习方法与面试准备可以参考 微软BI SSIS 2012 ETL 控件与案例精讲课程学习方式与面试准备详解 一文。

    自测与面试 200 问

    此自测题也可以作为面试题来准备,虽然对于 ETL 控件的面试大多不会考察到这么细的粒度,但是仍然可以作为面试官考察 BI 开发者对基础知识点的掌握的熟练程度与深度。在 SSIS 中,一个基本的配置改变,对数据的走向与控制可能就会有天壤之别,所以这些基础的技能点还是值得大家在学习 SSIS ETL 控件的过程中好好总结的。

    自测题分类

    • 文件操作类(自测题 1 - 62 )
    • 控制流控件类(自测题 63 - 133)
    • 数据流控件类(自测题 134 - 202)
    1. 什么是控制流,什么是数据流,控制流和数据流之间的关系是什么?
    2. Connection Manager 连接管理器的作用是什么?不同的数据流组件可以使用同一个 Connection Manager 对象吗?
    3. 在 OLE DB Source 中什么是 External Column? 什么是 Output Column ?
    4. 请描述一下 Flat File Connection Manager 连接管理器 和 Flat File Destination 组件的关系。
    5. 在 Flat File Connection Manager 连接管理器中 Text Qualifier 的作用是什么?在什么时候需要被用到?
    6. 在 Flat File Connection Manager 连接管理器中 Row Delimiter 和 Column Delimiter 的作用分别是什么?
    7. 描述一下比较常用的 Column Delimiter 有哪些?至少四种。
    8. 在 SSIS 2012 中,有那四种文件格式类型?例如 Delimited 是第一种。
    9. 请举例说明 Delimited 文件格式的使用场景,所针对的文件格式是什么样子的?
    10. 请举例说明 Fixed width 文件格式的使用场景,所针对的文件格式是什么样子的?
    11. 请举例说明 Fixed width with row delimiters 文件格式的使用场景,所针对的文件格式是什么样子的?
    12. 请举例说明 Ragged right 文件格式的使用场景,所针对的文件格式是什么样子的?
    13. 请描述 Fixed width with row delimiters 与  Ragged right 的区别和联系。
    14. 在这四种文件格式中,哪一种是针对不换行的定长文件格式的,Delimited,Fixed width,Fixed width with row delimiters,Ragged right?
    15. 请描述如何使用数据流组件中 Flat File Source 组件的用法。
    16. 请描述数据流组件中 OLE DB Destination 组件的用法。
    17. 对于源文件中有列标题和没有列标题的文件分别应该在 Flat File Connection Manager 中设置什么?
    18. 请描述控制流组件中 Execute SQL Task 组件的基本用法,使用目的?
    19. 如果源端使用使用变量类型的 SQL 语句,它的 Output Column 顺序会发生改变,如何解决这个问题?
    20. 如果在源文件中有空值,如何让它在输出到目标表的时候使用目标表列种的默认值 Default Value ?
    21. 如果在源文件中有空值,如何让它在输出到目标表的时候显示为 NULL ?
    22. 如果在源文件中有空值,如何让它在输出到目标表的时候显示空白字符串 ?
    23. 请举例说明在 Flat File Source 中 'Retain null values from the source as null values in the data flow' 的用法?
    24. 请描述在 OLE DB Destination 的两种不同的 Data Access mode 'Table or View' 和 'Table or View - Fast Load ' 对于源文件空值处理的影响?
    25. 请描述在 OLE DB Destination 的 'Table or View - Fast Load' 模式下 Keep Nulls 配置的作用?
    26. 请总结在 OLE DB Destination 中 Access Mode 中的各种配置对源文件中 NULL 值的影响?
    27. 描述在 OLE DB Destination 中的 Data Access Mode 'Table or view' 和 'Table or view - fast load' 的区别?
    28. 描述在 OLE DB Destination 中 Table or view - fast load 中 Keep Identity,Table Lock,Check Constraints 的大概作用?
    29. 在数据流中,可以通过什么方式查看在数据流执行过程中的数据?
    30. 如何输出不规则的平面文件,即此目标文件包含有多个 Section,每个 Section 的格式各不相同,请描述一下思路?
    31. 在 Flat File Destination 组件中,'Overwrite data in the file' 选项的作用是什么,可以在什么场景下使用的到?
    32. 描述在数据流源端中,比如 Flat File Source 组件,它的 Error Output 选项中包含了哪些基本的信息?
    33. 请描述在数据流源端中,比如 Flat File Source 组件它的 Error Output 中 Error 和 Truncation 的区别是什么?它们有哪几种配置类型?
    34. 请分别解释在源端的 Error Output 中,Fail Component, Ignore failure, Redirect row 的作用分别是什么?
    35. 当在源端的 Error Output 的 Error 选项中选择了 Ignore failure,当目标表对数据有严格的验证时,源文件中出现转换错误,包执行后出现什么情况?
    36. 当在源端的 Error Output 的 Error 选项中选择了 Ignore failure,当目标表对数据有严格的验证时,源文件中出现转换错误,且目标表的 Error Output 也选择了 Ignore failure,包执行后会出现什么情况?
    37. 当在源端的 Error Output Truncation 选择了 Ignore failure,当目标表对数据有严格的验证时,源文件中出现超长的字符,包执行后出现什么情况?
    38. 当在源端的 Error Output Truncation 选择了 Ignore failure,当目标表对数据有严格的验证时且目标表的 Error Output 也选择了 Ignore failure,源文件中出现超长的字符时,包执行后会出现什么情况?
    39. 当包执行失败的时候,可以在什么位置查看到包执行的整个流程,以及报错的信息?
    40. 对于源端的 Error Output 重定向 Redirect Row 的输出是什么内容,包含了哪些信息?
    41. 对于目标端的 Error Output 重定向 Redirect Row 的输出是什么内容,包含了哪些信息?
    42. 如果需要获取类似于错误行所有 Column 的数据,以及 Error Code 以及 Error Column 编号应该是在源端还是目标端的 Error Output 进行配置?
    43. 如果需要获取所有完整的正行的错误行数据到错误文件或错误表留给以后手工检查,应该是在源端还是目标端的 Error Output 进行配置?
    44. SSIS 2012 ETL 中有没有 XML Destination 控件吗?
    45. 如何在数据流中将数据输出到 XML 文件? 需要使用到哪些基本的控件,在 SQL 查询的时候应该要注意什么?
    46. 如何在控制流中奖数据输出到 XML 文件?
    47. 在使用平面文件构建 XML 文件输出的时候,对输出数据的类型有什么样的特别要求? 为什么要使用平面文件 Flat File 而不使用 Raw File ?
    48. 在 Execute SQL Task 中,什么时候会使用 Result Set 为 XML 的配置? 如何将 Result Set 为 XML 的返回值赋值给包中的变量?
    49. 在 Script Task 中,支持那两种编程 Script?
    50. 在 Script Task 中,如何访问包中的变量并取值?
    51. 如何在 Script Task 中将字符串输出到一个文件,会使用到 C# 的那些知识,需要引入什么命名空间?
    52. 什么是 XSD?
    53. 在使用 XML Source 时,当只有 XML 文件,但没有 XSD 文档的时候应该如何解决 ?
    54. 什么是 CSV 文件,它的全称是什么?
    55. 在 SSIS 2012 ETL 中并没有 CSV Source 和 CSV Destination,应该分别使用那种数据流控件来表示 CSV 的 Source 和 Destination?
    56. 在数据流中 Derived Column 的作用是什么? 表达式中可以实现哪些基本的操作?
    57. 在构建 CSV 输出的时候,使用 Flat File Destination 组件时应该选用哪种文件格式?
    58. SSIS 2012 ETL 中默认支持到 Excel 的最高版本是哪一个版本?
    59. 在处理 2013 版本的 Excel 的时候通常需要安装什么样的驱动?
    60. 对 Excel 2013版本支持的驱动通常情况下是需要在 64位模式下还是32位模式下运行包?
    61. 描述一下如何将表中的数据输出到同一个 Excel 文件的不同的 Sheet 页中,实现的思路和过程是什么?
    62. 如何将一个 Excel 文件的不同 Sheet 页的数据加载到同一个表或者不同表的实现思路和过程是什么?
    63. 描述一下 Execute SQL Task 的作用,在 ETL 开发过程中哪些情况下会使用到 Execute SQL Task?
    64. 在 Execute SQL Task 中的 Parameter Mapping 中 Direction 有哪几种类型?
    65. 如何配置 Execute SQL Task 的参数,在 Parameter Mapping 中 Parameter Name 的作用是什么?
    66. 在 Execute SQL Task 中调用带有 Output 参数的存储过程,在配置 Parameter Mapping 中,应该为此 Output 参数配置哪一种 Direction?
    67. 在 Execute SQL Task 中如何获取带有返回值的 Return Value 的存储过程?
    68. 如果要记录一个包的开始启动时间,执行结束时间已经包执行的唯一ID,以及包最终执行状态,应该使用到哪些系统变量,并如何实现这个基本的 Log记录?
    69. 在 Execute SQL Task 中 Result Set 有哪四种类型,举例说明每一种类型的 Result Set 的使用场景?
    70. 如何在变量中保存 Execute SQL Task 返回的 Full Result Set,应该使用哪一种变量类型来保存?
    71. 如何遍历访问 Execute SQL Task 中返回的 Full Result Set,有那两种基本的实现方式?
    72. 在哪些情况下会使用到父子包 Parent Package and Child Package,使用父子包设计的好处 ?
    73. 如果需要将 Parent Package 的参数传入 Child Package 需要打开 Package 的哪个配置选项?
    74. 在 SSIS ETL 2012 中对于 Package Configuration 第一次打开和第二次打开的位置有什么变化?
    75. 在 Package Configuration Wizard 中, Configuration Type 配置有那几种类型,配置父子包的时候应该选择哪一种?
    76. 如何将 Parent Package 中的值传入到 Child Package 包中的变量?
    77. 如何在 Parent Package 调用 Child Package,在控制流中使用到哪一个控件?
    78. 给包变量赋值有哪三个阶段?
    79. 如何在包运行之前给包中的变量赋值?
    80. 可以通过哪些控制流控件调用结束后通过返回值给一个变量赋值?
    81. 如何在包运行的过程中给一个变量赋值,可以使用到哪些控制流控件?
    82. 在控制流中 File System Task 可以对文件做哪些基本的操作?
    83. 在 Script Task 中如何获取指定目录下的所有文件名称,或者指定文件后缀类型的文件名称?
    84. 在 SSIS 2012 ETL 中,XML Task 有那六大操作类型 Operation Type ,这六种类型各自的作用分别是什么 ?
    85. XML Task 中,如何使用 Validate 操作来验证一个 XML 文件?
    86. XML Task 中,如何使用 XML 样式表对 XML 文件进行格式转换,XLST 文件的作用是什么?
    87. XML Task 中,如何使用 XPATH 查找和抽取 XML 文件中的内容,比如如何返回一个节点,或者节点集合,值等?
    88. XML Task 中,如何使用 Merge 操作来合并两个 XML 文件中的内容到第三个新的文件,或者将 XML 文件内容插入到另外一个 XML 文件指定的位置?
    89. XML Task 中,使用 Diff 操作比较两个 XML 文件,可以输出哪些内容? 这些内容分别描述的是什么?
    90. XML Task 中,使用 Patch 操作时一般需要哪几种 XML 文件来参与? 这几种 XML 文件的内容分别应该是什么?
    91. 请描述使用 Send Mail Task 的场景?
    92. 在使用 Send Mail Task 的时候有哪些限制,局限性?
    93. 在使用 Send Mail Task 需要建立哪种类型的连接?
    94. 使用 Send Mail Task 是否可以发送带附件的邮件类型?
    95. SSIS 中 Event Handler 的作用是什么? OnError 事件有什么样的作用,我们可以利用 OnError 处理哪些问题?
    96. 什么是变量的 Scope? 控制流控件中 Scope 下的变量和 OnError Scope 下的变量有哪些差别?
    97. 如果要访问非域中的非Windows 验证下的 SMTP 服务器并发送邮件,在 SSIS 2012 ETL 中我们还可以使用什么样的方式?
    98. 在控制流 Script Task 中,默认引用的命名空间中是否包含了对 Windows.Forms 的引用?
    99. 在控制流 Script Task 中,它的 Entry Point 是什么? 这个方法的作用是什么?
    100. 在控制流 Script Task 中,ReadOnlyVariables 和 ReadWriteVariables 分别是表示什么意思?
    101. 如何调试 Script Task 中的脚本,有哪两种基本的方式,调试的过程是什么?
    102. 在 SSIS 2012 ETL 中,Script Task 有哪一种 Bug 从 2008、2008R2 版本到 2012 版本一直都存在,这个 Bug 是什么?
    103. 在 SSIS 2012 ETL 项目中,对于参数的验证一般有哪些,为什么需要这些验证,所起到的作用是什么?
    104. 在你的项目中,对文件类的验证一般都有哪些,分别是什么,请描述一下验证的过程?
    105. 描述 SSIS 2012 ETL 控制流的 Execute Process Task 的作用,我们可以使用它来做哪些操作?
    106. 如何使用 Execute Process Task 来实现压缩和解压缩操作?
    107. For Loop Container 的作用是什么?它类似于编程语言中的哪一种语法,有哪三个基本的配置?
    108. 可以在 For Loop Container 中循环时间吗?如何实现?
    109. Foreach Loop Container 最常见的使用场景是什么? 如何使用 Foreach Loop Container 来循环和遍历在指定目录下同类型的文件?
    110. 描述一下你所知道的 Foreach Loop Container 中的迭代器 Enumerator,大概有哪几种?
    111. 在 Foreach Loop Container 中,Foreach File Enumerator 主要在什么时候使用?
    112. 在 Foreach Loop Container 中,Foreach ADO Enumerator 主要在什么时候使用? 它对循环的变量在类型上有什么特别要求?
    113. 在 Foreach Loop Container 中,Foreach From Variable Enumerator 主要在什么时候使用?对循环的变量在类型上有什么要求,请举例说明使用的场景?
    114. 在 Foreach Loop Container 中,使用 Foreach ADO.NET Schema Rowset Enumerator 可以解决什么样的问题? 请举例说明。
    115. Precedence Constraint 优先约束是什么? 它是在控制流中还是数据流中使用?它的作用是什么?
    116. Precedence Constraint 优先约束中约束有哪两种选项,作用分别是什么?
    117. Precedence Constraint 中,Constraint 约束有哪几种值,作用分别是什么?
    118. Precedence Constraint 中,Expression 表达式约束是如何使用的?
    119. Precedence Constraint 中,请描述一下在多约束的情况下,Logical AND 和 Logical OR 是如何使用的?
    120. 使用 SQL Profilling Task 数据探测的作用是什么? 可以帮助我们了解到什么样的信息?
    121. 使用 SQL Profilling Task 对数据源连接有什么样的限制?
    122. 使用 SQL Profilling Task,对于数据探测的结果通常是以什么形式来保存的?
    123. 对于 SQL Profilling Task 的输出结果,应该使用 SQL Server 2012 中的哪种工具来进行查看?
    124. SQL Profilling Task 中,Null Ratio Profile (NULL 比例统计) 的作用是什么,可以通过它检测到哪些信息?
    125. SQL Profilling Task 中,Column Length Distribution Profiles (列长度分布统计数据) 的作用是什么,它包含哪些基本信息?
    126. SQL Profilling Task 中,Statistics Profiles (列统计信息) 的作用是什么,它包含哪些基本信息?
    127. SQL Profilling Task 中,Value Distribution (列值分布统计) 的作用是什么,它包含哪些基本信息?
    128. SQL Profilling Task 中,Pattern Profiles (列模式,正则表达式分配统计) 的作用是什么,它包含哪些基本信息?
    129. SQL Profilling Task 中,Candidate Key Profile (候选主键探查) 的作用是什么,它包含哪些基本信息?
    130. SQL Profilling Task 中,Functional Dependency Strength Profile (函数依赖关系统计) 的作用是什么,它包含哪些基本信息?
    131. SQL Profilling Task 中,Value Inclusion Profile (值包含统计) 的作用是什么,它包含哪些基本信息?
    132. 在使用 Bulk Insert 控件时,是否可以对长度类型进行控制,包括类型转换?
    133. 在分别使用 Bulk Insert 控件,SSIS Data Flow Fast Load,SQL Bulk Insert 语句插入数据的效率表现是怎么样的?
    134. 请描述一下 Conditional Split 的使用方法和使用场景? 它可以写表达式吗? 它可以访问到上游数据的列,变量,以及使用函数吗?
    135. 请描述一下 Data Conversion 与 Derived Column 的使用方法,以及它们之间的区别是什么?
    136. 请描述一下 Multicast 多播的使用方法和使用场景? 请举例说明。
    137. 请描述一下 Aggregate 聚合控制的使用方法,为什么我们要尽量避免在数据流 Data Flow 中使用 Aggregate 控件,在什么情况下可能避免不了要使用它?
    138. 你是如何理解 Synchronous 同步,Asynchronous 异步,Blocking 阻塞这几个概念的?
    139. 请描述一下 Lookup 控件的基本使用方式,它可以解决什么问题?
    140. 在 Lookup 中什么是输入源,引用数据集,缓存的数据是哪一部分的数据?
    141. Lookup 有那两种连接方式,分别是什么?
    142. Lookup 中 OLE DB Connection 连接模式下有哪几种缓存模式?分别是什么?
    143. Lookup 中字符串对比的时候,在默认 Full Cache 条件下会出现 CASE SENSITIVE 的问题,如何设计或者配置能让字符串比较不区分大小写?
    144. Lookup 中 OLE DB Connection 连接模式下 Full Cache 完全缓存模式下数据完全缓存在什么地方,它的缓存过程是什么?
    145. Lookup 中 OLE DB Connection 连接模式下 Partial Cache 部分缓存中的匹配缓存区和不匹配缓存区分别指什么?
    146. Lookup 中 OLE DB Connection 连接模式下 No Cache 的工作机制是什么?
    147. 什么是运行时缓存,Cache Transform 缓存转换控件中运行时缓存是如何实现的,请描述使用的过程?
    148. 什么是文件缓存,Cache Transform 缓存转换控件中的文件缓存是如何实现的,情描述使用的过程?
    149. Cache Transform 中的运行时缓存和文件缓存在使用的时候有什么区别,对同包和不同的包调用缓存时有什么样的使用要求?
    150. 请描述 Merge 合并转换控件的使用方式,它对输入的数据源有什么要求与限制?
    151. 尽管在 OLE DB Source 查询时使用了排序的 SQL 语句,但是仍然在关联到 Merge 控件的时候出现错误,通常是什么原因,应该如何解决?
    152. 请描述 Sort 排序转换控件的使用方式,如何理解它的 Asynchronous 异步和 Blocking 阻塞特性?
    153. Merge Join 转换控件的特点是什么?它有哪几种 Join 的方式,如何使用?请描述各种 Join 方式的使用过程。
    154. Union All 转换控件的使用和 Merge,Merge Join 转换控件的使用有什么不同? 它们三者直接的异同点是什么?
    155. 如果需要在数据流 Data Flow 中记录从源插入的目标的条数,可以有什么样的实现方法?
    156. 请描述一下 Row Count 转换控件的使用,如何记录数据流 Data Flow 中条数并赋值给一个变量,且插入到日志中?
    157. 如何在 SQL 以及 SSIS 中实现 PIVOT 操作?
    158. 在 SSIS 2012 ETL 中,PIVOT 转换控件中的 Pivot Key, Set Key, Pivot Value 分别是指什么?
    159. 在 SSIS 2012 ETL 中,如何通过 PIVOT 控件自动生成转换的列 Pivoted Output Columns?需要通过什么样的设置?
    160. 如何在 SQL 以及 SSIS 中实现 UNPIVOT 操作? 在使用 UNPIVOT 的过程中,能不能从聚合数据还原到 PIVOT 之前的细节数据?
    161. 在 SSIS 2012 ETL 中,UNPIVOT 转换控件中的 Input Column, Destination Column 以及 Pivot Key value column name 分别指的是什么?
    162. 在数据流 Data Flow 中,Script Component 大概能够使用到的场景有哪些? 它有哪几种转换类型?
    163. 在数据流 Data Flow 中,Script Component与控制流 Control Flow 中的 Script Task 有哪些不同?
    164. 请分别说明 Script Component 中默认的类型下 PreExecute(), PostExecute(), InputXXX_ProcessInputRow() 方法各自的作用是什么?
    165. Script Component 中 InputXXX_ProcessInputRow(Input0Buffer Row) 参数 Row 的生命周期是什么,它表示什么?
    166. 如何使用 Script Component 来实现数据流 Data Flow 中从源到目标的行计数?
    167. 如何使用 Script Component(Source 类型)来访问并遍历一个平面文件的每一行?
    168. 如何在 Script Component (Source 类型)创建一个或者多个 Output 输出?
    169. 描述一下在 Script Component (Source 类型) 中的 Script 中创建输出流的过程,即 CreateNewOutputRows() 方法的使用。
    170. 如何在 Script Component (Source 类型)中的 Script 访问输出 Buffer,如何添加一个新的 Output 行往下输出?
    171. 什么是 Script Component 同步 Transformation?应该如何设置?
    172. Script Component (Transformation 类型) 中的 Output 中 SynchronousInputID 的作用是什么? 如果值是 None 或者 0 表示是什么意思?
    173. Script Component (Transformation 类型) 中的 InputXXX_ProcessInputRow(Input0Buffer Row) 方法中,Row 包含了那两部分的内容?
    174. 在数据流 Data Flow 转换组件中,如何判断这个转换组件是一个同步 Synchronous 的还是一个异步 Asynchronous 转换组件?有哪些基本的判断方法?
    175. 如果需要将 Script Component (Transformation 类型) 由同步 Synchronous 变为异步 Asynchronous 需要做哪些设置?
    176. 在 Script Component (Transformation - 类型 - 异步) 中,如果有多个输出,同步转换和异步转换是否可以共存?
    177. 在 Script Component (Transformation - 类型 - 异步) 中,InputXXX_ProcessInput() 方法和 InputXXX_ProcessInputRow() 方法的区别是什么?
    178. 在 Script Component (Transformation - 类型 - 异步) 中,InputXXX_ProcessInput(Input0Buffer Buffer) 方法中的 Buffer 参数应该如何理解? 它包含的数据应该是什么?
    179. 为什么说 Script Component (Transformation - 同步) 是一个 Non-Blocking 无阻塞转换,而(Transformation - 异步)是一个 Semi-Blocking 半阻塞转换?
    180. 如果我们在 Script Component 中脚本中同时看到这两个方法 InputXXX_ProcessInput() 和 InputXXX_ProcessInputRow(),我们对 Script Component 的配置可能采取哪些方式? 它们要表达的转换形式可能是什么?
    181. 描述一下在你所经历过的项目或者练习中对 Script Component(Destination - 类型) 的使用是如何进行的?
    182. 如何在 Script Component 中访问连接数据库中的数据表?需要采用 OLE DB 连接方式还是 ADO.NET 连接方式?
    183. 请描述一下在 Script Component 中访问连接数据库并向指定数据表插入数据的过程,所需要涉及到的 SQL 对象有哪些?
    184. 请大致描述一下在 Script Component 组件的四种转换操作中(Source, 同步 Transformation,异步 Transformation,Destination)通常哪一种或者哪两种转换方式效率要高一些,哪一种或者哪几种转换方式效率要低一些,请大致分析一下原因。
    185. 结合数据流中的这些组件 Data Conversion, Derived Column, Aggregate,Sort,Script Component 描述一下你是如何理解阻塞,半阻塞,完全阻塞,同步,异步这些概念的? 以及描述一下你所了解的控件哪些是属于阻塞,半阻塞,完全阻塞,同步,异步类型的?
    186. 在数据流中 OLE DB Command 组件与控制流中的 Execute SQL Task 有哪些异同点?
    187. 在数据流中 OLE DB Command 组件与 OLD DB Destination 有哪些异同点?
    188. 在 OLE DB Command 中使用普通的带参数的 SQL 语句与带参数的 Stored Procedure 有什么样的细微差别?
    189. 虽然说 OLE DB Command 是一个同步转换组件,但为什么还是要说它是一个 Performance Killer 性能杀手,它的执行特点是什么?
    190. 同步转换组件的效率是否一定要比异步转换组件的效率要高,如果不一定的话可以举出两个例子来说明。
    191. 在一些使用场景下,可以通过什么样的方式来实现替换 OLE DB Command 的使用,以达到提升效率的目标?
    192. 描述一下什么是 Slowly Changing Dimension 缓慢渐变维度,在什么场景下我们需要使用到这个概念来解决一些实际问题?
    193. 描述一下你所了解的解决缓慢渐变维度的一些设计方式和方法?
    194. 什么是 Business Key 业务主键,什么是 Surrogate Key 代理主键? 使用 Surrogate Key 可以解决什么样的问题,有什么样的好处?
    195. 在 SSIS 中可以通过哪种控件来实现 SCD,描述一下其实现的步骤,包括在 SSIS 2012 ETL 中 SCD 提到的三种 SCD Type 有哪些?
    196. 描述一下在 SSIS 2012 ETL 中的 SCD 数据流执行的过程,SCD Type 1 和 SCD Type 2 的逻辑实现过程?
    197. 除了 SSIS 2012 ETL 自带的 SCD 转换控件以外,还可以通过哪些方式来实现 SCD?
    198. 在微软 SSIS 2012 ETL 中,对于 SCD Type 2 的可以通过起始时间的设置,或者状态的设置二选一来实现标识当前维度和维护历史维度行,如何设计让这两者并存出现在维度表中?
    199. 请大致说下对于增量数据的加载有哪些实现方式? 比如对有时间戳的原始数据和没有时间戳的原始数据增量加载可以如何设计和实现?
    200. 请描述一下 Check Point 的使用场景以它的实现过程和基本的配置。
    201. 如何设计一个 ETL 来监控某指定数据库,比如数据仓库各表的大小,行数每天的变化情况? 并根据这些变化情况大致了解每天的增长量,对以后增长趋势的预测?
    202. 如何设计一个 ETL 监控或者同步指定目录下各中文件,或指定后缀文件的大小变化,及相关属性变化等信息,比如数据库文件大小变化的监控?

    可按对应课程案例名称(案例XXX)查找自测和面试题

    • 001_从数据库导出数据到平面文件  (1-7)
    • 002_平面文件输出格式的区别  (8-14)
    • 003_从平面文件导入数据到数据库之一 (15-19)
    • 004_从平面文件导入数据到数据库之二 (15-19)
    • 005_平面文件空值处理 (20-29)
    • 006_不规则的平面文件输出技巧 (30-31)
    • 007_Error Output 错误输出 (32-39)
    • 008_Error Output 错误捕获 (40-43)
    • 009_两种输出 XML 文件的方式 (44-51)
    • 010_XML 文件的加载导入 (52-53)
    • 011_CSV 文件的导入与导出 (54-57)
    • 012_EXCEL2013 文件的导入与导出 (58-62)

     控制流控件类 - 14

    • 013_Execute SQL Task 与输入输出返回值 (63-71)
    • 014_Execute Package Task 父子包与参数传递 (72-77)
    • 015_Expression Task 与变量赋值的三个阶段 (78-81)
    • 016_使用File System Task 中处理文件和目录 (82-83)
    • 017_XML Task 之文件验证与样式转换 (85-86)
    • 018_XML Task 之XPATH抽取与MERGE合并 (87-88)
    • 019_XML Task 之 Diff 与 Patch 互逆操作 (89-90)
    • 020_使用 Send Mail Task 监控包错误并发送邮件 (91-97)
    • 021_Script Task 中读写变量的操作与断点调试 (98-102)
    • 022_Script Task 中的文件参数验证 (103-104)
    • 023_使用 Execute Process Task 压缩与解压缩文件 (105-106)
    • 024_For Loop 时间与 Foreach Loop 文件加载 (107-114)
      • 关于 Foreach ADO Enumerator
      • 关于 Foreach ADO.NET Schema Rowset Enumberator
      • 关于 Foreach From Variable Enumerator
    • 025_Precedence Constraint 优先约束详解 (115-119)
    • 026_使用 SQL Profilling Task 进行数据探测 (120-131)
    • 027_BCP Bulk Insert Data Flow Bulk Insert 四种文件导入方式 (132-133)

     数据流控件类 - 22

    • 028_使用 Conditional Split 条件拆分 (134)
    • 029_Data Conversion 与 Derived Column 之比较 (135)
    • 030_使用 MultiCast 多播输出到多个目标 (136)
    • 031_使用 Aggregate 聚合输出(同步异步与阻塞) (137-138)
    • 032_初步使用 Lookup 查找转换 (139-142)
    • 033_Lookup 的 OLE DB 缓存 Full Cache  Partial Cache 和 No Cache (143-147)
    • 034_Lookup 与 Cache Transform 运行时缓存共享 (147)
    • 035_Lookup 与 Cache Transform 文件缓存共享 (148-149)
    • 036_Merge 合并与 Sort 排序(异步与阻塞) (150-152)
    • 037_Merge Join 的特点 (153)
    • 038_Union All 的使用与 Merge Merge Join 之比较 (154)
    • 039_使用 Row Count 记录从数据源写入目标表的条数  (155-156)
    • 040_在 SQL 和 SSIS 中使用 PIVOT 进行行列转换 (157-159)
    • 041_在 SQL 和 SSIS 中使用 UNPIVOT 转换操作 (160-161)
    • 042 _初步使用 Script Component 记录数据流行数 (162-166)
    • 043_使用 Script Component Source 解析不规则文件 (167-170)
    • 044_使用 Script Component 同步 Transformation 解析不规则文件 (171-174)
    • 045_使用 Script Component Transformation 异步转换不规则文件 (175-180)
    • 046_使用 Script Component Destination 和 ADO.NET 解析不规则文件(一) (181-185)
    • 046_使用 Script Component Destination 和 ADO.NET 解析不规则文件(二) (181-185)
    • 047_OLE DB Command 性能杀手 (186-191)
    • 048_数据仓库 Slowly Changing Dimension 缓慢渐变维度 (192-194)
    • 049_Slowly Changing Dimension 的实现 (195-198)
    • 案例作业及其它(199-202)
    展开全文
  • IBM ETL面试题

    千次阅读 2012-09-04 22:48:40
    1.JOIN和LOOKUP的区别? ...总的来说,面试我觉得还算是可以的,接下来就看IBM的人怎么看我的情况了.希望我能打上一个IBM的标识..也是我工作中的一个长足的进步吧.希望….希望….希望着……期待

    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用户可以进行启动,指定管理员方式的安装需要用指定管理用户进行启动.

    9.BASH的相关提问

    10.ORACLE的相关提问.

    11.LINUX的权限设置.

    面试一共持续了47分钟,结束的时候刚好15:00.很郁闷,DATASTAGE问了40多分钟,英语却5分钟不到.这次如果想要进外企,真的要好好纪下口语了.

    总的来说,面试我觉得还算是可以的,接下来就看IBM的人怎么看我的情况了.希望我能打上一个IBM的标识..也是我工作中的一个长足的进步吧.希望….希望….希望着……期待

    展开全文
  • 面试ETL题总汇

    2018-12-28 15:58:40
    ETL面试题总汇,很全面,希望能够帮助到大家!
  • 一、ORACLE部分1.表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。2.有员工表empinfo(Fempnovarchar2(10)notnullpk,Fempnamevarchar2(20)notnull,...
  • ETL 工程师面试题

    热门讨论 2009-03-13 12:14:18
    ETL工程师面试题 分4个方面 DW ETL 数据库 等
  • 结果: 2、参考答案 借用1表tb,数据如下: sql如下: 第一种: CREATE VIEW view_name AS SELECT a.COHEV,b.REIZ,a.jg from (select (case when cx = 'COHEV' then qy end) as COHEV, jg from tb) a JOIN ...
  • 从事大数据岗位的工作者,像是ETL工程师、Spark工程师、Hbase工程师、用户画像系统工程师都需要熟练掌握Spark相关知识点,因此Spark也是常常会出现的必考面试题。下面我整理了一些Spark面试题,并附上了答案,一起来...
  • ETL开发面试题

    千次阅读 2018-03-13 09:28:00
    ETL讲解(很详细!!!) ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节...
  • ETL开发面试

    2017-02-06 14:59:00
    ETL面试题 1. What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义...
  • oralcle,etl工程师面试题锦集,dba资料,Oracle入门资料等。。
  • ETL架构师面试题

    2014-10-30 21:47:01
    ETL架构师面试题1. What is a logical data mapping and whatdoes it mean to the ETL team?什么是逻辑数据映射?它对ETL项目组的作用是什么?答:逻辑数据映射(Logical Data Map)用来描述源系统的数据定义、目标...
  • ETL架构师面试题+PowerCenter+数据仓库 ETL架构师面试题+PowerCenter+数据仓库
  • ETL架构师面试题

    2016-10-09 17:36:56
    本部分的题目来自Kimball的ETL Toolkit著作,原著未直接给出答案。这里的中文题目和答案是我参考其原著按自己的理解整理而来的,仅供参考。对于其中不确切的地方,欢迎大家一起沟通。有兴趣的朋友可以直接阅读原著...
  • 转载ETL架构师面试题

    2013-01-23 14:34:04
    转载ETL架构师面试题 1. What is a logical data mapping and what does it mean to the ETL team? 什么是逻辑数据映射?它对ETL项目组的作用是什么? 答: 逻辑数据映射(Logical Data Map)...
  • (为了手机阅读方便,对格式做了调整) 本文中的题目来自Kimball的ETL Toolkit著作,原著未直接给出答案;中文答案是参考网友整理而得。 一、总结 1. What is a logical data mapping and what does it mean to...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

etl面试题