0
点赞
收藏
分享

微信扫一扫

【数据仓库-4】-- 提取、转换、装载(ETL)


1.数据抽取

1.1 逻辑抽取

1.1.1 全量数据抽取

一般发生在我们初始化时,需要一次性将源库(业务系统)的所有数据抽取到数据仓库的ODS层。

比如将一个全表导出数据文件或者查询源表所有数据的SQL语句, 都是全量抽取的例子。
select * from user.person;

1.1.2 增量数据抽取

对于业务系统的更新表,需要在后续的时间里,增量抽取并更新 ODS 的历史表。对于流水表(只增加,不修改的表),全量数据入仓后,后续的数据,只需要按分区存储即可。一般增量数据抽取有 4种方式:

触发器
时间戳
全表数据对比
binlog

这4种方式的对比


方式名称

适用数据库类型

性能

对源库影响程度

数据完备性

ETL实现难度

触发器

关系型数据库

较优

一般

时间戳

关系型数据库

数据表具备时间字段的格式

较小(时间戳为索引)

低(由于主从延迟)

容易

全表数据对比(快照)

关系型数据库

一般

binlog

关系型数据库

最优

最小

最高

最容易


PS:早期数据仓库增量抽取采用的是根据时间戳增量获取,当前比较流行的方式是使用 binlog 抽取。

1.2 物理抽取

这种方式依赖于选择的逻辑抽取方法和能够对源系统所做的操作和所受的限制,存在两种物理数据抽取机制:

1.2.1联机抽取

直接从源系统抽取数据。抽取进程或者直连源系统数据库,访问它们的数据表,或者连接到一个存储快照日志或变更记录表的中间层系统。

1.2.2 脱机抽取

数据不从源系统直接抽取,而是从一个源系统以外的过渡区抽取。过渡区可能已经存在(例如数据库备份文件、关系数据库系统的重做日志、归档日志等),或者抽取程序自己建立。应该考虑以下的存储结构:

数据库备份文件(快照)
从库
导出文件

1.3.变化数据捕获(CDC)

增量抽取,也被称为变化数据捕获(Change Data Capture),简称CDC。假设一个数据仓库系统,在每天夜里的业务低峰时间从操作型源系统抽取数据,那么增量抽取只需要过去24小时内发生变化的数据。变化数据捕获亦是建立准实时数据仓库的关键技术。

2.数据转换

在数据转换中,提取、转换、加载(ETL)工具将转换和整合暂存区域中的原始数据,为目标数据仓库做好准备。数据转换阶段可能涉及以下类型的数据更改。

2.1基本数据转换

基本转换通过消除错误、清空数据字段或简化数据来提高数据质量。这些转换的示例如下。

2.1.1 数据清理

数据清理可消除错误并将源数据映射到目标数据格式,也即自由值编码。例如,将“Male”改成“M”,将空数据字段映射到数字 0,将数据值“Parent”映射到“P”,或将“Child”映射到“C”。

2.1.2 数据去重复

合并多个数据源的数据并删除重复记录。

2.1.3 数据格式修订

统一数据编码。格式修订会将字符集、测量单位和日期/时间值等数据转换为一致的格式。例如,一家食品公司可能有不同的配方数据库,其成分以千克和磅为单位。ETL 会将所有单位转换为磅。又如,性别字段,有些系统使用的是1和0,有些是"M"和"F",有些是"男’和"女",统一成"M"和"F"。

2.2 高级数据转换

高级转换使用业务规则来优化数据以便于分析。这些转换的示例如下。

2.2.1 推导

推导将业务规则应用于你的数据,以根据现有值计算新值。 例如,产品单价*购买数量=金额。

2.2.2联结

在数据准备中,联结将链接来自不同数据来源的相同数据。例如,查询多个关联表的数据。

2.2.3拆分

可在目标系统中将列或数据属性划分为多个列。例如,如果数据来源将客户名称保存为“Jane John Doe”,你可以将其拆分为名字、中间名和姓氏。

2.2.4 汇总和预聚合

汇总通过将大量数据值减少到较小的数据集中来提高数据质量。例如,汇总销售数据。

2.2.5 加密

可通过在数据流到目标数据库之前添加加密来保护敏感数据,以遵守数据法律或数据隐私。

3.数据装载

数据装载是指将转换好的数据保存到数据仓库中去。这步操作需要重点考虑两个问题:

一是数据装载的效率问题
二是一旦装载过程中途失败了,如何再次重复执行装载过程。

4.常见的 ETL 工具

4.1 老牌工具

Oracle的OWB和ODI
微软的SQL Server Integration Services
SAP的Data Integrator
IBM的InfoSphere DataStage、Informatica

4.2 开源工具

Apache Sqoop(已停止更新)
Kettle(仍在更新)
Maxwell (仍在更新)
阿里巴巴 Canal(仍在更新)
红帽的 debezium (仍在更新)
Apache Flink CDC (非常活跃)

PS:当前互联网公司都比较热衷于使用 Flink CDC,而传统企业都比较热衷于 Kettle。所以,您可以按需选择合适的 ETL 工具。

举报

相关推荐

0 条评论