增量|如何从0-1搭建ETL?

编辑导语:通过ETL,我们可以将分散且凌乱的数据整合到一起,进而帮助企业利用已有数据驱动决策。而ETL产品的关键点就在于抽取、转换与加载。具体应该如何设计一款ETL产品?本篇文章里,作者介绍了从0-1搭建ETL产品的策略方法,一起来看一下。
增量|如何从0-1搭建ETL?
文章插图
【 增量|如何从0-1搭建ETL?】领导提了个小需求,公司做的系统越来越多了,数据也越来越多,想做一个属于公司内部的ETL工具做数据清洗并归集。你无从下手,或许本文可以帮助你。
一、ETL是什么?ETL( Extract-Load-Transform)是将业务系统的数据抽取到一个中间数据库里,在里面经过各种规则的转换之后,装载到数据仓库的过程。目的是将分散、凌乱、标准不统一的数据整合到一起,帮助企业将沉睡的数据最大价值利用起来。
一般常见的做法包括ETL或者ELT,一个是先抽取到中间库转换好后再装载到目标数据库,另一个是将数据抽取并装载到目的端,利用目的端的数据处理能力完成数据转换工作。
通常越大量的数据、复杂的转换逻辑、目的端为较强运算能力的数据库,越偏向使用ELT,以便运用目的端数据库的处理能力。
二、怎么设计ETL?其实这款产品的设计很简单,根据该产品的名称,我们就可以把功能模块分为三部分:抽取、转换、加载。
1. 功能点一:抽取设计数据抽取功能,需要解决几个问题:一是需要确定从哪些源系统进行数据抽取;二是数据抽取的方法,是主动抽取还是由源系统推送?是增量抽取还是全量抽取?三是数据抽取的频次,是按照每日抽取还是按照每月抽取。
1)数据库连接
首先我们需要把数据从业务系统中抽取出来,从哪些源系统抽取,就要知道这个源业务系统放数据的数据库是哪一个,想要人家的东西就要知道人家放东西的地址在哪,也就是数据库连接。
数据库的类型大致可分为三种:关系型数据库、非关系型数据库(NoSQL)、键值数据库,目前企业最常用的关系型数据库Oracle、MySQL,非关系型数据库BigTable、MongoDB等,可根据业务情况增添所需要的数据库种类。
增量|如何从0-1搭建ETL?
文章插图

  • 数据源名称:帮助用户在操作数据源连接时,给所连接的数据源起个名称,便于后续的选择使用;
  • 数据源描述:便于管理和记忆数据源的信息;
  • 数据库地址:想要连接数据库的地址;
  • 端口号:一台计算机可以提供多个服务,端口号就类似于这些服务的门牌号。例如:在一台电脑上,浏览网页服务、连接服务器服务、微信服务、钉钉服务等,每一项都对应一个端口号,只有通过这些端口号,客户端才能真正的访问到这些服务。MySQL端口号一般默认是3306;
  • 数据库名称:同一个数据库地址可以包括很多数据库,每个数据库都有自己的名字,每个数据库里面包含了很多张数据表;
  • 用户名和密码:由业务方来分配,他们会把你可操作的数据权限放权给该账户。
通过这样几项内容的设计,用户就可以连接到一个确定的数据库,并使用里面的数据表。
数据库连接好之后,还需要连接测试一下是否能连通,以防因为网络或者信息填写错误等原因导致没有连上,那就是表面看着连好了,实际上是无效的数据库。
增量|如何从0-1搭建ETL?
文章插图
2)数据抽取
连接好源数据库后,就可以开始抽取工作了。这时需要解决刚提出的第二个问题,如何抽取?
ETL的工作一般都是主动抽取,能推送的话那就太好了,不过源系统推送的可能性不大,因为这增加了源业务方的工作量,本来抽取数据都会多多少少影响业务的运行情况,现在还来增加工作量,这不是给人家添堵嘛。所以不推送也没关系,能让主动抽就可以。