本文转载自:http://www.cnblogs.com/evencao/p/3140487.html

ETL是数据抽取(Extract)转换(Transform)加载(Load)的简写,是构建数据仓库最重要的一步。

1.抽取

抽取时元数据进入到数据仓库的第一步。因为每个业务系统数据的质量不相同,所以需要对每个数据源建立不同的抽取程序。

抽取的主要功能:

提供数据匹配器的功能:这样使得程序可以与多种业务数据源相连接。

提供标准化的功能:抽取最重要的一个功能就是对数据类型的标准化,将业务数据和数据仓库中的数据类型统一。

提供批处理的服务:

提供过滤的功能:

2.清洗

清洗是源数据进入到数据仓库的第二步。目的是保证源数据的数据质量符合数据仓库的要求,同时保证数据的一致性。

清洗的主要功能:

数据修正:使用固定算法或者相应的数据源检查程序区验证信息是否准确。

数据标准化功能:将业务数据源的数据标准化,以满足数据仓库中的数据一致的要求。

匹配和合并功能:对抽取出来的数据进行重复验证,然后对重复数据进行单独合并。

3.转换

转换的功能:

对数据进行计算:根据业务需求的特点对业务源数据进行相关的计算,以满足数据仓库的要求。

对数据进行放大:根据实际的业务需求,为数据调价额外的信息,从而保证数据仓库的一致性和正确性。

4.加载:这是ETL的最后一步。主要负责将数据加载到目标表中,这些目标表可能是事实表,也可能是维度表。

定义ETL的流程

1.从源数据抽取到ODS数据缓冲区:

ODS数据缓冲区是指数据临时存储区域,它基本上与源系统的数据结构保持一致。

2.从ODS数据缓冲区到ODS统一信息视图区:一般来说是定时抽取的,除了第一次做全量抽取外,其余时间都是做增量抽取,可以按照某种更新策略进行抽取。

3.从ODS统一信息视图区抽取到数据仓库:数据仓库是根据业务需求,对企业受进行整合,同时又是存储历史数据的地方

4.从数据仓库抽取到数据集市:数据集市是针对某个主题域、部门或者是特定用户的数据集合。

ETL的加载方法

1.以时间戳作为加载条件:

利用时间戳的方式对目标表进行数据加载是相对简单的一种方法。这种时间戳作为数据加载条件的

优点是使ETL设计简单清晰,抽取的效率相对较高,并且可以实现ETL数据加载的需求。

缺点是需要对业务数据源的时间戳进行维护。

2利用源表的日志信息对目标表进行加载:在业务系统中为源表中的数据增加、删除、修改时,及时更新该源表的日志表。

优点是:不需要更改数据源表结构和数据,降低了数据加载的风险。

缺点是需要维护日志表数据,增加了系统的开销。

3.进行全表对比的方式进行数据的加载

是对目标表的每一条数据进行比较,当目标表不存在该主键时,进行插入操作,如果该主键值已经存在,则需要对其余字段进行比较,如果有不相同的数值,则需要进行更新操作。

优点:安全性高

缺点:流程较为复杂,一般抽取的效率较低。

4.全表删除后再进行数据加载的方式`

利用ETL构建企业级数据仓库

1.在构建数据仓库的时候,通常的做法是将业务系统部署在一台服务器,而数据仓库部署在另一台服务器中。

2.构建企业级数据仓库需要充分发挥时间戳的作用。

3.在构建企业数据仓库时,可以使用ETL过程中产生的日志信息区查看数据处理的情况。

数据仓库基础(六)数据的ETL的更多相关文章

  1. 数据仓库基础(二)ETL

    本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135529.html ETL在数据仓库中具有以下的几个特点: 数据流动具有周期性: ...

  2. <Android基础> (六) 数据存储 Part 1 文件存储方式

    第六章 数据存储 6.1 持久化技术 持久化技术指将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. 主要有三种方式用于简单地实现数据持久化功能:文件存储.S ...

  3. <Android基础> (六) 数据存储 Part 3 SQLite数据库存储

    6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...

  4. <Android基础> (六) 数据存储 Part 2 SharedPreferences方式

    6.3 SharedPreferences存储 SharedPreferences使用键值对的方式来存储数据.同时支持多种不同的数据类型. 6.3.1 将数据存储到SharedPreferences中 ...

  5. 一脸懵逼学习Hive(数据仓库基础构架)

    Hive是什么?其体系结构简介*Hive的安装与管理*HiveQL数据类型,表以及表的操作*HiveQL查询数据***Hive的Java客户端** Hive的自定义函数UDF* 1:什么是Hive(一 ...

  6. Bootstrap<基础六> 表单

    Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单. 表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 ...

  7. 大数据之ETL设计详解

    ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...

  8. C#_02.15_基础六_.NET类

    C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...

  9. {Django基础六之ORM中的锁和事务}一 锁 二 事务

    Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在 ...

随机推荐

  1. python nose测试框架全面介绍四

    四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_do ...

  2. Making Promises With

    转:Making Promises With http://www.htmlgoodies.com/beyond/javascript/making-promises-with-jquery-defe ...

  3. 8.30前端jQuery和数据结构知识

    2018-8-30 16:37:17 单链表的demo 从俺弟家回来了! 发现,还是要努力学习是很重要的!!努力学习新的感兴趣的东西!! 多读书还是很重要的!!! 越努力,越幸运! # coding: ...

  4. Python重要基础点

    这里记录一些实际编写代码时遇到的常用/重要的内容,有前辈的,也有自己整理加进来的. 以点的形式记录,之后遇到的内容会慢慢补充进来 1. 斜杠 / :斜字第一笔, 转义用反斜杠 \ : 转的最后一笔 2 ...

  5. Mysql----索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  6. HUST 1605 Gene recombination(广搜,位运算)

    题目描述 As a gene engineer of a gene engineering project, Enigma encountered a puzzle about gene recomb ...

  7. YARN Architecture

    The fundamental idea of YARN is to split up the functionalities of resource management and job sched ...

  8. Python正则表达式匹配猫眼电影HTML信息

    爬虫项目爬取猫眼电影TOP100电影信息 项目内容来自:https://github.com/Germey/MaoYan/blob/master/spider.py 由于其中需要爬取的包含电影名字.电 ...

  9. shuffle

    <?php function genArr($len) { $arr = array(); $len = $len; for ($w=1; $w < $len ; $w++) { $arr ...

  10. LightOJ 1038 - Race to 1 Again(期望+DP)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1038 题意是:给你一个N (1 ≤ N ≤ 105) 每次N都随机选一个因子d,然后让 ...