草庐IT

ETL基础概念及要求详解

Lin-CT 2023-04-12 原文

ETL基础概念及要求详解

概念

ETL即Extract(抽取)Transform(转换)Load(装载)的过程,如下图,同时也包括数据清洗的部分,是数据从源端到目标端的一个数据处理的过程,是构建数据仓库的重要一环,但不局限于构建数据仓库其他BI(商业智能)的设计和开发数据分析平台也经常用到ETL。

在进行ETL作业时按作业进行的加工顺序又分为ETL和ELT。

ETL与ELT

ETL可以通过采用单独的硬件服务器分担数据库系统的负载,相对于ELT架构可以实现更为复杂的数据转化逻辑,同时与底层的数据库数据存储无关。

ELT先加载后装换,如下图所示,其充分利用数据库引擎来实现系统的可扩展性(当数据加工过程在晚上时,可以充分利用数据库引擎的资源),也可以保持所有的数据始终在数据库当中,避免数据的加载和导出,从而保证效率,提高系统的可监控性。同时可以根据数据的分布情况进行并行处理优化,并可以利用数据库的固有功能优化磁盘I/O。通过对相关数据库进行性能调优,ELT过程获得3到4倍的效率提升比较容易。

数据湖与数据仓库

简单来说,数据湖是所有未经处理的源数据集合,可以是非结构化的,数据仓库是经过结构化、过滤等处理后的数据集合。
数据湖:Data Lake,可简写为DL,是一个数据存储库。现在企业的数据仓库都会通过分层的方式将数据存储在文件夹、文件中,而数据湖使用的是平面架构来存储数据。我们需要做的只是给每个数据元素分配一个唯一的标识符,并通过元数据标签来进行标注。当企业中出现业务问题时,可以从数据湖中查询数据,然后分析业务对应的那一小部分数据集来解决业务问题。

数据仓库:Data Warehouse,可简写为DW或DWH。数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。主要包括以下三类:
(1)企业数据仓库 (EDW) :充当帮助企业内决策支持服务的主数据库。EDW 提供对跨组织信息的访问,一种数据表示的集成方法,并且可以运行复杂的查询。
(2)操作数据存储 (ODS):ODS 实时刷新并用于运行例行任务,包括存储员工记录。存储在这里的数据可以被清理,冗余检查和解决。它还可以用于整合来自不同来源的对比数据,以便业务运营、分析和报告能够顺利运行。
(3)数据集市:数据集市是数据仓库的子集,因为它存储特定部门、地区或业务单位的数据。数据集市有助于增加用户响应并减少分析数据量。此处的数据存储在 ODS 中,然后ODS将其发送到 EDW,并在其中存储和使用。

ETL应用场景

数据的生命周期如下,ETL技术贯穿其整个生命周期,而无论是数据是平台(数据仓库平台、数据交换平台、大数据平台、历史数据平台)还是数据分析过程(数据挖掘、模拟实验室、传统BI、推荐引擎)都逃离不了数据的生命周期六过程,因此都需要应用ETL技术。

ETL具体流程及操作要求

抽取

在数据抽取中需要考虑以下问题:
1.数据是从几个业务系统中来?
2.是否存在手工数据?
3.各业务系统数据库DBMS(数据库管理系统)是什么?(考虑同构、异构)
4.是否存在非结构化数据?
5.能否支持增量抽取?
6.是否支持工具抽取?

清洗

数据清洗主要清洗三类不符合要求的数据:
1.不完整的数据(字段缺失)
2.错误的数据(乱码、字段定义与内容不符)
3.重复的数据

要求:反复清洗、发现问题、解决问题(是否过滤或修正一般要求与客户确认)

转换

数据转换主要包含三类:
1.代码标准化

2.数据粒度转化
数据粒度及数据的细化程度,例如省县乡三级分划,只到省级的数据相比于到乡级的数据细化程度更低,数据粒度大。

ETL过程中依据需求可能需要将小粒度的业务数据聚合为大粒度的数据。

3.根据业务规则计算
根据业务规则(映射关系、公式等)将业务系统中数据转化为符合需求的数据。

加载

加载,即将源系统的数据加载到目标数据库对应表中,并根据不同的数据库平台采用不同的加载工具,同时根据不同的业务需求、接口形式设计不同的加载算法。

ETL设计模式

SQL+脚本语言

应用SQL语言实现业务逻辑的表达并应用脚本语言(shell、perl、python等)将SQL语言封装为可执行脚本。

优势:开发灵活、能够跨平台使用、成本低
不足:开发人员要求高、不易维护、规范性差。

ETL工具设计

应用ETL工具的组件进行相关设计,常用ETL工具如:Kettle、Powercenter、Datastage、Talend等。

优势:可视化、高效、易维护
不足:成本高、灵活性差、复杂场景不易实现

ETL工具+SQL

结合使用ETL工具与SQL,根据工具特性和业务逻辑的复杂度平衡设计,在异构平台使用ETL工具快速抽取各业务系统数据,复杂的业务转换阶段采用SQL解决,使ETL整个处理过程达到最优。

优势:开发灵活、开发效率高、易维护、可视化、规范、标准
不足:成本较高

ETL接口设计要求

接口即ETL的最终产出结果,可以以表、文件、信息等方式存在。

明确接口属性

1.事件类表:用于记录交易等动作的发生。在源系统中会新增、大部分不会修改和删除,少量表存在删除情况。如定期存款登记簿。
2.状态类表:用于记录数据信息的状态。在源系统中会新增、修改,也存在删除的情况。如客户信息表。
3.码表及参数表:用于记录源系统中使用到的数据代码和参数。

约定接口形式

接口表现形式:表/文件/消息(流)

确定接口抽取方法

抽取方法:工具抽取/脚本抽取
抽取机制:增量/全量
抽取频度:日/周/月/年
抽取约束:并发限制/抽取时机/数据库确认

规范接口格式

1.文件字符集编码:—个业务系统的接口编码只有一种编码风格:UTF8或 ASCII
2.分隔符:字段与字段间的分隔符建议最好采用字段内容不包含的分隔符
3.文件扩展名:文件的后缀通常应考虑是否压缩或非压缩情况
4.文件传输方式:上下游间数据传递方式确定好︰如FTP/消息队列
5.接口通知机制规范:标志文件/消息通知

有关ETL基础概念及要求详解的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. ruby - 使用 postgres.app 在 rvm 下要求 pg 时出错 - 2

    我正在使用Postgres.app在OSX(10.8.3)上。我已经修改了我的PATH,以便应用程序的bin文件夹位于所有其他文件夹之前。Rammy:~phrogz$whichpg_config/Applications/Postgres.app/Contents/MacOS/bin/pg_config我已经安装了rvm并且可以毫无错误地安装pggem,但是当我需要它时我得到一个错误:Rammy:~phrogz$gem-v1.8.25Rammy:~phrogz$geminstallpgFetching:pg-0.15.1.gem(100%)Buildingnativeextension

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  6. ruby-on-rails - Nokogiri 要求 Ruby 版本 < 2.3 - 2

    我正在尝试让Rails在Windows10上运行。我正在使用Ruby2.3.0和Rails4.2.6,并且暂时使用Nokogiri1.6.3。当我尝试运行railsnewdemo时,它返回错误:Anerroroccurredwhileinstallingnokogiri(1.6.7.2),andBundlercannotcontinue.Makesurethat`geminstallnokogiri-v'1.6.7.2'`succeedsbeforebundling.当我运行geminstallnokogiri-v'1.6.7.2时,我得到:ERROR:Errorinstallingn

  7. ruby - 根据要求使用特定的 VCR 磁带 - 2

    情况:使用Rspec、FactoryGirl和VCR测试Rails应用程序。每次创建用户时,都会通过Stripe的API创建关联的Stripe客户。测试时,添加VCR.use_cassette或describe"...",vcr:{cassette_name:'stripe-customer'}do...到涉及用户创建的每个规范。我的实际解决方案如下:RSpec.configuredo|config|config.arounddo|example|VCR.use_cassette('stripe-customer')do|cassette|example.runendendend但这是

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  10. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

随机推荐