数据仓库的一个问题,ETL与数仓分层有什么关系

数据仓库的一个问题,ETL与数仓分层有什么关系,第1张

显然不对。

百度百科可以看下ETL定义:ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

这个源端到目的端不是说数据库之间的抽取才叫源端到目的端。数据库内部的数据加工也是啊,贴源层的数据到明细层也是,明细层到汇总层也是。而且你理解的ODS层之前的ETL过程实际就是抽取的过程,那么还有转换和清洗呢?清洗不仅仅是脏数据的清洗,也包括业务逻辑上的清洗,转换也是一样,不仅仅是映射关系的转换,也包含了业务逻辑的整合汇总等等。

实际上把抽过来的数据最终整合成使用方可方便使用的数据的整个过程都可以叫做ETL。

而目前的市场上来说职位上叫ETL或者数仓已经没有很明显的区分了,特别是互联网行业。我招一个ETL实际上就是干数仓的活,招一个数仓那你实际上也包含了ETL的能力。

ETL服务器是数据仓库中的重要组成部分,其英文名Extract, Transform, Load(提取、转换、加载)缩写的首字母也代表了其主要功能。ETL服务器的作用可以概括如下:

数据提取(Extract):ETL服务器负责从不同的数据源中提取数据,例如关系型数据库、文件、Web服务、第三方数据等。数据提取需要考虑到数据的有效性、完整性、一致性和准确性等方面。

数据转换(Transform):ETL服务器负责对提取的数据进行清洗、校验、去重、转换、合并和计算等 *** 作,以满足数据仓库的数据质量和分析需求。数据转换需要考虑到数据格式、数据类型、数据结构、数据粒度等方面。

数据加载(Load):ETL服务器负责将经过转换后的数据加载到数据仓库中,以供后续的数据分析、数据挖掘和决策支持等应用。数据加载需要考虑到数据的性能、可用性、安全性和完整性等方面。

总之,ETL服务器在数据仓库中的作用是将分散、异构、复杂的数据源整合成一致、可信、易用的数据集合,为企业决策提供高质量、可靠、及时的数据支持。

ETL是一个过程,就是数据的抽取,转换,加载,现在中间都有个数据清洗的过程。ODS通俗将是ETL后最先进入的一个数据仓库,之前的数据可能包含DB2,SQL SERVER,ORACLE等不同类型的数据源,通过ETL后,进入统一的数据库中,这个库就是ODS,里面只是存放了清洗过后的数据,格式,编码等统一。后面会根据不同的行业和需求,进SOR数据仓库,再向下游提供数据,期间会有各种逻辑啊,修改自己需要的数据,打乱原有表结构重新组合。我所知道的就这些,希望对你有帮助

ETL分别是“Extract”、“ Transform” 、“Load”三个单词的首字母缩写也就是“抽取”、“转换”、“装载”,但我们日常往往简称其为数据抽取。\x0d\ETL是BI/DW(商务智能/数据仓库)的核心和灵魂,按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。\x0d\ETL包含了三方面:\x0d\“抽取”:将数据从各种原始的业务系统中读取出来,这是所有工作的前提。\x0d\“转换”:按照预先设计好的规则将抽取得数据进行转换,使本来异构的数据格式能统一起来。\x0d\“装载”:将转换完的数据按计划增量或全部导入到数据仓库中。\x0d\与ETL相比,ELT的优点是转换的同时可以引用大量的数据。 缺点是可能仅仅抽取和装载了数据,跳过了转换过程。\x0d\有些ETL工具是先将数据从源抽取(E),装载(L)到目标数据库,再在目标数据库做转换(T),所以有些人给这类工具一个专门的名称叫ELT。

技术方面:需要学习使用数据源、目标端工具的基本使用(如 oracle MySQL hive等);需要学习etl工具的安装配置常用错误解决(如 kettle DataStage infa sqoop datax等)

理论方面:懂得数仓分层架构,维度建模等。

从ETL的字面来看,它主要包含三大阶段,分别是数据抽取、数据转换、数据加载。

1数据抽取

这个阶段的主要目标是汇总多种数据源,为下一步的转换做准备。

2数据转换

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

3数据加载

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

了解了ETL这部分的工作主要做什么,接下来再来说作为ETL工程师需要具备哪些技能,这些也就是需要学习的重点——

1、精通SQL语言,具备存储过程开发能力,能熟练进行SQL查询优化;

2、熟悉Hive数据仓库设计,了解数据仓库模型及思想、维度建模思想,了解数据仓库;

3、熟悉Hadoop、Spark、Flink、Kafka等相关技术;

4、熟练Python、Java中至少一种语言;

5、熟悉Mysql、Nosql等常见数据库。

ETL工程师又叫数据库工程师。

ETL工程师的主要工作内容有:从事系统编程、数据库编程与设计。ETL是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库,数据仓库技术没有严格的数学理论基础,它更面向实际工程应用。

所以从工程应用的角度来考虑,按着物理数据模型的要求加载数据并对数据进行一些系列处理,处理过程与经验直接相关,同时这部分的工作直接关系数据仓库中数据的质量,从而影响到联机分析处理和数据挖掘的结果的质量。

职业前景

从业务角度讲,随着数据应用的日益丰富,不同平台、系统的相互大批量数据交互成常态,仅仅满足于采集数据已经不适应业务需要,还需要能够为数据的目的端落地提供支撑,ETL工程师需要一个端到端的更适应业务需要的数据交换系统。

从技术角度讲,ETL做一定的扩展可以升级为兼具交换能力,两者有传承,可以实现平滑过渡,但交换却要考虑用另一个工具实现,同时未来大数据平台组件将异常丰富,相互之间的数据交换将是常态,必要要有更高级别的交换工具满足这些需求。

对于做过 BI 开发的朋友,ETL 并不陌生,只要涉及到数据源的数据抽取、数据的计算和处理过程的开发,都是 ETL,ETL 就这三个阶段,Extraction 抽取,Transformation 转换,Loading 加载。

从不同数据源抽取数据 EXTRACTION ,按照一定的数据处理规则对数据进行加工和格式转换 TRASFORMATION,最后处理完成的输出到目标数据表中也有可能是文件等等,这个就是 LOADING。

再通俗一点讲,ETL 的过程就跟大家日常做菜一样,需要到菜市场的各个摊位买好菜,把菜买回来要摘一下,洗一洗,切一切最后下锅把菜炒好端到饭桌上。菜市场的各个摊位就是数据源,做好的菜就是最终的输出结果,中间的所有过程像摘菜、洗菜、切菜、做菜就是转换。

在开发的时候,大部分时候会通过 ETL 工具去实现,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微软 SQL SERVER 里面的 SSIS 等等,在结合基本的 SQL 来实现整个 ETL 过程。

也有的是自己通过程序开发,然后控制一些数据处理脚本跑批,基本上就是程序加 SQL 实现。

哪种方式更好,也是需要看使用场景和开发人员对那种方式使用的更加得心应手。我看大部分软件程序开发人员出身的,碰到数据类项目会比较喜欢用程序控制跑批,这是程序思维的自然延续。纯 BI 开发人员大部分自然就选择成熟的 ETL 工具来开发,当然也有一上来就写程序脚本的,这类 BI 开发人员的师傅基本上是程序人员转过来的。

用程序的好处就是适配性强,可扩展性强,可以集成或拆解到到任何的程序处理过程中,有的时候使用程序开发效率更高。难就难在对维护人员有一定的技术要求,经验转移和可复制性不够。

用 ETL 工具的好处,第一是整个 ETL 的开发过程可视化了,特别是在数据处理流程的分层设计中可以很清晰的管理。第二是链接到不同数据源的时候,各种数据源、数据库的链接协议已经内置了,直接配置就可以,不需要再去写程序去实现。第三是各种转换控件基本上拖拉拽就可以使用,起到简化的代替一部分 SQL 的开发,不需要写代码去实现。第四是可以非常灵活的设计各种 ETL 调度规则,高度配置化,这个也不需要写代码实现。

所以在大多数通用的项目中,在项目上使用 ETL 标准组件开发会比较多一些。

ETL 从逻辑上一般可以分为两层,控制流和数据流,这也是很多 ETL 工具设计的理念,不同的 ETL 工具可能叫法不同。

控制流就是控制每一个数据流与数据流处理的先后流程,一个控制流可以包含多个数据流。比如在数据仓库开发过程中,第一层的处理是ODS层或者Staging 层的开发,第二层是DIMENSION维度层的开发,后面几层就是DW 事实层、DM数据集市层的开发。通过ETL的调度管理就可以让这几层串联起来形成一个完整的数据处理流程。

数据流就是具体的从源数据到目标数据表的数据转换过程,所以也有 ETL 工具把数据流叫做转换。在数据流的开发设计过程中主要就是三个环节,目标数据表的链接,这两个直接通过 ETL 控件配置就可以了。中间转换的环节,这个时候就可能有很多的选择了,调 SQL 语句、存储过程,或者还是使用 ETL 控件来实现。

有的项目上习惯使用 ETL 控件来实现数据流中的转换,也有的项目要求不使用标准的转换组件使用存储过程来调用。也有的是因为数据仓库本身这个数据库不支持存储过程就只能通过标准的SQL来实现。

我们通常讲的BI数据架构师其实指的就是ETL的架构设计,这是整个BI项目中非常核心的一层技术实现,数据处理、数据清洗和建模都是在ETL中去实现。一个好的ETL架构设计可以同时支撑上百个包就是控制流,每一个控制流下可能又有上百个数据流的处理过程。之前写过一篇技术文章,大家可以搜索下关键字 BIWORK ETL 应该在网上还能找到到这篇文章。这种框架设计不仅仅是ETL框架架构上的设计,还有很深的ETL项目管理和规范性控制器思想,包括后期的运维,基于BI的BI分析,ETL的性能调优都会在这些框架中得到体现。因为大的BI项目可能同时需要几十人来开发ETL,框架的顶层设计就很重要。

以上就是关于数据仓库的一个问题,ETL与数仓分层有什么关系全部的内容,包括:数据仓库的一个问题,ETL与数仓分层有什么关系、etl服务器的作用、谁有关于ETL、ODS、数据库技术架构的形象一点的解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9531654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存