ETL基本概念

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: ETL基本概念

1,ETL

   ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。它的主要作用是将企业中分散、非完全结构化、标准不统一的各种数据,整合到一起,形成企业级统一数据仓库,为企业的分析决策提供有质量保证的数据源。

2,ETL过程

  主要包含三大阶段,分别是数据抽取、数据转换、数据加载。

3,ETL流程--数据抽取

3.1 关系型数据库

    关系型数据库数据高度结构化、数据量不算特别大、数据更新相对频繁、数据质量较高、数据获取比较方便,分为离线与实时

    离线抽取,应用场景是对短时间内的更新不敏感,只关心一段时间后的最终状态,一般是固定周期定时抽取。抽取方法,可以采用快照的方式,对整个表做全表快照;或者是采用基于时间字段的增量抽取,但是需要对这个字段的更新场景非常了解。

   实时抽取,通常的应用场景是对数据的最新状态非常敏感,当有新数据插入或者旧数据更新时,需要及时抽取。抽取方法有很多,其中常用的一种是基于消费数据库binlog的方式,如阿里开源的canal。

3.2 服务端程序日志文件

   各种日志数据混杂在一起(需要过滤出自己需要的)、数据格式比较多样(格式可能不统一)、数据量相对较大。对于这类数据,通常的方法就是过滤抽取。抽取方法,可以使用flume监控文件目录,或者使用FileBeat实时监控文件内容变化。

3.3 客户端用户行为数据

   数据量非常大、数据源非常分散、数据质量参差不齐、数据结构化程度高。针对这种数据,通常的抽取方法,就是专门设计一个数据收集系统来处理收集数据的问题。

4,ETL流程--数据转换

   ETL的核心环节,也是最复杂的环节。它的主要目标是将抽取到的各种数据,进行数据的清洗、格式的转换、缺失值填补、剔除重复等操作,最终得到一份格式统一、高度结构化、数据质量高、兼容性好的数据,为后续的分析决策提供可靠的数据支持。

4.1 ETL流程--数据清洗

   清洗掉脏数据,以免混入正常数据中,造成数据质量下降,引导有偏差的错误决策。通常的做法有,md5校验、关键字段检查、格式类型一致性检查、无效性检查等。

(1)md5校验通常用于通过公网传输的数据,为防止数据被篡改,需要比对md5值来保证数据的安全性,没能通过md5检验比对的数据将被视为脏数据过滤掉。

(2)关键字段检查,是指在一条数据记录中,非常关键的字段,如果其值不合法,或者类型不对,将被视为非法数据。比如,识别用户行为的字段,其值不在规定取值范围内时,将无法识别具体是做了什么操作,将被视为非法数据清洗掉。

(3)格式类型一致性检查,就是检查一条数据记录的整体格式或者重要字段的类型是否符合规范,如果不符合,同样也是没办法处理,只能作为脏数据处理掉。例如,不合法的日期格式。

(4)无效性检查,通常是比较严格的过滤方法,它主要目的是为了保证数据的高可靠性,通常是事先规定好数据的可信范围,不满足的将被视为不可信的无效数据。

4.2 格式转换

    对数据格式做统一化规范化处理,方便后续的分析作业能够更好地使用数据。一般根据源数据格式和目标格式的不同,会有不同的实现。一般包含记录格式转换和字段格式转换。记录格式转换,就是最终将一条记录转换成什么格式,例如转成json格式或csv格式。字段格式转换是对字段值进行格式的统一化处理,如将长整型时间戳全部转化为人类可读的日期格式。

4.3 错误数据处理

   这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。

4.4 缺失值填补

     针对数据中缺失的空位进行填充,以保证数据类型的一致性或完整性。例如,对于一个数量类的整数型字段,当其值缺失时,可以考虑填充0。这里要注意的是缺失值填充要相对谨慎一些才行,因为这个过程相当于是在修改原始数据,一定要确保填充的值对后续的分析不会造成误导性的影响。

4.5 剔除重复数据

   防止数据重复上传,造成误判。剔除重复数据,是非常有必要的,也是保证数据质量的前提。

   数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。

4.6 增加必要信息

   对数据增加一些追踪信息或者是生成一些必要的标识字段。有些字段是和具体的业务强相关的,也有一些通用的字段。比如,源数据里只有长整型时间戳字段,可以增加可读性比较高的日期时间字段,还可以增加数据来源字段便于追踪数据血缘关系。

5,ETL流程--.数据加载

    把数据加载至目的地,比如数据仓库中。通常的做法是,将处理好的数据写成特定格式(如parquet、csv等)的文件,然后再把文件挂载到指定的表分区上。也有些表的数据量很小,不会采用分区表,而是直接生成最终的数据表。

6,ETL--日志处理

(1)执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。

(2)错误日志,当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。

(3)总体日志,只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9天前
|
消息中间件 存储 SQL
ClickHouse实时数据处理实战:构建流式分析应用
【10月更文挑战第27天】在数字化转型的大潮中,企业对数据的实时处理需求日益增长。作为一款高性能的列式数据库系统,ClickHouse 在处理大规模数据集方面表现出色,尤其擅长于实时分析。本文将从我个人的角度出发,分享如何利用 ClickHouse 结合 Kafka 消息队列技术,构建一个高效的实时数据处理和分析应用,涵盖数据摄入、实时查询以及告警触发等多个功能点。
21 0
|
2月前
|
存储 SQL Cloud Native
Hologres 的架构设计与工作原理
【9月更文第1天】随着大数据时代的到来,实时分析和处理数据的需求日益增长。传统的数据仓库在处理大规模实时数据分析时逐渐显露出性能瓶颈。为了解决这些问题,阿里巴巴集团研发了一款名为 Hologres 的新型云原生交互式分析数据库。Hologres 能够支持 SQL 查询,并且能够实现实时的数据写入和查询,这使得它成为处理大规模实时数据的理想选择。
98 2
|
6月前
|
资源调度 监控 Java
实时计算 Flink版产品使用合集之如何使用CEP库进行数据处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
存储 SQL 调度
Hudi基本概念
Hudi基本概念
72 0
|
分布式计算 监控 算法
流式计算概述|学习笔记
快速学习流式计算概述
|
消息中间件 分布式计算 BI
ETL和ELT到底有啥区别???
ETL和ELT到底有啥区别???
|
数据采集 存储 SQL
ETL基础知识,看完这一篇应该够了!
ETL基础知识,看完这一篇应该够了!
1209 1
|
数据采集 存储 SQL
还不了解ETL?看看这篇文章吧!
还不了解ETL?看看这篇文章吧!
249 0
|
数据采集 canal SQL
一篇文章搞懂数据仓库:常用ETL工具、方法
一篇文章搞懂数据仓库:常用ETL工具、方法
一篇文章搞懂数据仓库:常用ETL工具、方法
|
数据采集 存储 SQL
摸鱼不如来了解一下--数据处理中的ETL概念
ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
263 0
下一篇
无影云桌面