数据处理中的ETL概念
时间:2023-12-12 17:37:00
ETL概念
ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)这个过程。构建数据仓库的重要组成部分。用户从数据源中提取所需的数据,最终根据预定义的数据仓库模型将数据加载到数据仓库中。
一、数据提取(Extract)
这部分需要在研究阶段做很多工作。首先,我们应该弄清楚数据来自几个业务系统,每个业务系统的数据库服务器运行什么DBMS,手工数据是否存在,手工数据量有多大,是否存在非结构化数据等,只有在收集这些信息后才能进行数据提取的设计。
1.与存储DW数据源处理方法与数据库系统相同
这种数据源在设计上更容易。一般来说,DBMS(SQLServer、Oracle)提供数据库链接功能DW建立数据库服务器与原业务系统之间的直接链接Select直接访问句子。
2、对于与DW不同数据源数据库系统的处理方法
一般来说,这类数据源也可以通过ODBC建立数据库链接的方式 SQLServer和Oracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls然后导入这些源系统文件ODS另一种方法是通过程序接口完成。
3.文件类型数据源(.txt,.xls)
业务人员可以使用数据库工具将数据导入指定的数据库,然后从指定的数据库中提取。或者也可以使用工具,例如SQLServer2005的SSIS导入平面数据源和平面目标等服务组件ODS中去。
4.增量更新问题
对于数据量大的系统,必须考虑增量提取。一般来说,业务系统会记录业务发生的时间。我们可以用它作为增量标志。每次提取前首先判断ODS记录最大时间,然后根据此时间到业务系统获取大于此时的所有记录。使用业务系统的时间戳,一般来说,业务系统没有或部分时间戳。
二、数据清洗转换(Cleaning)
一般来说,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。
1、数据清洗
数据清洗的任务是过滤不符合要求的数据,将过滤结果交给业务主管部门,确认是否过滤或由业务单位进行修改。不符合要求的数据主要包括不完整的数据、错误的数据和重复的数据。
(1)不完整的数据:
这类数据主要是由于供应商名称、分公司名称、客户区域信息缺失、业务系统中失、业务系统中主表与明细表不匹配等。过滤这类数据,根据缺失的内容写入不同的内容Excel向客户提交文件,要求在规定的时间内完成。完成后写入数据仓库。
(2)错误数据:
造成这种错误的原因是业务系统不完善,在接收输入后没有判断直接写入背景数据库,如数值数据输入全角数字字符、字符串数据、日期格式不正确、日期越界等。这类数据也应该分类。对于类似于全角字符和数据前后不可见字符的问题,只能写SQL找出句子的方式,然后要求客户在业务系统修改后提取。日期格式不正确或日期越界的错误会导致ETL运行失败需要去业务系统数据库SQL挑出方法,交业务主管部门限期修正,修正后再提取。
(3)重复数据:
这种情况发生在这类数据中——特别是在维表中—导出重复数据记录的所有字段,让客户确认和整理。
数据清理是一个重复的过程,不可能在几天内完成。只有不断发现和解决问题。
对于是否过滤,是否修改一般需要客户确认,过滤数据,写入Excel在数据表中写入文件或过滤数据ETL在开发的早期阶段,过滤数据的电子邮件可以每天发送给业务单位,鼓励他们尽快纠正错误,也可以作为未来验证数据的依据。需要注意的是,不要过滤掉有用的数据,仔细验证每个过滤规则,并要求用户确认。
三、数据转换(Transform)
数据转换的任务主要是不一致的数据转换、数据粒度转换和一些业务规则的计算。
(1)不一致数据转换:
这个过程是一个整合不同业务系统中相同类型数据的过程。例如,同一供应商在结算系统中的编码是XX0001,而在CRM中编码是YY0001,所以抽取后统一转换成编码。
(2)数据粒度转换:
业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。
(3)计算商业规则:
不同的企业有不同的业务规则和数据指标。有时这些指标不能通过简单的加减来完成。此时需要ETL计算这些数据指标后,存储在数据仓库中进行分析和使用。
四、数据加载(Load)
将数据加载到目的地,如数据仓库。通常的做法是将处理过的数据写入特定格式(如parquet、csv等)文件,然后将文件挂载到指定的表分区。有些表的数据量很小,不使用分区表,而是直接生成最终的数据表。
ETL开发工作流程
[外链图片转存失败,源站可能有防盗链机制,建议保存图片并直接上传(img-KLb3EOgR-1646220689782)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/31b825328c4043349b02b8b273a0309f~tplv-k3u1fbpfcp-zoom-1.image “image”)]
数据仓库和ODS并存方案
经调查发现,一般有三种解决方案:
1、业务数据 - ODS - 数据仓库
[外链图片转存失败,源站可能有防盗链机制,建议保存图片并直接上传(img-4lXHi5rY-1646220689783)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/139f20ff618c441581895a02fbeca103~tplv-k3u1fbpfcp-zoom-1.image “image”)]
优点:
这样做的好处是ODS数据与数据仓库数据高度统一;开发成本低,至少开发应用一次ODS即可;可见ODS阿里巴巴的数据部门也是如此。
缺点:
数据仓库所需的所有数据都需要走ODS,那么ODS必然会影响系统的灵活性,甚至不利于扩展和灵活性差
2、OB - ODS
优点:
结构简单。一般来说,初始数据分析团队结构相似。例如,我们的部门应该归结为这一类
缺点:
所有的数据都归结为这样ODS,长期数据决策分析能力差,软硬件成本高,模块划分不清楚,通用性差
三、数据仓库和ODS并行
[外链图片转存失败,源站可能有防盗链机制,建议保存图片并直接上传(img-pmX9vOfT-1646220689783)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/230c070e4123457895b15e064c9b5108~tplv-k3u1fbpfcp-zoom-1.image “image”)]
由此可见,该模型兼顾了上述各自的优点,并且易于扩展,ODS每个数据仓库都有自己的优势,形成互补的优势!它可以解决互联网公司遇到的快速变化和快速发展的特点!特别是对于那些刚刚建立了数据团队和数据开发人员短缺的公司,您可以尝试使用这个数据架构来解决问题!
Data Mart 数据集市
一些独立于数据仓库的数据,也可以称为部门数据或主题数据(subjectarea)。在数据仓库的实施过程中,我们通常可以从一个部门的数据市场开始,然后用几个数据市场形成一个完整的数据仓库。需要注意的是,在实施不同的数据市场时,必须兼容相同意义的字段定义,以便后实施数据仓库时才不会造成大麻烦。