


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ETL 构建企业级数据仓库五步法 一、什么是 ETL ETLETL 是数据抽取( EXTRACT) 、转换(TRANSFORM) 、加载(LOAD )的简写,它是将 OLTP 系统中的数据经过抽取,并将不同数据源的数据 进行转换、整合,得出一致性的数据,然后加载到 数据仓库中。简而言之 ETL 是完成从 OLTP 系统到 OLAP 系统的过程(图一:PIC1.JPG) 。 二、数据仓库的架构 数据仓库(DATA WAREHOUSE DW)是基于 OLTP 系统的数据源,为了便于多维分析和 多角度展现将其数据按特定的模式进行存储而建立的 关系型数据库,它不同于多维数据库,数据仓库中的数据是细节的,集成的,数据仓库是面向主题的,是以 OLAP 系统为分析目的。它包括星型架构 (图二:PIC2.JPG )与雪花型架构(图三: PIC3.JPG) , 其中星型架构中间为事实表,四周为维度表, 类似星星;雪花型架构中间为事实表,两边的 维度表可以再有其关联子表,而在星型中只允许一张表作为维度表与事实表关联,雪花型一维度可以有多张表,而星型 不可以。考虑到效率时,星型 聚合快,效率高,不过雪花型结构明确,便于与 OLTP 系统交互。在实际项目中,我们将综合运用星型架构与雪花型架构。 三、ETL 构建企业级数据仓库五步法的流程 (一) 、确定主题 即 确定数据分析或前端展现的某一方面的分析主题,例如我们分析某年某月某一地区的啤酒销售情况,就是一个主题。主题要体现某一方面的各分 析角度(维度)和统 计数值型数据(量度) ,确定主题时要综合考虑,一个主题在数据仓库中即为一个数据集市,数据集市体现了某一方面的信息,多 个数据集市构成了数据仓库。 (二) 、确定量度 在确定了主题以后,我们将考虑要分析的技术指标,诸如年销售额此类,一般为数值型数据,或者将该数据汇总,或者将该数据取次数,独立次数 或取最大最小值等,这样的数据称之为量度。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性能指标(KPI)等的计算。 (三) 、确定事实数据粒度 在确定了量度之后我们要考虑到该量度的汇总情况和不同维度下量度的聚合情况,考虑到量度的聚合程度不同,我们将采用“最小粒度原则” ,即将 量度的粒度设置 到最小,例如我们将按照时间对销售额进行汇总,目前的数据最小记录到天,即数据库中记录了每天的交易额,那么我们不能在 ETL 时将数据进行按月或年汇总, 需要保持到天,以便于后续对天进行分析。而且我们不必担心数据量和数据没有提前汇总带来的问题,因为在后续的建 立 CUBE 时已经将数据提前汇总了。 (四) 、确定维度 维度是要分析的各个角度,例如我们希望按照时间,或者按照地区,或者按照产品进行分析,那么这里的时间、地区、产品就是相应的维度,基于 不同的维度我们可以看到各量度的汇总情况,我们可以基于所有的维度进行交叉分析。这里我们首先要确定维度的层次(HIERARCHY)和级别 (LEVEL) (图 四:PIC4.JPG) ,维度的层次是指该维度的所有级别,包括各级别的属性;维度的级别是指该维度下的成员,例如当建立地区维度时我 们将地区维度作为一个级别,层次为省、市、县三层,考虑到维度表要包含尽量多的信息,所以建立维度时要符合“矮胖原则” ,即维度表要尽量宽, 尽量包含所有的描述性信息,而不 是统计性的数据信息。 还有一种常见的情况,就是父子型维度(图五:PIC5.JPG) , 该维度一般用于非叶子节点含有成员等情况,例如公司员工的维度,在统计员工的工 资时,部 门主管的工资不能等于下属成员工资的简单相加,必须对该主管的工资单独统计,然后该主管部门的工资等于下属员工工资加部门主管的工 资,那么在建立员工维度 时,我们需要将员工维度建立成父子型维度,这样在统计时,主管的工资会自动加上,避免了都是叶子节点才有数据的情况。 另外,在建立维度表时要充分使用代理键,代理键是数值型的 ID 号码,好处是代理键唯一标识了每一维度成员信息,便于区分,更重要的是在聚 合时由于数值型匹 配,JOIN 效率高,便于聚合,而且代理键对缓慢变化维度有更重要的意义,它起到了标识历史数据与新数据的作用,在原数据主键 相同的情况下,代理键起到了对新数据与历史数据非常重要的标识作用。 有时我们也会遇到维度缓慢变化的情况,比如增加了新的产品,或者产品的 ID 号码修改了,或者产品增加了一个新的属性,此时某一维度的成员会随 着新的数据的加入而增加新的维度成员,这样我们要考虑到缓慢变化维度的处理,对于缓慢变化维度,有三种情况: 1、缓慢变化维度第一种类型:历史数据需要修改。这样新来的数据要改写历史数据,这时我们要使用 UPDATE,例如产品的 ID 号码为 123,后来 发现 ID 号码错误了,需要改写成 456,那么在修改好的新数据插入时,维度表中原来的 ID 号码会相应改为 456,这样在维度加载时要使用第一种类 型,做法是完全更 改。 2、缓慢变化维度第二种类型:历史数据保留,新增数据也要保留。这时要将原数据更新,将新数据插入,需要使用 UPDATE / INSERT,比如某一 员工 2005 年在 A 部门,2006 年时他调到了 B 部门。那么在统计 2005 年的数据时就应该将该员工定位到 A 部门;而在统计 2006 年数据时就应该定 位到 B 部门,然后再有新的数据插入时,将按照新部门(B 部门)进行处理,这样我们的做法是将该维度成员列表加入标识列,将历史的 数据标识为 “过期” ,将目前的数据标识为“当前的” 。另一种方法是将该维度打上时间戳,即将历史数据生效的时间段作为它的一个属性,在与原始表匹配生成事 实表时将按照时间段进行关联,这样的好处是该维度成员生效时间明确。 3、 缓慢变化维度第三种类型:新增数据维度成员改变了属性。例如某一维度成员新加入了一列,该列在历史数据中不能基于它浏览,而在目前数 据和将来数据中可以按 照它浏览,那么此时我们需要改变维度表属性,即加入新的列,那么我们将使用存储过程或程序生成新的维度属性,在后续的 数据中将基于新的属性进行查看。 (五) 、创建事实表 在确定好事实数据和维度后,我们将考虑加载事实表。 在公司的大量数据堆积如山时,我们想看看里面究竟是什么,结果发现里面是一笔笔生产记录,一笔笔交易记录 那么这些记录是我们将要建立的 事实表的原始数据,即关于某一主题的事实记录表。 我们的做法是将原始表与维度表进行关联,生成事实表(图六:PIC6.JPG) 。注意在关联时有为空的数据时(数据源脏) ,需要使用外连接,连接后 我们将 各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各量度数据,这将来自原始表,事实表中将存在维度代理键和各量度, 而不应该存在描述性信息,即符合“瘦高原则” ,即要求事实表数据条数尽量多(粒度最小) ,而描述性信息尽量少。 如果考虑到扩展,可以将事实表加一唯一标识列,以为了以后扩展将该事实作为雪花型维度,不过不需要时一般建议不用这样做。 事实数据表是数据仓库的核心,需要精心维护,在 JOIN 后将得到事实数据表,一般记录条数都比较大,我们需要为其设置复合主键和索引,以为了数 据的完整性和基于数据仓库的查询性能优化,事实数据表与维度表一起放于数据仓库中,如果前端需要连接数据仓库进行查询,我们还需要建立一些相 关的中间汇总表或物化视图,以方便查询。 三、ETL 中高级技巧的运用 (一) 、准备区的运用 在构建数据仓库时,如果数据源位于一服务器上,数据仓库在另一服务器端,考虑到数据源 SERVER 端访问频繁,并且数据量大,需要不断更新, 所以可以建立准备区数据库(图七:PIC7.JPG) 。先将数据抽取到准备区中,然后基于准备区中的数据进行处理,这样处理的好处是防止了在原 OLTP 系统中中频繁访问,进行数据运算或排序等操作。例如我们可以按照天将数据抽取到准备区中,基于数据准备区,我们将进行数据的转换,整合,将不 同数据源的数据进行一致性处理。数据准备区中将存在原始抽取表,一些转换中间表和临时表以及 ETL 日志表等。 (二) 、时间戳的运用 时间维度对于某一事实主题来说十分重要,因为不同的时间有不同的统计数据信息,那么按照时间记录的信息将发挥很重要的作用。在 ETL 中,时 间戳有其特殊的 作用,在上面提到的缓慢变化维度中,我们可以使用时间戳标识维度成员;在记录数据库和数据仓库的操作时,我们也将使用时间戳 标识信息,例如在进行数据抽取时,我们将按照时间戳对 OLTP 系统中的数据进行抽取,比如在午夜 0:00 取前一天的数据,我们将按照 OLTP 系统 中的时间戳取 GETDATE 到 GETDATE 减一天,这样得到前一天数据。 (三) 、日志表的运用 在对数据进行处理时,难免会发生数据处理错误,产生出错信息,那么我们如何获得出错信息并及时修正呢? 方法是我们使用一张或多张 LOG 日 志表,将出错信息记录下来,在日志表中我们将记录每次抽取的条数,处理成功的条数,处理失败的条数,处理失败的数据,处理时间等等,这样当数 据发生错误时,我们很容易发现问题所在,然后对出错的数据进行修正或重新处理。 (四) 、使用调度 在对数据仓库进行增量更新时必须使用调度(图八:PIC8.JPG) , 即对事实数据表进行增量更新处理,在使用调度前要考虑到事实数据量,需要多 长时间更 新一次,比如希望按天进行查看,那么我们最好按天进行抽取,如果数据量不大,可以按照月或半年对数据进行更新,如果有缓慢变化维度 情况,调度时需要考虑到 维度表更新情况,在更新事实数据表之前要先更新维度表。 调度是数据仓库的关键环节,要考虑缜密,在 ETL 的流程搭建好后,要定期对其运行,所以调度是执行 ETL 流程的关键步骤,每一次调度除了写入 LOG 日志表 的数据处理信息外,还要使用发送 EMAIL 或报警信息等,这样也方便的技术人员对 ETL 流程的把握,增强了安全性和数据处理的准确性。 四、总结 ETL 构建数据仓库需要简单的五步,掌握了这五步的方法我们将构建一个强大的数据仓库,不过每一步都有很深的需要研究与挖掘,尤其在实际项
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海口网络安全测评师培训课件
- 锅炉特种作业培训课件
- 宿舍电器火灾事故防范
- 虚拟现实金融模拟交易创新创业项目商业计划书
- 水产品安全检测技术升级创新创业项目商业计划书
- 认识地球家园课件
- 海上安全培训课目表格课件
- 2025西安浐灞第三初级中学招聘考试模拟试题及答案解析
- 2025-2030肉牛活体抵押贷款业务创新与农村金融改革试点研究报告
- 2025-2030肉牛养殖场环境智能监控系统开发及预警模型构建报告
- 劳动课种植教学方案
- 2024年全国职业院校技能大赛高职组(环境检测与监测赛项)考试题库(含答案)
- 实验-大肠杆菌感受态细胞的制备及转化
- 2025年中考语文阅读复习:理解词语含义(含练习题及答案)
- GB/T 44421-2024矫形器配置服务规范
- 磷酸哌嗪宝塔糖的毒理学研究
- 【课件】2025届高三生物一轮复习备考策略研讨
- 灵芝培训课件
- 环形开挖预留核心土法
- 妇科医生进修汇报课件
- 《科室管理方案》课件
评论
0/150
提交评论