精华内容
下载资源
问答
  • 构建企业数据仓库五步法

    千次阅读 2015-12-17 08:24:04
    数据仓库建模与ETL实践技巧 Posted on 2008-08-01 10:07 xuzhengzhu 阅读(295)  在上一期的专栏文章中,我们曾经提到:数据分析系统的总体架构分为四个部分 —— 源系统、数据仓库、多维数据库、客户端(图...



    在上一期的专栏文章中,我们曾经提到:数据分析系统的总体架构分为四个部分 —— 源系统、数据仓库、多维数据库、客户端(图一:pic1.bmp

    其中,数据仓库(DW)起到了数据大集中的作用。通过数据抽取,把数据从源系统源源不断地抽取出来,可能每天一次,或者每3个小时一次(当然是自动的)。这个过程,我们称之为ETL过程。

    那么,今天,我们就来谈一谈:如何搭建数据仓库,在这个过程中都应该遵循哪些方法和原则;然后介绍一些项目实践中的技巧。

    一、数据仓库的架构

    数据仓库(Data Warehouse DW)是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的关系型数据库,它的数据基于OLTP源系统。数据仓库中的数据是细节的、集成的、面向主题的,以OLAP系统的分析需求为目的。

    数据仓库的架构模型包括了星型架构(图二:pic2.bmp)与雪花型架构(图三:pic3.bmp)两种模式。如图所示,星型架构的中间为事实表,四周为维度表,类似星星;而相比较而言,雪花型架构的中间为事实表,两边的维度表可以再有其关联子表,从而表达了清晰的维度层次关系。

    OLAP系统的分析需求和ETL的处理效率两方面来考虑:星型结构聚合快,分析效率高;而雪花型结构明确,便于与OLTP系统交互。因此,在实际项目中,我们将综合运用星型架构与雪花型架构来设计数据仓库。

    那么,下面我们就来看一看,构建企业级数据仓库的流程。

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

    (一)、确定主题

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

    我们可以形象的将一个主题想象为一颗星星:统计数值型数据(量度)存在于星星中间的事实表;分析角度(维度)是星星的各个角;我们将通过维度的组合,来考察量度。那么,某年某月某一地区的啤酒销售情况这样一个主题,就要求我们通过时间和地区两个维度的组合,来考察销售情况这个量度。从而,不同的主题来源于数据仓库中的不同子集,我们可以称之为数据集市。数据集市体现了数据仓库某一方面的信息,多个数据集市构成了数据仓库。

    (二)、确定量度

    在确定了主题以后,我们将考虑要分析的技术指标,诸如年销售额之类。它们一般为数值型数据。我们或者将该数据汇总,或者将该数据取次数、独立次数或取最大最小值等,这样的数据称为量度。

    量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性能指标(KPI)等的设计和计算。

    (三)、确定事实数据粒度

    在确定了量度之后,我们要考虑到该量度的汇总情况和不同维度下量度的聚合情况。考虑到量度的聚合程度不同,我们将采用最小粒度原则,即将量度的粒度设置到最小。

    例如:假设目前的数据最小记录到秒,即数据库中记录了每一秒的交易额。那么,如果我们可以确认,在将来的分析需求中,时间只需要精确到天就可以的话,我们就可以在ETL处理过程中,按天来汇总数据,此时,数据仓库中量度的粒度就是;反过来,如果我们不能确认将来的分析需求在时间上是否需要精确到秒,那么,我们就需要遵循最小粒度原则,在数据仓库的事实表中保留每一秒的数据,以便日后对进行分析。

    在采用最小粒度原则的同时,我们不必担心海量数据所带来的汇总分析效率问题,因为在后续建立多维分析模型(CUBE)的时候,我们会对数据提前进行汇总,从而保障产生分析结果的效率。关于建立多维分析模型(CUBE)的相关问题,我们将在下期栏目中予以阐述。

    (四)、确定维度

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

    这里我们首先要确定维度的层次(Hierarchy)和级别(Level)(图四:pic4.bmp)。如图所示,我们在时间维度上,按照-季度-形成了一个层次,其中季度成为了这个层次的3个级别;同理,当我们建立产品维度时,我们可以将产品大类-产品子类-产品划为一个层次,其中包含产品大类产品子类产品三个级别。

    那么,我们分析中所用到的这些维度,在数据仓库中的存在形式是怎样的呢?

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

        另外,值得一提的是,我们在建立维度表时要充分使用代理键。代理键是数值型的ID号码(例如图六中每张表的第一个字段),它唯一标识了每一维度成员。更重要的是,在聚合时,数值型字段的匹配和比较,JOIN效率高,便于聚合。同时,代理键对缓慢变化维度有着重要的意义,在原数据主键相同的情况下,它起到了对新数据与历史数据的标识作用。

    在此,我们不妨谈一谈维度表随时间变化的问题,这是我们经常会遇到的情况,我们称其为缓慢变化维度。

    比如我们增加了新的产品,或者产品的ID号码修改了,或者产品增加了一个新的属性,此时,维度表就会被修改或者增加新的记录行。这样,我们在ETL的过程中,就要考虑到缓慢变化维度的处理。对于缓慢变化维度,有三种情况:

    1、缓慢变化维度第一种类型:历史数据需要修改。这种情况下,我们使用UPDATE方法来修改维度表中的数据。例如:产品的ID号码为123,后来发现ID号码错了,需要改写成456,那么,我们就在ETL处理时,直接修改维度表中原来的ID号码为456

    2、缓慢变化维度第二种类型:历史数据保留,新增数据也要保留。这时,要将原数据更新,将新数据插入,我们使用UPDATE / INSERT。比如:某一员工2005年在A部门,2006年时他调到了B部门。那么在统计2005年的数据时就应该将该员工定位到A部门;而在统计2006年数据时就应该定位到B部门,然后再有新的数据插入时,将按照新部门(B部门)进行处理,这样我们的做法是将该维度成员列表加入标识列,将历史的数据标识为过期,将目前的数据标识为当前的。另一种方法是将该维度打上时间戳,即将历史数据生效的时间段作为它的一个属性,在与原始表匹配生成事实表时将按照时间段进行关联,这种方法的好处是该维度成员生效时间明确。

    3、缓慢变化维度第三种类型:新增数据维度成员改变了属性。例如:某一维度成员新加入了一列,该列在历史数据中不能基于它浏览,而在目前数据和将来数据中可以按照它浏览,那么此时我们需要改变维度表属性,即加入新的字段列。那么,我们将使用存储过程或程序生成新的维度属性,在后续的数据中将基于新的属性进行查看。

    (五)、创建事实表

    在确定好事实数据和维度后,我们将考虑加载事实表。

    在公司的大量数据堆积如山时,我们想看看里面究竟是什么,结果发现里面是一笔笔生产记录,一笔笔交易记录… 那么这些记录是我们将要建立的事实表的原始数据,即关于某一主题的事实记录表。

    我们的做法是将原始表与维度表进行关联,生成事实表(图六:pic6.bmp)。注意在关联时有为空的数据时(数据源脏),需要使用外连接,连接后我们将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各量度数据,这将来自原始表,事实表中将存在维度代理键和各量度,而不应该存在描述性信息,即符合瘦高原则,即要求事实表数据条数尽量多(粒度最小),而描述性信息尽量少。

    如果考虑到扩展,可以将事实表加一唯一标识列,以为了以后扩展将该事实作为雪花型维度,不过不需要时一般建议不用这样做。

    事实数据表是数据仓库的核心,需要精心维护,在JOIN后将得到事实数据表,一般记录条数都比较大,我们需要为其设置复合主键和索引,以实现数据的完整性和基于数据仓库的查询性能优化。事实数据表与维度表一起放于数据仓库中,如果前端需要连接数据仓库进行查询,我们还需要建立一些相关的中间汇总表或物化视图,以方便查询。

    三、什么是ETL

    在数据仓库的构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线,包括了数据清洗、整合、转换、加载等各个过程。如果说数据仓库是一座大厦,那么ETL就是大厦的根基。ETL抽取整合数据的好坏直接影响到最终的结果展现。所以ETL在整个数据仓库项目中起着十分关键的作用,必须摆到十分重要的位置。

    ETL是数据抽取(Extract)、转换(Transform)、加载(Load )的简写,它是指:将OLTP系统中的数据抽取出来,并将不同数据源的数据进行转换和整合,得出一致性的数据,然后加载到数据仓库中。例如:下图就向我们展示了ETL的数据转换效果。(图七:pic7.bmp

    那么,在这一转换过程中,我们就完成了对数据格式的更正、对数据字段的合并、以及新增指标的计算三项操作。类似地,我们也可以根据其他需求,完善数据仓库中的数据。

    简而言之,通过ETL,我们可以基于源系统中的数据来生成数据仓库。ETL为我们搭建了OLTP系统和OLAP系统之间的桥梁。

     

    五、项目实践技巧

    (一)、准备区的运用

     在构建数据仓库时,如果数据源位于一台服务器上,数据仓库在另一台服务器端,考虑到数据源Server端访问频繁,并且数据量大,需要不断更新,所以可以建立准备区数据库(图八:pic8.bmp)。先将数据抽取到准备区中,然后基于准备区中的数据进行处理,这样处理的好处是防止了在原OLTP系统中频繁访问,进行数据运算或排序等操作。

    例如我们可以按照天将数据抽取到准备区中,基于数据准备区,我们将进行数据的转换、整合、将不同数据源的数据进行一致性处理。数据准备区中将存在原始抽取表、转换中间表和临时表以及ETL日志表等。

    (二)、时间戳的运用

    时间维度对于某一事实主题来说十分重要,因为不同的时间有不同的统计数据信息,那么按照时间记录的信息将发挥很重要的作用。在ETL中,时间戳有其特殊的作用,在上面提到的缓慢变化维度中,我们可以使用时间戳标识维度成员;在记录数据库和数据仓库的操作时,我们也将使用时间戳标识信息。例如:在进行数据抽取时,我们将按照时间戳对OLTP系统中的数据进行抽取,比如在午夜000取前一天的数据,我们将按照OLTP系统中的时间戳取GETDATEGETDATE减一天,这样得到前一天数据。

    (三)、日志表的运用

    在对数据进行处理时,难免会发生数据处理错误,产生出错信息,那么我们如何获得出错信息并及时修正呢方法是我们使用一张或多张Log日志表,将出错信息记录下来,在日志表中我们将记录每次抽取的条数、处理成功的条数、处理失败的条数、处理失败的数据、处理时间等等。这样,当数据发生错误时,我们很容易发现问题所在,然后对出错的数据进行修正或重新处理。

    (四)、使用调度

    在对数据仓库进行增量更新时必须使用调度(图九:pic9.bmp),即对事实数据表进行增量更新处理。在使用调度前要考虑到事实数据量,确定需要多长时间更新一次。比如希望按天进行查看,那么我们最好按天进行抽取,如果数据量不大,可以按照月或半年对数据进行更新。如果有缓慢变化维度情况,调度时需要考虑到维度表更新情况,在更新事实数据表之前要先更新维度表。

    调度是数据仓库的关键环节,要考虑缜密。在ETL的流程搭建好后,要定期对其运行,所以调度是执行ETL流程的关键步骤。每一次调度除了写入Log日志表的数据处理信息外,还要使用发送Email或报警服务等,这样也方便的技术人员对ETL流程的把握,增强了安全性和数据处理的准确性。

    五、总结

    构建企业级数据仓库需要简单的五步,掌握了这五步的方法,我们可以构建一个强大的数据仓库。然而,每一步都有很深的内容需要研究与挖掘,尤其在实际项目中,我们要综合考虑。例如:如果数据源的脏数据很多,在搭建数据仓库之前我们首先要进行数据清洗,以剔除掉不需要的信息和脏数据。

    ETLOLTP系统和OLAP系统之间的桥梁,是数据从源系统流入数据仓库的通道。在数据仓库的项目实施中,它关系到整个项目的数据质量,所以马虎不得,必须将其摆到重要位置,将数据仓库这一大厦的根基筑牢! 

    展开全文
  • hadoop构建数据仓库

    2019-04-11 09:41:54
    一、数据仓库概况 二、数据仓库 VS olap VS oltp 三、greenplum VS Hadoop 四、ETL 五、Kimball VS Inmon 六、星型模型VS雪花模型 七、数据仓库主题 八、数据质量 九、元数据管理 十、离线数据仓库 十一、...

    目录

    一、数据仓库概况

    二、数据仓库 VS olap VS oltp

    三、greenplum VS Hadoop

    四、ETL

    五、Kimball VS Inmon

    六、星型模型VS雪花模型

    七、数据仓库主题

    八、数据质量

    九、元数据管理

    十、离线数据仓库

    十一、实时数据仓库

     


    一、数据仓库概况

    借用百度的定义:数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

    二、数据仓库 VS olap VS oltp

    三、greenplum VS Hadoop

    四、ETL

    五、Kimball VS Inmon

    六、星型模型VS雪花模型

    七、数据仓库主题

    八、数据质量

    九、元数据管理

    十、离线数据仓库

    十一、实时数据仓库

     

    展开全文
  • ETL构建企业数据仓库五步法

    千次阅读 2011-07-27 14:45:05
    数据仓库构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线,包括了从数据清洗,整合,到转换,加载等的各个过程,如果说数据仓库是一座大厦,那么ETL就是大厦的根基,ETL抽取整合数据的好坏直接影响到最终的...

            在数据仓库构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线,包括了从数据清洗,整合,到转换,加载等的各个过程,如果说数据仓库是一座大厦,那么ETL就是大厦的根基,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构建数据仓库需要简单的五步,掌握了这五步的方法我们将构建一个强大的数据仓库,不过每一步都有很深的需要研究与挖掘,尤其在实际项目中,我们要综合考虑,例如如果数据源的脏数据很多,在搭建数据仓库之前我们首先要进行数据清洗,以剔除掉不需要的信息和脏数据。总之,ETL是数据仓库的核心,掌握了ETL构建数据仓库的五步法,就掌握了搭建数据仓库的根本方法。不过,我们不能教条,基于不同的项目,我们还将要进行具体分析,如父子型维度和缓慢变化维度的运用等。在数据仓库构建中,ETL关系到整个项目的数据质量,所以马虎不得,必须将其摆到重要位置,将ETL这一大厦根基筑牢!

    展开全文
  • 但是对于大数据中数据仓库构建数据模型的方法和传统的关系数据库的方法 是否还是可以使用。 世间万物不会孤立的存在,它们以各种关系进行联系;构建的数据模型如何体现这些关系。 从目前各大厂商(IBM,微软)的数据...

    现状

    针对大数据Hadoop体系中,Hive作为数据仓库工具;但是对于大数据中数据仓库上构建数据模型的方法和传统的关系数据库的方法
    是否还是可以使用。

    世间万物不会孤立的存在,它们以各种关系进行联系;构建的数据模型如何体现这些关系。
    从目前各大厂商(IBM,微软)的数据仓库构建方法中,还是保留原来关系型数据仓库(传统的数据仓库)的模式,
    在Hive中构建各表及其间的关系;尽管在Hive中并不是只存储了结构化的数据,并没有强制的约束要求。
    所以各种数据模型,是否适合在Hive上构建,要根据业务模型,数据量等因素,
    但是Data Vault模型是较为适合当前大数据体系上构建(在<<数据构架,大数据,数据仓库及Data vault>>有相关论述)

    本文说明3种常见的数据模型,并在后续种针对3种模型构建MS NorthWind数据库的相关的数据仓库。

    相关的概念

    概念 说明
    ODS,是Operational Data Store 一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求
    ETL 数据抽取、转换、装载,ETL是建立数据仓库最重要的处理过程,也是最体现工作量的环节
    变化数据捕获技术 捕获数据变化的机制
    CDC 变化数据捕获 常用的变化数据捕获方法有时间戳、快照、触发器和日志四种(关系型数据库) 。对应维度模型种的渐变维度
    数据仓库 是一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程
    数据集市 数据集市是按主题域组织的数据集合,用于支持部门级的决策,两种类型的数据集市:独立数据集市和从属数据集市
    代理键 Surrogate key 代理关键字一般是指维度表中使用顺序分配的整数值作为主键

    3种数据仓库模型

    3.1 关系数据模型(范式建模法)

    概念 说明
    超键 super key 一个列或者列集,唯一标识表中的一条记录。超键可能包含用于唯一标识记录所不必要的额外的列
    候选键 Alternate Key 仅包含唯一标识记录所必需的最小数量列的超键
    主键 Primary Key 唯一标识表中记录的候选键。主键是唯一、非空的
    外键 Froeign Key 一个表中的一个列或多个列的集合,这些列匹配某些其他表中的候选键。注意外键所引用的不一定是主键,但一定是候选键

    关系:数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。
    所以在数据库中,通过表间的关系作为现实中的实体关系的映射。通过表间的关系,也是构造出数据模型的基础,这样才能表达出丰富的业务关系。

    对于构造关系数据模型,遵循3各最基本的范式:

    范式 说明
    1NF 表中的列只能含有原子性(不可再分)的值;每个属性值唯一,不具有多义性
    2NF 满足第一范式,没有部分依赖;每个非主属性必须完全依赖于整个主键,而非主键的一部分
    3NF 满足第二范式,没有传递依赖;每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去


    对于关系数据模型:
    从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模 ;
    但是建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,
    特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求

    3.2 维度建模法
    按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)

    概念 说明
    事实表 事实表记录了特定事件的数字化的考量,一般由数字值和指向维度表的外键组成
    维度表 维度表的记录数通常比事实表少,但每条记录包含有大量用于描述事实数据的属性字段
    星型模式 一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表
    雪花模式 与星型模式相同,雪花模式也是由事实表和维度表所组成。所谓的“雪花化”就是将星型模式中的维度表进行规范化处理

    优点:对于维度建模,针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。
    通过这些预处理,能够极大的提升数据仓库的处理能力
    维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。

    缺点: 由于在构建星型模式之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。
    而且,当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理。而在这些与处理过程中,往往会导致大量的数据冗余。

    3.3 Data Vault 模型
    Data Vault方法需要跟踪所有数据的来源,因此其中每个数据行都要包含数据来源和装载时间属性,用以审计和跟踪数据值所对应的源系统。
    Data Vault不区分数据在业务层面的正确与错误,它保留操作型系统的所有时间的所有数据,装载数据时不做数据验证、清洗等工作,这点明显有别于其他数据仓库建模方法

    概念 说明
    中心表 中心表用来保存一个组织内的每个实体的业务主键,业务主键唯一标识某个业务实体,中心表和源系统表是相互独立的
    链接表 链接表是中心表之间的链接。一个链接表意味着两个或多个中心表之间有关联。一个链接表通常是一个外键,它代表着一种业务关系
    附属表 附属表用来保存中心表和链接表的属性,包括所有的历史变化数据。一个附属表总有一个且唯一一个外键引用到中心表或链接表

    具备的优点:

    • 所有数据都基于时间来存储,即使数据是低质量的,也不能在ETL过程中处理掉。
    • 依赖越少越好。
    • 和源系统越独立越好。
    • 设计上适合变化。
    • 源系统中数据的变化。
    • 在不改变模型的情况下可扩展。
    • ETL作业可以重复执行。
    • 数据完全可追踪。

    总结

    各种的数据模型中,映射现实实体及其关系,都使用了表及其表间的关系 ; Data Vault模式是较为适合大数据的数据模型,首先在Hive上建立Data Vault,然后再在Data Vault上
    建立数据仓库或数据集市。【大数据开发学习资料领取方式】:加入大数据技术学习交流群458345782,点击加入群聊,私信管理员即可免费领取
    接下来要进行对NorthWind进行上述模型的实验尝试。

    展开全文
  • ETL构建数据仓库五步法

    千次阅读 2018-09-06 21:45:48
    数据仓库构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线,包括了从数据清洗,整合,到转换,加载等的各个过程,如果说数据仓库是一座大 厦,那 么ETL就是大厦的根基,ETL抽取整合数据的好坏直接影响到最终...
  • 构建企业数据仓库的五步法

    千次阅读 2016-10-09 18:10:12
     即确定数据分析或前端展现的主题(例如:某年某月某地区的啤酒销售情况). 主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系, 确定主题时要综合考虑.   二. 确定量度 确定主题后, 需要考虑...
  • 如何构建银行数据仓库

    千次阅读 2008-04-12 10:46:00
    如何构建银行数据仓库河南省邓州市新华东路11号市人行 宋玉长 数据仓库技术作为一项数据管理领域的新技术,其精髓在于针对联机分析处理(OLAP)提出了一种综合的解决方案,与以往很多技术不同的是,它主要是一种概念...
  • 本文是来自2019年Apache Flink Meetup深圳站的资料,作者是OPPO的大数据平台负责人,本文主要讲述了OPPO基于Flink如何构建实时数据仓库。本文从...
  • 6步搭建企业数据仓库

    千次阅读 2018-11-29 16:40:36
    数据仓库作为企业提供决策支持而构建的集成化数据环境,本身并不产生或者消费数据,基本架构包含的是数据流入流出的过程,首先放上一张数据仓库的架构图。数据仓库作为中间集成化数据管理的一个平台,底层有多种数据...
  • 数据仓库构建步骤

    2013-08-22 17:42:12
    构建企业数据仓库五步法: 一、确定主题  即确定数据分析或前端展现的主题(例:某年某月某地区的啤酒销售情况)。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑....
  • 根据boss想法整理一般通用的数据仓库模型构建思路,这里参考了公众号内文章,觉得写得很好,既有理论指导又有实践案例,能够详细地说明; 什么是数据模型? 数据模型是抽象描述现实世界的工具和方法,通过抽象的...
  • 恒丰银行原传统数据仓库是建立在IOE(IBM、ORACLE、EMC)传统架构体系上,已接入数据源系统有30多个,配套建立监管数据集市、数据分析集市,风险数据集市三个主要数据集市,负责十几个管理应用和监管系统的数据需求,...
  • 即确定数据分析或前端展现的主题。(以汽车行业的KPI管理分析系统为例) 例如:我们希望分析某年某月某区域某门店销售情况,这就是一个主题。 主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)...
  • 构建稳定成熟的数据仓库

    千次阅读 2015-08-24 00:26:57
    根据浅显的数据仓库建设经验,结合Teradata TSM数据仓库建设方法论,谈谈如何构建稳定成熟的数据仓库 如果在初期建设没有一个完整的解决方案和长远的发展目标,在集市或者仓库不断扩大最终成为企业级的数据仓库时就...
  • 上一篇主要讲到的是数据仓库对于企业的价值,以及同数据库系统的区别,数据仓库作为 业务版图扩张和数据价值萃取需求的必然产物,其在构建上也有一些参照的既定规范模式,本篇将讲解数据仓库模型构建思路及工具;...
  • 数据仓库之元数据管理

    千次阅读 2020-08-21 16:29:27
    元数据(Meta Data),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及 ETL 的任务运行状态。一般会通过元数据资料库(Metadata ...构建数据仓库主要步骤之一是 ETL。这时元数据将发挥.
  • Hive:数据仓库构建步骤

    千次阅读 2018-10-16 23:19:19
    数据仓库是面向主题的、集成的、不可更新的、随时间的变化而不断变化的,这些特点决定了数据仓库的系统设计不能采用同开发传统的OLTP数据库一样的设计方法。   数据仓库系统的原始需求不明确,且不断变化与增加,...
  • 数据仓库构建实施方法及步骤

    千次阅读 2013-10-25 10:58:30
    数据仓库是面向主题的、集成的、不可更新的、随时间的变化而不断变化的,这些特点决定了数据仓库的系统设计不能采用同开发传统的OLTP数据库一样的设计方法。 数据仓库系统的原始需求不明确,且 不断变化与增加,...
  • 数据仓库

    千次阅读 多人点赞 2018-04-14 17:35:47
    数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(DecisionSupport)。它出于分析性报告和决策支持目的而创建。 数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据...
  • 敏捷型数据仓库构建及其应用

    千次阅读 2019-11-01 08:54:22
    互联网的运营人员从了解经营状况转化为精细化运营, 这就于要求数据仓库具有提供高效明细数据能力, 数据仓库如何在庞大数据量的前提下, 实现满足不同层次的数据提出和分析, 是难点之二. 数据经过ETL最终到达使用数据...
  • 作为一项数据管理领域的新技术,数据仓库的精髓在于针对联机分析处理(OLAP)提出了一种综合的解决方案,但与以往很多技术不同的是,它主要是一种概念,在此概念指导下完成系统的构造。既没有可以直接购买到的现成...
  • 数据仓库简介

    千次阅读 2018-09-21 16:01:15
    数据仓库1、数据仓库的基本概念2、 数据仓库主要特征...数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。它出于分析性报告和决策支持目的而创建。是一个面向主题的(Subj...
  • 有赞大数据实践: 敏捷型数据仓库构建及其应用有赞大数据实践: 敏捷型数据平台的构建及其应用前言数据仓库设计总体架构数据仓库实例基础指标层分层的好处数仓工具数据仓库与数据分析即席查询系统多维分析系统搜索...
  • 数据仓库多维数据模型设计

    万次阅读 2017-11-09 18:14:59
    建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。这里我们将要详细介绍如何创建适合自己的数据模型。 数据仓库建模方法 大千世界,...
  • 数据仓库基本知识

    万次阅读 多人点赞 2017-10-31 17:35:04
    数据仓库是什么 根据统计,每个企业的数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。 因此,企业仍然没有最大化地利用已存在的数据资源,以...
  • 数据仓库面试题

    千次阅读 多人点赞 2020-07-20 12:49:16
    如何构建数据仓库?什么是数据中台?数据中台、数据仓库、大数据平台的关键区别是什么?基础能力上的区别业务能力上的区别大数据的一些相关系统?如何建设数据中台?数据湖的理解?数仓最重要的是什么?概念数据模型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,956
精华内容 16,782
关键字:

企业构建数据仓库的主要原因