数据仓库基础(六)数据的ETL
本文转载自: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的更多相关文章
- 数据仓库基础(二)ETL
本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135529.html ETL在数据仓库中具有以下的几个特点: 数据流动具有周期性: ...
- <Android基础> (六) 数据存储 Part 1 文件存储方式
第六章 数据存储 6.1 持久化技术 持久化技术指将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. 主要有三种方式用于简单地实现数据持久化功能:文件存储.S ...
- <Android基础> (六) 数据存储 Part 3 SQLite数据库存储
6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...
- <Android基础> (六) 数据存储 Part 2 SharedPreferences方式
6.3 SharedPreferences存储 SharedPreferences使用键值对的方式来存储数据.同时支持多种不同的数据类型. 6.3.1 将数据存储到SharedPreferences中 ...
- 一脸懵逼学习Hive(数据仓库基础构架)
Hive是什么?其体系结构简介*Hive的安装与管理*HiveQL数据类型,表以及表的操作*HiveQL查询数据***Hive的Java客户端** Hive的自定义函数UDF* 1:什么是Hive(一 ...
- Bootstrap<基础六> 表单
Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单. 表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 ...
- 大数据之ETL设计详解
ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...
- C#_02.15_基础六_.NET类
C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...
- {Django基础六之ORM中的锁和事务}一 锁 二 事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在 ...
随机推荐
- Android 获取View中的组件
可以把这个view强转成ViewGroup对象,再通过getChildAt(0),getChildAt(1) 获取之后AddView可能会报错:IllegalStateException: The s ...
- springMVC 报错:Unknown return value type: java.lang.Integer
controller层返回值类型为Integer,运行报错: Unknown return value type: java.lang.Integer 解决办法:在此方法上写上注解 @Response ...
- Spark2 oneHot编码--标准化--主成分--聚类
1.导入包 import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache ...
- 为什么 Redis 重启后没有正确恢复之前的内存数据
安装 Redis 后,默认配置下启动会得到如下日志: [] Sep ::! Background save may fail under low memory condition. To fix th ...
- js遍历json对象
原生js遍历json对象 遍历json对象: 无规律: <script> var json = [ {dd:'SB',AA:'东东',re1:123}, {cccc:'dd',lk:'1q ...
- Linux:file命令显示自定义文件类型
file 命令可以查看文件类型信息,原理见: 非常Linux-file命令与magic file 修改 /ect/magic 文件后,可用 file 命令显示自定义文件类型信息. man magic ...
- vue - 组件的创建
组件的创建 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例中使 ...
- CentOS代理设置
1.全局的代理设置: vi /etc/profile 添加下面内容 http_proxy = http://username:password@yourproxy:8080/ftp_proxy = h ...
- 一次性从git远程仓库中克隆到本地。
自动化工具 一次性从git远程仓库中克隆到本地. import os # git操作 将远程repo克隆到本地 def git_clone_cd_pull(url): # 获取仓库名称 如fullsp ...
- DeepMind提出空间语言集成模型SLIM,有效编码自然语言的空间关系
前不久,DeepMind 提出生成查询网络 GQN,具备从 2D 画面到 3D 空间的转换能力.近日.DeepMind 基于 GQN 提出一种新模型.可以捕捉空间关系的语义(如 behind.left ...