ETL开发工程师的行业实战经验分享
出品|爱数据LoveData(ID:cntongji)
嘉宾|薛靖凯
采访|夏天
编辑|小数
嘉|宾|介|绍

薛靖凯
六年ETL工作经验
在多家银行的不同项目中担任ETL工程师
熟悉ETL流程,银行业务知识
Q1:老师可以分享一下您的工作经历吗?
我从毕业开始就做ETL相关的工作,也是跟数据相关的。刚开始做了三年管理会计项目,主要工作内容是内部资金转移定价、成本分摊、还有资产负债相关的。后来回到成都,主要做新网银行征信2.0报送升级,主要做的个人贷款这部分。最后又做了新网银行的客户集市,新网银行网上银行的业务,要对客户进行管理,也是与ETL相关。
目前在成都银行做数据仓库相关的工作,也是有需求就提数据,没有需求就进行基础运维,也会对接这边的银监和数据监管的数据提取。
Q2:银行的业务体系跟其他的业务体系相比,在ETL方面有什么特殊性吗?
银行主要是数据核对起来比较繁杂,因为核对需要涉及到科目、出账、明细账等等,尤其是信用卡部分,核对是最麻烦的。
在ETL的工具上没有特别说别的业务体系用不到,但是银行业务体系能用到的工具。但是它手工台账比较多,核对麻烦,会有手工补录的东西,遇到手工补录的就只能把excel发给你,你自己建表或者有一个补录平台,补进去之后才能获取,时效性就没有那么强。
Q3:ETL开发的在大数据的整个项目流程中处于哪个位置?主要的工作内容是什么?
ETL是属于中前期的阶段,但是它会贯穿到整个项目周期里,因为ETL会涉及到调优这样一直持续的工作。
【工作内容案例分享】
我做资金转移定价的项目比较多,所以就分享一下内部资金转移定价的流程。
简单来说就是银行存款和贷款这两块。内部资金转移定价就是给存款一个收益,比如说拉存款给利息,对银行来说这个好像总在亏钱,但其实它是有创造收益的,因为没有存款就肯定贷不出去钱。对于贷款来讲,总是发贷款,总是要收别人利息,就好像这个是没有成本一样,但其实不是,给存款一个收益,给贷款一个成本,其实就是做这个事情。
首先我们要有一个业务范围的限定,相当于把数据范围限定了,这样的话主要就涉及到资产负债表里面所有的科目,所有的数据都会接进来,我们就依照这个科目的数据去找贷款、存款、资金、信用卡等等,这些所有的数据都得和业务人员进行固定沟通,把各个系统的数据抽取过来,这是第一步。这一步涉及的工具是Oracle自带的工具,或者可以用现在比较火的Kettle、Informatica,这些都是进行数据抽取的。
我们主要是为了进行定价,定价首先数据得准确。我们就要用ETL对数据进行核对,先是大量的一个总量的核对,把总量核对正确之后,在进行其他数据的核对,比如说客户信息,或者机构信息这些维度的信息。定价不是简单的定到科目上,而是要定到明细账,比如说我去银行存钱,银行给我们每个人有一个利率的定价,所以说对于个人要特别明细。总结就是我们先把大的总量核对了,之后再把明细的每个人的定价进行核对。
在之后就是数据的处理。比如说脏数据,数据少、数据不对、可能我们沟通的阶段没有到位还要去跟其他人员继续沟通,再把数据重新获取过来。都是在合作的过程中慢慢的完成,所以说ETL贯穿了整个项目。
【整个ETL的流程中最重要的工作】
最重要的其实就是处理的过程,清洗的过程。因为要核对数据把脏数据去掉,看缺的数据从其他系统能不能获取补全。
然后就是满足定价的要求,因为定价会有些字段是必须要的,比如说存款期限,活期存款、定期存款,利率是多少,这些都是必要字段,一定要存在的,如果没有就要通过其他方式补进来。像这种必须的字段需要进行清洗、转换,这个阶段是比较重要的,贯穿整个ETL的流程。
【工作配合】
一般一个项目人员会有分工,首先要跟业务沟通项目怎么做,拿上面的例子,比如说定价,会形成一个文档,就是我要什么数据,每个客户都有定价的唯一键,怎么形成这个唯一键,比如说用客户号,或者什么东西形成,那我们就根据这个内部会形成一个业务文档,内部要看,外部也要看,因为要跟客户进行沟通,是一个业务需求文档。
业务定下来之后,如果有数仓,可以跟数仓直接沟通,没有的话要和原系统人员沟通。和原系统沟通的话就要和更系统,比如说核心业务、核心系统,信用卡就和信用卡中心,资金业务就和comstar,一般都是那个系统做。
外部沟通则需要沟通数据字典,比如表、表结构、字段以及码值说明。拿过来之后要落到我们的库的话,我们要自己编制一套表机构,落地成我们自己的文档。
Q4:ETL工作流程中涉及到哪些重点环节?每个环节对应的工具有什么?
抽取:抽取是ETL的第一步,工具的话现在在普遍使用的像Kettle、Informatica等等。
转换:转化的话一般都是用SQL实现,转换数据在工作流程中比较重要,设计到准确性。
调度:还有一些调度工具,比如写好存储过程,一般这个需要每日跑,或者每月、半年跑一次,这个时候就需要一个调度工具来实现,每个公司都会研发自己的调度工具。
如果需要报表展示的话会用到一些BI工具,像IBM Cognos Analytics、帆软、观远等等。
Q5:ETL工程师是否有等级划分?
其实这个没有明确的等级划分,因为没有一个全国性的证书之类的,它没有一个行业学习的标准,一般来说是按照年限来区分,如果从能力的角度的话,那我们可以简单分一下初中高。
初级:相对就很基础,比如说给你安排了一部分工作,你负责加载这部分,这样的就比较基础。
中级:你要对业务比较了解,也知道文档怎么去写,同时也要有一定的沟通能力。
高级:对于高级的ETL,你需要熟悉整个项目流程、业务流程,知道项目处于哪个阶段,每个阶段该做什么,同时要跟各个部门的人员有沟通,沟通能力要强。
【职业进阶】
其实对于ETL来说,上面提到,要了解项目阶段,有一个跟业务沟通的流程,如果说职业进阶可以做数据分析,数据产品等等这些方面。
Q6:ETL工程师的岗位价值或者说重要性体现在哪里?
ETL的工作是个基础,没有基础就没有后面的一些流程。就相当于跟做饭一样,ETL就是先把菜买回来,摘好、洗好、切好,这个工作看起来基础,但是对于吃饭来说是很重要的,这就相当于是数据的清洗。
以后就算你去做管理,这个经历会让你不管是对数据,对项目都有一个更清晰的认知,是很重要的一个阶段,也是很好的经历。
Q7:您认为ETL工程师的职业发展前景如何?
其实从岗位需求来看的话这个需求量是很大的,因为这个是属于数据相关的工作,现在是数据爆发的阶段,是一个趋势,所以对ETL这个工作,岗位需求肯定是没有大问题的。
对于那个进阶的话,其实可以从这个开始做,它的技术要求比较广,那如果以后想转到其他岗位,可以在了解那个岗位技术要求之后特意去培养某一方面,比如说你想做数据分析,那你可以培养一下数据的敏感度。
从这些方面考虑ETL还是挺有优势的。
Q8:是每一个项目基本上都涉及到清洗和转换吗?
基本上都会涉及清洗和转换,因为你是从别的系统输出加载到你的系统,这个时候你肯定是要做一番转换的,比如说你买菜回来,肯定是要清洗才可以进行后面的切切炒炒的这个操作。
Q9:ETL工程师在公司或者项目的架构中的数量是怎样的?
我感觉ETL工程师的占比会比较大一点,因为像产品他不一定会常常都在,他可能在这边安装好了,测试完成就可以先撤掉去进行其他项目,如果你这边有问题他在过来,他不需要常呆,但是对于数据来说这个不可能,我做一半然后去其他地方在做一般这个是不可能的,基于你对当前项目的数据熟悉度,就需要把项目做完整,所以数量的话会想多占比大一点。
Q10:针对想要从事ETL工程师的同学,老师可以分享一下您的建议吗?
首先对于基础能力的话可以根据工作的实际需求去网站上查一查,或者找一些课程学习一下。
那最主要的还是自我的认知和业务的沟通理解。不能只看一块,要看整体。要把整个项目流程,还有项目的着重点、关键点把握住,理解清楚。
其实这个就是说工作中不要纠结与自己的一部分工作,不属于你的就不看了,这样不行,你要关注于整个项目的业务需求,项目关键节点这些。

爱数据ETL课程咨询
