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日志的一部分。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
机器学习/深度学习 自然语言处理 文字识别
【计算机视觉】CLIP:连接文本和图像(关于CLIP的一些补充说明)
我们推出了一个名为CLIP的神经网络,它可以有效地从自然语言监督中学习视觉概念。CLIP可以应用于任何视觉分类基准,只需提供要识别的视觉类别名称,类似于GPT-2和GPT-3的“零样本”功能。
|
存储 人工智能 测试技术
具备实时数据更新能力的大语言模型——Larimar
【2月更文挑战第30天】Larimar是一种新型的人工智能研究,旨在解决大型语言模型的知识更新问题。通过引入分布式情景记忆机制,类似人脑海马体的功能,Larimar能动态更新知识而无需完全重训。在实验中,它在事实编辑基准测试中展现出高准确性和速度提升,比基础LLM快4到10倍。Larimar的精巧架构包含编码器、解码器和自适应记忆模块,能在多种场景下有效应用。该模型的记忆操作包括写入、读取和生成,且在序列事实编辑任务中表现出色,防止信息遗忘。
545 2
具备实时数据更新能力的大语言模型——Larimar
|
Kubernetes 监控 网络性能优化
Kubernetes Pod 驱逐详解
QoS 等级为 Guaranteed 的 Pod 会在 QoS 等级为 Burstable 的 Pod 之前被驱逐吗?
2366 0
|
运维 监控 关系型数据库
自动化运维:编写基本的自动化脚本
自动化运维:编写基本的自动化脚本
345 1
|
设计模式 测试技术 持续交付
软件质量与维护
【8月更文第22天】在软件开发周期中,软件的质量和维护是非常重要的两个方面。软件质量直接影响着用户体验和系统的可靠性,而软件维护则是确保软件长期稳定运行的关键。本文将详细介绍软件质量的概念、软件质量模型、质量保证与质量控制的过程,以及软件维护的类型和过程,并探讨如何提高软件的可维护性。
691 0
|
安全 Java 数据库
Springboot 用session监听器统计在线用户数量
Springboot 用session监听器统计在线用户数量
1115 0
Springboot 用session监听器统计在线用户数量
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
【6月更文挑战第26天】Java IO流涵盖字节流与字符流。字节流(InputStream/OutputStream)处理数据单位为字节,适用于二进制和文本,而字符流(Reader/Writer)专注于文本,处理单位为字符,处理编码转换。字符流在字节流基础上添加编码处理,以装饰器模式实现。文件复制示例展示了两者区别:字节流直接复制所有数据,字符流处理字符编码。理解并选择适当流类型对优化程序至关重要。
337 0
|
canal 消息中间件 监控
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
2008 0
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
|
Unix Linux 应用服务中间件
Linux - chmod/chown命令与文件权限设置
Linux - chmod/chown命令与文件权限设置
470 0