ETL基础概念及要求详解
ETL基础概念及要求详解
- 概念
- ETL与ELT
- 数据湖与数据仓库
- ETL应用场景
- ETL具体流程及操作要求
- 抽取
- 清洗
- 转换
- 加载
- ETL设计模式
- SQL+脚本语言
- ETL工具设计
- ETL工具+SQL
- 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基础概念及要求详解
ETL基础概念及要求详解概念ETL与ELT数据湖与数据仓库ETL应用场景ETL具体流程及操作要求抽取清洗转换加载ETL设计模式SQL脚本语言ETL工具设计ETL工具SQLETL接口设计要求明确接口属性约定接口形式确定接口抽取方法规范接口格式概念 ETL即Extract(抽取)Tra…...
刷题记录:牛客NC23054华华开始学信息学 线段树+分块
传送门:牛客 题目描述: 题目latex公式较多,此处省略 输入: 10 6 1 1 1 2 4 6 1 3 2 2 5 7 1 6 10 2 1 10 输出: 3 5 26这道题让我体验到的线段树相对于树状数组的常数巨大 我们倘若直接用单点修改的话,如果D过小比如1那么我们足足要加n次,时间复杂度爆…...

二叉搜索树(查找,插入,删除)
目录 1.概念 2.性质 3.二叉搜索树的操作 1.查找 2.插入 3.删除(难点) 1.概念 二叉搜索树又称二叉排序树.利用中序遍历它就是一个有顺序的一组数. 2.性质 1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 2.若它的右子树不为空,则右子树上所有节点的值都…...
C# PictureEdit 加载图片
方法一: 如果要加载的图片的长宽比不是太过失衡, 1.可以改变picturebox的SizeMode属性为 PictureBoxSizeMode.StretchImage, 2.或者Dev控件 PictureEdit的SizeMode属性为Zoom。(zoom:缩放;clip剪短;stret…...

3种方法设置PDF“打开密码”,总有一种适合你
PDF文件是我们工作中经常用到的文件之一,对于重要的文件,设置“打开密码”是一种很好的保护方式。下面就来说说,设置PDF“打开密码”有哪三种方法? 方法一:在线网站加密 市面上有很多可以直接在线上加密PDF文件的产品…...
第三章 数据链路层(点到点的传输服务)-计算机网络(笔记)
计算机网络 第三章 数据链路层(点到点的传输服务) 数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型: (1)点到点信道。这种信道使用一对一的点到点通信方式。 (2)广…...
volatile关键字与CAS机制
volatile关键字 volatile关键字可以对类的成员变量与静态变量进行修饰 volatile关键字的作用 1.保证被修饰属性的可见性,被修饰后的属性如果被更改后其他线程是会立即可见的 2.保证被修饰属性的有序性,被修饰后的属性禁止修改指令执行的顺序 注意:volatile关键字不能保证属性…...

LeetCode题解 动态规划(四):416 分割等和子集;1049 最后一块石头的重量 II
背包问题 下图将背包问题做了分类 其中之重点,是01背包,即一堆物件选哪样不选哪样放入背包里。难度在于,以前的状态转移,多只用考虑一个变量,比如爬楼梯的阶层,路径点的选择,这也是能用滚动数组…...

【FFMPEG源码分析】从ffplay源码摸清ffmpeg框架(二)
demux模块 从前面一篇文章中可以得知,demux模块的使用方法大致如下: 分配AVFormatContext通过avformat_open_input(…)传入AVFormatContext指针和文件路径,启动demux通过av_read_frame(…) 从AVFormatContext中读取demux后的audio/video/subtitle数据包…...

PCIE 学习笔记(入门简介)
PCIE 学习笔记书到用时方恨少啊,一年前学PCIE的笔记,再拿出来瞅瞅。发到博客上,方便看。PCIE基础PCIE和PCI的不同PCIE采用差分信号传输,并且是dual-simplex传输——每条lane上有TX通道和RX通道,所以每条lane上的信号是…...

锁的优化机制了解嘛?请进!
点个关注,必回关 文章目录自旋锁:自适应锁:锁消除:锁粗化:偏向锁:轻量级锁:从JDK1.6版本之后,synchronized本身也在不断优化锁的机制,有些情况下他并不会是一个很重量级的…...

5.点赞功能 Redis
Redis(1)简介Redis 是一个高性能的 key-value 数据库原子 – Redis的所有操作都是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。非关系形数据库数据全部存在内存中,性能高。(2&#…...
Java序列化和反序列化(详解)
一、理解Java序列化和反序列化 Serialization(序列化):将java对象以一连串的字节保存在磁盘文件中的过程,也可以说是保存java对象状态的过程。序列化可以将数据永久保存在磁盘上(通常保存在文件中)。 deserialization(反序列化):将保存在磁…...

【刷题篇】链表(上)
前言🌈前段时间我们学习了单向链表和双向链表,本期将带来3道与链表相关的OJ题来巩固对链表的理解。话不多说,让我们进入今天的题目吧!🚀本期的题目有:反转单链表、链表的中间结点、合并两个有序链表反转单链…...
ConcurrentHashMap设计思路
ConcurrentHashMap设计思路Hashtable vs ConcurrentHashMapHashtable vs ConcurrentHashMap Hashtable 对比 ConcurrentHashMap Hashtable 与 ConcurrentHashMap 都是线程安全的 Map 集合Hashtable 并发度低,整个 Hashtable 对应一把锁,同一时刻&#…...

Unity基于GraphView的行为树编辑器
这里写自定义目录标题概述基于GitHub上:目前这只是做了一些比较基础的功能节点开发,仅仅用于学习交流,非完成品。项目GitHub连接:[https://github.com/HengyuanLee/BehaviorTreeExamples](https://github.com/HengyuanLee/Behavio…...

网络流量传输MTU解析
基本概念 以太网的链路层对数据帧的长度会有一个限制,其最大值默认是1500字节,链路层的这个特性称为MTU,即最大传输单元 Maximum Transmission Unit,最大传输单元,指的是数据链路层的最大payload,由硬件网…...
30个HTML+CSS前端开发案例(四)
30个HTMLCSS前端开发案例(17-20)鼠标移入文字加载动画效果代码实现效果鼠标悬停缩放效果实现代码效果鼠标移入旋转动画实现代码效果loding加载动画实现代码效果资源包鼠标移入文字加载动画效果 代码实现 <!DOCTYPE html> <html><head&g…...
《TPM原理及应用指南》学习 —— TPM执行环境3
本文对应《A Practical Guide to TPM 2.0 — Using the Trusted Platform Module in the New Age of Security》的第6章第3节。 6.3 Summary —— 总结 Now that you have an execution environment (or maybe both of them) set up, you’re ready to run the code samples f…...

实验名称:经典同步问题:生成者与消费者问题
实验名称:经典同步问题:生成者与消费者问题 相关知识 信号量 信号量是用来协调不同进程间的数据对象,可用来保护共享资源,也能用来实现进程间及同一进程不同线程间的进程同步。分为二值信号灯和计算信号灯两种类型。 进程与线…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...