首页 > 编程知识 正文

大数据etl面试题及答案,etl面试题库

时间:2023-05-03 21:19:36 阅读:158028 作者:653

ETL讲解(很详细!!!)

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目的重要一环。 通常,在BI项目中,ETL至少要花费整个项目的1/3的时间,ETL设计的好坏直接关系到BI项目的成败。

ETL的设计分为数据提取、数据清洗转换和数据加载三个部分。 设计ETL的时候我们也从这三个部分出发。 的数据提取,从各个不同的数据源提取——到操作型数据存储(ODS )的过程也可以进行数据的清洗和转换),在提取过程中选择不同的提取方法,实现ETL的运行效果在ETL的三个部分中,最花时间的是“t”(transform,清洗,变换)的部分,一般该部分的工作量是ETL整体的2/3。 数据加载通常在清洗完数据后直接写入数据仓库(dw )。

ETL的实现有很多种方法,常用的有三种。 一个由Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等ETL工具实现,一个由SQL方式实现,另一个由ETL工具和SQL相结合前两种方法各有优缺点,使用工具可以快速构建ETL项目,阻止了复杂的编码任务,加快了速度,降低了难度,但缺乏灵活性。 SQL方法的优点是灵活,提高了ETL的执行效率,但编码复杂,对技术要求高。 三是综合了前面两个优点,大大提高了ETL的开发速度和效率。

一、 数据的抽取(Extract)

这一部分在调查阶段需要做很多工作。 首先,弄清楚数据来自几个业务系统,各业务系统的数据库服务器在运行什么DBMS,有手工操作的数据,手工操作的数据量有多少,有无结构化的数据等。

 1、对于与存放DW的数据库系统相同的数据源处理方法

这种数据源在设计上比较容易。 通常,DBMS(SQLserver,Oracle )提供数据库链接功能,只要在DW数据库服务器和原始业务系统之间建立直接链接关系,就可以通过编写Select语句直接访问。

  2、对于与DW数据库系统不同的数据源的处理方法

对于这种数据源,通常也可以在ODBC中建立数据库链接——,例如在SQL Server和Oracle之间。 如果无法建立到数据库的链接,可以通过两种方法使用工具将源数据导出为. txt或. xls文件,然后将这些源系统文件导入ODS。 另一种方法是在程序接口中进行。

 3、对于文件类型数据源(.txt,.xls)可使用数据库工具来训练业务人员将这些数据导入指定的数据库,从指定的数据库中提取。 或者也可以用工具来实现。

  4、增量更新的问题

在数据量较大的系统中,必须考虑增量提取。 通常,业务系统会记录业务发生的时间。 我们可以作为增量的标志。 每次提取前首先判断ODS中记录的最大时间,根据该时间去业务系统中获取所有进一步的记录。 利用业务系统的时间戳,一般业务系统中没有时间戳或有时间戳。

二、数据的清洗转换(Cleaning、Transform)

一般来说,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

  1、 数据清洗

数据清洗的任务是对不符合要求的数据进行过滤,将过滤结果传递给业务主管部门,确认是过滤还是业务部门修改后提取。

不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。

  (1)不完整的数据:这样的数据主要是缺乏应该有的信息,比如供应商名称、分公司名称、客户的地域信息不足,业务系统内的主表和明细表不一致等。 对这类数据进行过滤,根据缺失的内容写出不同的Excel文件并提交给客户,要求在规定的时间内补充。 补齐后写入数据仓库。

发生 (2)错误的数据:等错误的原因是业务系统不够完善,收到输入后未经判断直接写入后台数据库。 例如,数值数据输入为全角数字字符,字符串数据后面有回车操作,日期格式不正确,日期越界等。 这样的数据也必须分类,关于类似全角文字,数据前后有不可视文字的问题,请参阅只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取

ong>。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。

  (3)重复的数据:对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。

  数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。

  2、 数据转换

  数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。

  (1)不一致数据转换:这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。

  (2)数据粒度的转换:业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。

  (3)商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使用。

三、ETL日志、警告发送

  1、 ETL日志

  ETL日志分为三类。

一类是执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。

一类是错误日志,当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。

第三类日志是总体日志,只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。

记录日志的目的是随时可以知道ETL运行情况,如果出错了,可以知道哪里出错。

  2、 警告发送

  如果ETL出错了,不仅要形成ETL出错日志,而且要向系统管理员发送警告。发送警告的方式多种,一般常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。

  ETL是BI项目的关键部分,也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更高,为BI项目后期开发提供准确与高效的数据。

后记

     做数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具。回忆一下工作这么长时间以来,处理数据迁移、转换的工作倒还真的不少。但是那些工作基本上是一次性工作或者很小数据量。可是在数据仓库系统中,ETL上升到了一定的理论高度,和原来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,E、T、L分别代表抽取、转换和装载。

其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据仓库中,

ETL有几个特点,

一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。

二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。

    现在有很多成熟的工具提供ETL功能,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。举个例子,VB是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB的心灵美的镜子有多少?微软设计的产品通常有个原则是“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表面这些工具的简单使用去看它背后慈祥的灰狼的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须要在理论水平上达到一定的高度.

转载于:https://my.oschina.net/u/1186503/blog/1633715

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。